aboutsummaryrefslogtreecommitdiff
path: root/vnext/src/App.js
diff options
context:
space:
mode:
Diffstat (limited to 'vnext/src/App.js')
-rw-r--r--vnext/src/App.js84
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} />} />