Skip to content

Commit

Permalink
refactor(PlayerProviders): lastUsedProvider local storage
Browse files Browse the repository at this point in the history
  • Loading branch information
busybox11 committed Nov 18, 2024
1 parent ffab780 commit 936bf64
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 5 deletions.
18 changes: 16 additions & 2 deletions app/components/contexts/PlayerProviders.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,27 @@ import type { ReactNode } from "@tanstack/react-router";

import providers from "@/providers";
import { IProviderClient } from "@/types/providers/client";
import { useLocalStorage } from "usehooks-ts";

const PlayerProvidersContext = createContext<{
[key: string]: IProviderClient;
}>({});

type LastUsedProvider = {
id: string;
date: number;
} | null;

export function PlayerProvidersProvider({
children,
}: Readonly<{
children: ReactNode;
}>) {
const [_lastUsed, setLastUsed, _removeLastUsed] =
useLocalStorage<LastUsedProvider>("lastUsedProvider", null);

const handleAuth = useCallback((provider: string) => {
console.log("auth", provider);
setLastUsed({ id: provider, date: Date.now() });
}, []);

const value = useMemo(() => {
Expand All @@ -38,5 +47,10 @@ export function PlayerProvidersProvider({
}

export function usePlayerProviders() {
return useContext(PlayerProvidersContext);
const [lastUsed] = useLocalStorage<LastUsedProvider>("lastUsed", null);

return {
lastUsedProvider: lastUsed,
providers: useContext(PlayerProvidersContext),
};
}
3 changes: 1 addition & 2 deletions app/routes/auth/callback.$provider.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { createFileRoute, useNavigate } from "@tanstack/react-router";

import providers from "@/providers";
import { useEffect } from "react";
import { usePlayerProviders } from "@/components/contexts/PlayerProviders";

Expand All @@ -12,7 +11,7 @@ function RouteComponent() {
const { provider } = Route.useParams();
const navigate = useNavigate();

const providers = usePlayerProviders();
const { providers } = usePlayerProviders();

if (!providers[provider]) {
return <h1>Provider not found</h1>;
Expand Down
2 changes: 1 addition & 1 deletion app/routes/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ export const Route = createFileRoute("/")({
});

function Home() {
const providers = usePlayerProviders();
const { providers } = usePlayerProviders();

return (
<main className="flex flex-col items-center justify-center h-screen gap-12">
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-icons": "^5.3.0",
"usehooks-ts": "^3.1.0",
"vinxi": "^0.4.3",
"zod": "^3.23.8"
},
Expand Down
19 changes: 19 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 936bf64

Please sign in to comment.