diff options
Diffstat (limited to 'vnext/src/App.js')
-rw-r--r-- | vnext/src/App.js | 84 |
1 files changed, 32 insertions, 52 deletions
diff --git a/vnext/src/App.js b/vnext/src/App.js index e723fe9c..c7849418 100644 --- a/vnext/src/App.js +++ b/vnext/src/App.js @@ -30,7 +30,7 @@ import { Toaster } from 'react-hot-toast' export default function App({ footer }) { let contentRef = useRef(null) - const [cookie, setCookie] = useCookies(['hash']) + const [, setCookie] = useCookies(['hash']) const [allTrends, setAllTrends] = useState([]) @@ -54,32 +54,13 @@ export default function App({ footer }) { }).catch(console.error) }, [setVisitor]) - const [hash, setHash] = useState(cookie.hash) - const [eventSource, setEventSource] = /** @param EventSource? */ useState({}) - /** - * @param {import("./api").SecureUser} visitor - */ - let auth = useCallback((visitor) => { - setVisitor(prevState => { - if (visitor.hash != prevState.hash) { - setHash(visitor.hash) - } - return visitor - }) - }, [setVisitor]) - useEffect(() => { let es - const anonymousUser = { - uid: 0 - } - if (hash) { - me().then(visitor => auth(visitor)) - .catch(() => setVisitor(anonymousUser)) + if (visitor) { if ('EventSource' in window) { - const eventParams = new URLSearchParams({ hash: hash }) + const eventParams = new URLSearchParams({ hash: visitor.hash }) let url = new URL(`https://juick.com/api/events?${eventParams.toString()}`) console.log(url.toString()) es = new EventSource(url.toString()) @@ -94,8 +75,6 @@ export default function App({ footer }) { es.addEventListener('msg', updateStatus) setEventSource(es) } - } else { - setVisitor(anonymousUser) } return (() => { if (es && es.removeEventListener) { @@ -103,7 +82,7 @@ export default function App({ footer }) { es.removeEventListener('msg', updateStatus) } }) - }, [auth, hash, setVisitor, updateStatus]) + }, [visitor, updateStatus]) useEffect(() => { const getTrends = async () => { @@ -121,32 +100,33 @@ export default function App({ footer }) { <div id="sidebar_wrapper"> { <nav id="global"> - {visitor.uid > 0 ? - <> - <div id="ctitle"> - <Avatar user={visitor} /> - </div> - <Link to={{ pathname: '/post' }}> - <Icon name="ei-pencil" size="s" /> - <span className="desktop">Post</span> - </Link> - <Link to="/?show=my"> - <Icon name="ei-clock" size="s" /> - <span className="desktop">My feed</span> - </Link> - <Link to="/pm"> - <Icon name="ei-envelope" size="s" /> - <span className="desktop">Messages</span> - </Link> - <Link to="/settings" rel="nofollow"> - <Icon name="ei-gear" size="s" /> - <span className="desktop">Settings</span> + { + visitor ? + <> + <div id="ctitle"> + <Avatar user={visitor} /> + </div> + <Link to={{ pathname: '/post' }}> + <Icon name="ei-pencil" size="s" /> + <span className="desktop">Post</span> + </Link> + <Link to="/?show=my"> + <Icon name="ei-clock" size="s" /> + <span className="desktop">My feed</span> + </Link> + <Link to="/pm"> + <Icon name="ei-envelope" size="s" /> + <span className="desktop">Messages</span> + </Link> + <Link to="/settings" rel="nofollow"> + <Icon name="ei-gear" size="s" /> + <span className="desktop">Settings</span> + </Link> + </> : + <Link to={{ pathname: '/login' }}> + <Icon name="ei-user" size="s" /> + <span className="desktop">Login</span> </Link> - </> : - <Link to={{ pathname: '/login' }}> - <Icon name="ei-user" size="s" /> - <span className="desktop">Login</span> - </Link> } <Link to={{ pathname: '/discover' }} rel="nofollow"> <Icon name="ei-search" size="s" /> @@ -187,8 +167,8 @@ export default function App({ footer }) { <Route exact path="/" element={<Discussions />} /> <Route exact path="/home" element={<Home />} /> <Route exact path="/discover" element={<Discover />} /> - <Route exact path="/settings" element={<Settings onChange={auth} />} /> - <Route exact path="/login" element={<Login onAuth={auth} />} /> + <Route exact path="/settings" element={<Settings onChange={updateStatus} />} /> + <Route exact path="/login" element={<Login onAuth={updateStatus} />} /> <Route exact path="/post" element={<Post />} /> <Route exact path="/pm" element={<Contacts />} /> <Route exact path="/pm/:user" element={<Chat connection={eventSource} />} /> |