You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

48 lines
1.4 KiB

import storage from '@/services/local-storage.service'
import { createContext, useContext, useState } from 'react'
type TContentPolicyContext = {
autoplay: boolean
setAutoplay: (autoplay: boolean) => void
defaultShowNsfw: boolean
setDefaultShowNsfw: (showNsfw: boolean) => void
}
const ContentPolicyContext = createContext<TContentPolicyContext | undefined>(undefined)
export const useContentPolicy = () => {
const context = useContext(ContentPolicyContext)
if (!context) {
throw new Error('useContentPolicy must be used within an ContentPolicyProvider')
}
return context
}
export function ContentPolicyProvider({ children }: { children: React.ReactNode }) {
const [autoplay, setAutoplay] = useState<boolean>(storage.getAutoplay())
const [defaultShowNsfw, setDefaultShowNsfw] = useState<boolean>(storage.getDefaultShowNsfw())
const updateAutoplay = (autoplay: boolean) => {
storage.setAutoplay(autoplay)
setAutoplay(autoplay)
}
const updateDefaultShowNsfw = (defaultShowNsfw: boolean) => {
storage.setDefaultShowNsfw(defaultShowNsfw)
setDefaultShowNsfw(defaultShowNsfw)
}
return (
<ContentPolicyContext.Provider
value={{
autoplay,
setAutoplay: updateAutoplay,
defaultShowNsfw,
setDefaultShowNsfw: updateDefaultShowNsfw
}}
>
{children}
</ContentPolicyContext.Provider>
)
}