This commit is contained in:
2025-03-20 09:56:35 -05:00
parent d1e9c7e6bb
commit a346612d48
8 changed files with 639 additions and 569 deletions

View File

@@ -1,9 +1,7 @@
'use client';
import React, { createContext, useContext, useState, useEffect } from 'react';
import React, { createContext, useContext, useState } from 'react';
import Image from 'next/image';
import type { ReactNode } from 'react';
import type { Session } from '@supabase/supabase-js';
import { createClient } from '@/utils/supabase/client';
interface TVModeContextProps {
tvMode: boolean;
@@ -34,62 +32,31 @@ export const useTVMode = () => {
return context;
};
export const TVToggle = () => {
type TVToggleProps = {
width?: number;
height?: number;
};
export const TVToggle = ({
width = 25,
height = 25,
}: TVToggleProps) => {
const { tvMode, toggleTVMode } = useTVMode();
const supabase = createClient();
const [session, setSession] = useState<Session | null>(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
// Function to fetch the session
async function fetchSession() {
try {
const {
data: { session },
} = await supabase.auth.getSession();
setSession(session);
} catch (error) {
console.error('Error fetching session:', error);
} finally {
setLoading(false);
}
}
// Call the function
fetchSession().catch((error) => {
console.error('Error fetching session:', error);
});
// Set up auth state change listener
const {
data: { subscription },
} = supabase.auth.onAuthStateChange((_event, session) => {
setSession(session);
});
// Clean up the subscription when component unmounts
return () => {
subscription.unsubscribe();
};
}, [supabase]);
if (loading || !session) return <div />;
return (
<button onClick={toggleTVMode} className='mr-4 mt-1'>
{tvMode ? (
<Image
src='/images/exit_fullscreen.svg'
alt='Exit TV Mode'
width={25}
height={25}
width={width}
height={height}
/>
) : (
<Image
src='/images/fullscreen.svg'
alt='Enter TV Mode'
width={25}
height={25}
width={width}
height={height}
/>
)}
</button>