import storage from '@/services/local-storage.service' import { TNotificationStyle } from '@/types' import { createContext, useContext, useState } from 'react' type TUserPreferencesContext = { notificationListStyle: TNotificationStyle updateNotificationListStyle: (style: TNotificationStyle) => void muteMedia: boolean updateMuteMedia: (mute: boolean) => void sidebarCollapse: boolean updateSidebarCollapse: (collapse: boolean) => void } const UserPreferencesContext = createContext(undefined) export const useUserPreferences = () => { const context = useContext(UserPreferencesContext) if (!context) { throw new Error('useUserPreferences must be used within a UserPreferencesProvider') } return context } export function UserPreferencesProvider({ children }: { children: React.ReactNode }) { const [notificationListStyle, setNotificationListStyle] = useState( storage.getNotificationListStyle() ) const [muteMedia, setMuteMedia] = useState(true) const [sidebarCollapse, setSidebarCollapse] = useState(storage.getSidebarCollapse()) const updateNotificationListStyle = (style: TNotificationStyle) => { setNotificationListStyle(style) storage.setNotificationListStyle(style) } const updateSidebarCollapse = (collapse: boolean) => { setSidebarCollapse(collapse) storage.setSidebarCollapse(collapse) } return ( {children} ) }