From 4ad464cccd28466d7ba6c03a01093dff60588f06 Mon Sep 17 00:00:00 2001 From: an-lee Date: Fri, 7 Mar 2025 19:31:09 +0800 Subject: [PATCH] ensure authorized before load community --- enjoy/src/renderer/pages/community.tsx | 32 +++++++++++--------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/enjoy/src/renderer/pages/community.tsx b/enjoy/src/renderer/pages/community.tsx index 6e276872..38902b69 100644 --- a/enjoy/src/renderer/pages/community.tsx +++ b/enjoy/src/renderer/pages/community.tsx @@ -1,22 +1,22 @@ -import { useContext, useEffect, useRef } from "react"; +import { useContext, useEffect, useRef, useState } from "react"; import { AppSettingsProviderContext } from "@renderer/context"; import debounce from "lodash/debounce"; import { DISCUSS_URL, WEB_API_URL } from "@/constants"; import { Button } from "@renderer/components/ui"; import { t } from "i18next"; -import { LoaderSpin } from "../components"; +import { LoaderSpin } from "@renderer/components"; export default () => { const containerRef = useRef(null); const { EnjoyApp, user, webApi, logout } = useContext( AppSettingsProviderContext ); + const [authorized, setAuthorized] = useState(false); const loadCommunity = async () => { let url = `${DISCUSS_URL}/login`; let ssoUrl = `${WEB_API_URL}/discourse/sso`; - const accessToken = user?.accessToken; - if (!accessToken) return; + if (!authorized || !user?.accessToken) return; try { const { discussUrl, discussSsoUrl } = await webApi.config("discuss"); @@ -34,7 +34,7 @@ export default () => { containerRef.current.getBoundingClientRect(); EnjoyApp.view.loadCommunity( { x, y, width, height }, - { navigatable: false, accessToken, url, ssoUrl } + { navigatable: false, accessToken: user.accessToken, url, ssoUrl } ); }; @@ -46,6 +46,7 @@ export default () => { useEffect(() => { if (!containerRef.current) return; + if (!authorized) return; loadCommunity(); const observer = new ResizeObserver(() => { @@ -56,9 +57,15 @@ export default () => { return () => { observer.disconnect(); }; - }, []); + }, [authorized, containerRef.current]); useEffect(() => { + if (!user?.accessToken) return; + + webApi.me().then(() => { + setAuthorized(true); + }); + return () => { EnjoyApp.view.remove(); }; @@ -66,19 +73,6 @@ export default () => { return (
- {!user?.accessToken && ( -
- {t("authorizationExpired")} - -
- )}
);