diff --git a/frontend/libs/api/src/index.ts b/frontend/libs/api/src/index.ts index baae8a30a9..cd50eea609 100644 --- a/frontend/libs/api/src/index.ts +++ b/frontend/libs/api/src/index.ts @@ -1,4 +1,5 @@ export * from "./lib/enums/index.js"; +export * from "./lib/models/Users.js"; export * from "./lib/AnalyticsApi.js"; export * from "./lib/BillingApi.js"; export * from "./lib/EngineApi.js"; diff --git a/frontend/libs/components/settings-modal/src/lib/panes/AccountSettings/AccountSettingsPane.tsx b/frontend/libs/components/settings-modal/src/lib/panes/AccountSettings/AccountSettingsPane.tsx index 0d7ce097e8..b561a2e6e7 100644 --- a/frontend/libs/components/settings-modal/src/lib/panes/AccountSettings/AccountSettingsPane.tsx +++ b/frontend/libs/components/settings-modal/src/lib/panes/AccountSettings/AccountSettingsPane.tsx @@ -3,6 +3,7 @@ import { Button } from "@storyteller/ui-button"; import { Input } from "@storyteller/ui-input"; import { SoraAccountButton } from "./SoraAccountButton"; import { SoraAccountBlock } from "./SoraAccountBlock"; +import { ArtcraftAccountBlock } from "./ArtcraftAccountBlock"; interface AccountInfo { username: string; @@ -48,8 +49,11 @@ export const AccountSettingsPane = () => { */} + + + {/*
diff --git a/frontend/libs/components/settings-modal/src/lib/panes/AccountSettings/ArtcraftAccountBlock.tsx b/frontend/libs/components/settings-modal/src/lib/panes/AccountSettings/ArtcraftAccountBlock.tsx new file mode 100644 index 0000000000..bbf37db101 --- /dev/null +++ b/frontend/libs/components/settings-modal/src/lib/panes/AccountSettings/ArtcraftAccountBlock.tsx @@ -0,0 +1,77 @@ +import { useState, useEffect } from "react"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faSpinnerThird } from "@fortawesome/pro-solid-svg-icons"; +import { Button } from "@storyteller/ui-button"; + +import { UsersApi } from "@storyteller/api"; +import { UserInfo } from "@storyteller/api"; + +const usersApi = new UsersApi(); + +export const ArtcraftAccountBlock = () => { + const [artcraftSession, setArtcraftSession] = useState(undefined); + const [isLoggedIn, setIsLoggedIn] = useState(false); + const [isCheckingArtcraftSession, setIsCheckingArtcraftSession] = useState(false); + + useEffect(() => { + const fetchSession = async () => { + setIsCheckingArtcraftSession(true); + try { + const result = await usersApi.GetSession(); + console.log(">>> result", result); + setArtcraftSession(result?.data?.user); + setIsLoggedIn(result?.data?.loggedIn || false); + } catch (e) { + console.error("Error fetching Artcraft session", e); + setArtcraftSession(undefined); + setIsLoggedIn(false); + } finally { + setIsCheckingArtcraftSession(false); + } + }; + fetchSession(); + }, []); + + const handleArtcraftButton = async () => { + if (isCheckingArtcraftSession) return; + if (isLoggedIn) { + setIsCheckingArtcraftSession(true); + await usersApi.Logout(); + setArtcraftSession(undefined); + setIsLoggedIn(false); + setIsCheckingArtcraftSession(false); + } else { + console.log("TODO"); + } + }; + + return ( +
+ ArtCraft Account: +
{artcraftSession?.display_name}
+ +
+ ) +} \ No newline at end of file