feat: rizful

This commit is contained in:
codytseng 2025-09-29 23:36:49 +08:00
parent 520649e862
commit 6357fd5b44
32 changed files with 812 additions and 123 deletions

View file

@ -1,7 +1,13 @@
import lightningService from '@/services/lightning.service'
import storage from '@/services/local-storage.service'
import { createContext, useContext, useState } from 'react'
import { onConnected, onDisconnected } from '@getalby/bitcoin-connect-react'
import { GetInfoResponse, WebLNProvider } from '@webbtc/webln-types'
import { createContext, useContext, useEffect, useState } from 'react'
type TZapContext = {
isWalletConnected: boolean
provider: WebLNProvider | null
walletInfo: GetInfoResponse | null
defaultZapSats: number
updateDefaultSats: (sats: number) => void
defaultZapComment: string
@ -24,6 +30,29 @@ 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 [isWalletConnected, setIsWalletConnected] = useState(false)
const [provider, setProvider] = useState<WebLNProvider | null>(null)
const [walletInfo, setWalletInfo] = useState<GetInfoResponse | null>(null)
useEffect(() => {
const unSubOnConnected = onConnected((provider) => {
setIsWalletConnected(true)
setWalletInfo(null)
setProvider(provider)
lightningService.provider = provider
provider.getInfo().then(setWalletInfo)
})
const unSubOnDisconnected = onDisconnected(() => {
setIsWalletConnected(false)
setProvider(null)
lightningService.provider = null
})
return () => {
unSubOnConnected()
unSubOnDisconnected()
}
}, [])
const updateDefaultSats = (sats: number) => {
storage.setDefaultZapSats(sats)
@ -43,6 +72,9 @@ export function ZapProvider({ children }: { children: React.ReactNode }) {
return (
<ZapContext.Provider
value={{
isWalletConnected,
provider,
walletInfo,
defaultZapSats,
updateDefaultSats,
defaultZapComment,