snort/src/pages/Layout.js

45 lines
1.3 KiB
JavaScript
Raw Normal View History

2022-12-18 14:51:47 +00:00
import { useContext, useEffect } from "react"
2022-12-27 23:46:13 +00:00
import { useDispatch, useSelector } from "react-redux";
2022-12-18 14:51:47 +00:00
import { useNavigate } from "react-router-dom";
import { NostrContext } from ".."
2022-12-27 23:46:13 +00:00
import ProfileImage from "../element/ProfileImage";
import { init } from "../state/Login";
2022-12-28 23:28:28 +00:00
import useLoginFeed from "./feed/LoginFeed";
import useUsersCache from "./feed/UsersFeed";
2022-12-18 14:51:47 +00:00
export default function Layout(props) {
2022-12-27 23:46:13 +00:00
const dispatch = useDispatch();
2022-12-18 14:51:47 +00:00
const system = useContext(NostrContext);
const navigate = useNavigate();
2022-12-27 23:46:13 +00:00
const key = useSelector(s => s.login.publicKey);
2022-12-18 14:51:47 +00:00
const relays = useSelector(s => s.login.relays);
2022-12-28 23:28:28 +00:00
useUsersCache();
useLoginFeed();
2022-12-18 14:51:47 +00:00
useEffect(() => {
if (system && relays) {
2022-12-28 23:28:28 +00:00
for (let [k, v] of Object.entries(relays)) {
system.ConnectToRelay(k, v);
2022-12-18 14:51:47 +00:00
}
}
}, [relays, system]);
2022-12-27 23:46:13 +00:00
useEffect(() => {
dispatch(init());
}, []);
2022-12-18 14:51:47 +00:00
return (
<div className="page">
<div className="header">
2022-12-27 23:46:13 +00:00
<div onClick={() => navigate("/")}>n o s t r</div>
2022-12-18 14:51:47 +00:00
<div>
2022-12-27 23:46:13 +00:00
{key ? <ProfileImage pubKey={key} /> :
<div className="btn" onClick={() => navigate("/login")}>Login</div>
}
2022-12-18 14:51:47 +00:00
</div>
</div>
{props.children}
</div>
)
}