diff --git a/components/Login/helpers/server-library.tsx b/components/Login/helpers/server-library.tsx index e2dd858a..77f2d9e1 100644 --- a/components/Login/helpers/server-library.tsx +++ b/components/Login/helpers/server-library.tsx @@ -17,7 +17,7 @@ import { BaseItemDto } from "@jellyfin/sdk/lib/generated-client/models"; export default function ServerLibrary(): React.JSX.Element { const { libraryId, setLibraryId } = useAuthenticationContext(); - const { apiClient, setAccessToken, setLibrary } = useApiClientContext(); + const { apiClient, setUser, setLibrary } = useApiClientContext(); const useMusicLibraries = (api: Api) => useQuery({ queryKey: [QueryKeys.Libraries, api], @@ -87,7 +87,7 @@ export default function ServerLibrary(): React.JSX.Element { Let's Go! - diff --git a/components/jellyfin-api-provider.tsx b/components/jellyfin-api-provider.tsx index 50d2ff3d..ae89446f 100644 --- a/components/jellyfin-api-provider.tsx +++ b/components/jellyfin-api-provider.tsx @@ -7,16 +7,15 @@ import { storage } from '../constants/storage'; import { MMKVStorageKeys } from '../enums/mmkv-storage-keys'; import { JellifyServer } from '../types/JellifyServer'; import { JellifyLibrary } from '../types/JellifyLibrary'; +import { JellifyUser } from '../types/JellifyUser'; interface JellyfinApiClientContext { apiClient: Api | undefined; apiPending: boolean; server: JellifyServer | undefined; setServer: React.Dispatch>; - username: string | undefined; - setUsername: React.Dispatch>; - accessToken: string | undefined; - setAccessToken: React.Dispatch>; + user: JellifyUser | undefined; + setUser: React.Dispatch>; library: JellifyLibrary | undefined; setLibrary: React.Dispatch>; signOut: () => void @@ -24,20 +23,19 @@ interface JellyfinApiClientContext { const JellyfinApiClientContextInitializer = () => { - let serverJson = storage.getString(MMKVStorageKeys.Server); - let libraryJson = storage.getString(MMKVStorageKeys.Library); + const userJson = storage.getString(MMKVStorageKeys.User) + const serverJson = storage.getString(MMKVStorageKeys.Server); + const libraryJson = storage.getString(MMKVStorageKeys.Library); - const [username, setUsername] = useState(storage.getString(MMKVStorageKeys.Username)); - const [accessToken, setAccessToken] = useState(storage.getString(MMKVStorageKeys.AccessToken)); + const [user, setUser] = useState(userJson ? (JSON.parse(userJson) as JellifyUser) : undefined); const [server, setServer] = useState(serverJson ? (JSON.parse(serverJson) as JellifyServer) : undefined); const [library, setLibrary] = useState(libraryJson ? (JSON.parse(libraryJson) as JellifyLibrary) : undefined); const [apiClient, setApiClient] = useState(undefined); - const { data: api, isPending: apiPending, refetch: refetchApi } = useApi(server?.url ?? undefined, username, undefined, accessToken); + const { data: api, isPending: apiPending, refetch: refetchApi } = useApi(server?.url ?? undefined, user?.name, undefined, user?.accessToken); const signOut = () => { console.debug("Signing out of Jellify"); - setUsername(undefined); - setAccessToken(undefined); + setUser(undefined); setServer(undefined); setLibrary(undefined); } @@ -55,7 +53,7 @@ const JellyfinApiClientContextInitializer = () => { refetchApi() }, [ server, - accessToken + user ]) useEffect(() => { @@ -72,16 +70,16 @@ const JellyfinApiClientContextInitializer = () => { ]) useEffect(() => { - if (accessToken) { - console.debug("Storing new access token") - storage.set(MMKVStorageKeys.AccessToken, accessToken); + if (user) { + console.debug("Storing new user profile") + storage.set(MMKVStorageKeys.User, JSON.stringify(user)); } else { console.debug("Deleting access token from storage"); - storage.delete(MMKVStorageKeys.AccessToken); + storage.delete(MMKVStorageKeys.User); } }, [ - accessToken + user ]) useEffect(() => { @@ -100,10 +98,8 @@ const JellyfinApiClientContextInitializer = () => { apiPending, server, setServer, - username, - setUsername, - accessToken, - setAccessToken, + user, + setUser, library, setLibrary, signOut @@ -116,10 +112,8 @@ export const JellyfinApiClientContext = apiPending: true, server: undefined, setServer: () => {}, - username: undefined, - setUsername: () => {}, - accessToken: undefined, - setAccessToken: () => {}, + user: undefined, + setUser: () => {}, library: undefined, setLibrary: () => {}, signOut: () => {} @@ -133,10 +127,8 @@ export const JellyfinApiClientProvider: ({ children }: { apiPending, server, setServer, - username, - setUsername, - accessToken, - setAccessToken, + user, + setUser, library, setLibrary, signOut @@ -150,10 +142,8 @@ export const JellyfinApiClientProvider: ({ children }: { apiPending, server, setServer, - username, - setUsername, - accessToken, - setAccessToken, + user, + setUser, library, setLibrary, signOut diff --git a/enums/mmkv-storage-keys.ts b/enums/mmkv-storage-keys.ts index f75f0082..6a215eef 100644 --- a/enums/mmkv-storage-keys.ts +++ b/enums/mmkv-storage-keys.ts @@ -1,7 +1,6 @@ export enum MMKVStorageKeys { PlayQueue = "PLAY_QUEUE", Server = "SERVER", - AccessToken = "AccessToken", - Username = "Username", - Library = "Library" + User = "USER", + Library = "LIBRARY" } \ No newline at end of file