diff --git a/src/pages/ChatPage.tsx b/src/pages/ChatPage.tsx index b7777d8..0f5071b 100644 --- a/src/pages/ChatPage.tsx +++ b/src/pages/ChatPage.tsx @@ -42,6 +42,14 @@ export default function ChatPage() { if (!selectedGuildId && guilds.length) setSelectedGuildId(guilds[0].nodeId) }, [guilds, selectedGuildId]) + // Guild access tokens have a short TTL and are persisted in localStorage. + // On (re)load they may be expired, so re-issue fresh ones from Center + // before any guild API call. refreshGuilds also refreshes the center token. + useEffect(() => { + refreshGuilds().catch(() => {}) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) + const guild = useMemo(() => guilds.find((g) => g.nodeId === selectedGuildId) ?? null, [guilds, selectedGuildId]) const guildToken = useMemo( () => (session?.guildAccessTokens ?? []).find((x) => x.guildNodeId === selectedGuildId)?.token ?? '', @@ -196,7 +204,7 @@ export default function ChatPage() { void loadChannels() setMessages([]) setSelectedChannelId('') - }, [selectedGuildId, guildDbId]) + }, [selectedGuildId, guildDbId, guildToken]) useEffect(() => { void pullMessages()