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.
 
 
 

57 lines
1.5 KiB

import storage from '@/services/local-storage.service'
import { createContext, useContext, useState } from 'react'
type TZapContext = {
defaultZapSats: number
updateDefaultSats: (sats: number) => void
defaultZapComment: string
updateDefaultComment: (comment: string) => void
quickZap: boolean
updateQuickZap: (quickZap: boolean) => void
}
const ZapContext = createContext<TZapContext | undefined>(undefined)
export const useZap = () => {
const context = useContext(ZapContext)
if (!context) {
throw new Error('useZap must be used within a ZapProvider')
}
return context
}
export function ZapProvider({ children }: { children: React.ReactNode }) {
const [defaultZapSats, setDefaultZapSats] = useState<number>(storage.getDefaultZapSats())
const [defaultZapComment, setDefaultZapComment] = useState<string>(storage.getDefaultZapComment())
const [quickZap, setQuickZap] = useState<boolean>(storage.getQuickZap())
const updateDefaultSats = (sats: number) => {
storage.setDefaultZapSats(sats)
setDefaultZapSats(sats)
}
const updateDefaultComment = (comment: string) => {
storage.setDefaultZapComment(comment)
setDefaultZapComment(comment)
}
const updateQuickZap = (quickZap: boolean) => {
storage.setQuickZap(quickZap)
setQuickZap(quickZap)
}
return (
<ZapContext.Provider
value={{
defaultZapSats,
updateDefaultSats,
defaultZapComment,
updateDefaultComment,
quickZap,
updateQuickZap
}}
>
{children}
</ZapContext.Provider>
)
}