23 changed files with 108 additions and 55 deletions
@ -1,32 +0,0 @@ |
|||||||
import { createContext, useContext, useState } from 'react' |
|
||||||
import storage from '@/services/local-storage.service' |
|
||||||
|
|
||||||
type TAutoplayContext = { |
|
||||||
autoplay: boolean |
|
||||||
setAutoplay: (autoplay: boolean) => void |
|
||||||
} |
|
||||||
|
|
||||||
const AutoplayContext = createContext<TAutoplayContext | undefined>(undefined) |
|
||||||
|
|
||||||
export const useAutoplay = () => { |
|
||||||
const context = useContext(AutoplayContext) |
|
||||||
if (!context) { |
|
||||||
throw new Error('useAutoplay must be used within an AutoplayProvider') |
|
||||||
} |
|
||||||
return context |
|
||||||
} |
|
||||||
|
|
||||||
export function AutoplayProvider({ children }: { children: React.ReactNode }) { |
|
||||||
const [autoplay, setAutoplay] = useState<boolean>(storage.getAutoplay()) |
|
||||||
|
|
||||||
const updateAutoplay = (autoplay: boolean) => { |
|
||||||
storage.setAutoplay(autoplay) |
|
||||||
setAutoplay(autoplay) |
|
||||||
} |
|
||||||
|
|
||||||
return ( |
|
||||||
<AutoplayContext.Provider value={{ autoplay, setAutoplay: updateAutoplay }}> |
|
||||||
{children} |
|
||||||
</AutoplayContext.Provider> |
|
||||||
) |
|
||||||
} |
|
||||||
@ -0,0 +1,48 @@ |
|||||||
|
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> |
||||||
|
) |
||||||
|
} |
||||||
Loading…
Reference in new issue