feat: rizful
This commit is contained in:
parent
520649e862
commit
6357fd5b44
32 changed files with 812 additions and 123 deletions
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue