Fix for enabled but not available wallets
This commit is contained in:
parent
6bd07284a5
commit
4fce6fa234
|
@ -1,4 +1,4 @@
|
||||||
import { useContext, createContext, useCallback, useState, useEffect, useRef, useMemo } from 'react'
|
import { useCallback, useState, useEffect, useRef, useMemo } from 'react'
|
||||||
import { useMe } from '@/components/me'
|
import { useMe } from '@/components/me'
|
||||||
import { openVault } from '@/components/use-vault'
|
import { openVault } from '@/components/use-vault'
|
||||||
import { useWalletLogger } from '@/components/wallet-logger'
|
import { useWalletLogger } from '@/components/wallet-logger'
|
||||||
|
@ -42,8 +42,9 @@ export function useWallet (name) {
|
||||||
|
|
||||||
const { logger, deleteLogs } = useWalletLogger(walletDef)
|
const { logger, deleteLogs } = useWalletLogger(walletDef)
|
||||||
const [config, saveConfig, clearConfig] = useConfig(walletDef)
|
const [config, saveConfig, clearConfig] = useConfig(walletDef)
|
||||||
|
const available = (!walletDef?.isAvailable || walletDef?.isAvailable())
|
||||||
|
|
||||||
const status = config?.enabled ? Status.Enabled : Status.Initialized
|
const status = config?.enabled && available ? Status.Enabled : Status.Initialized
|
||||||
const enabled = status === Status.Enabled
|
const enabled = status === Status.Enabled
|
||||||
const priority = config?.priority
|
const priority = config?.priority
|
||||||
const hasConfig = walletDef?.fields?.length > 0
|
const hasConfig = walletDef?.fields?.length > 0
|
||||||
|
@ -113,7 +114,6 @@ export function useWallet (name) {
|
||||||
|
|
||||||
const wallet = useMemo(() => {
|
const wallet = useMemo(() => {
|
||||||
if (!walletDef) return {}
|
if (!walletDef) return {}
|
||||||
const available = (!walletDef.isAvailable || walletDef.isAvailable())
|
|
||||||
const wallet = {
|
const wallet = {
|
||||||
...walletDef
|
...walletDef
|
||||||
}
|
}
|
||||||
|
@ -129,7 +129,8 @@ export function useWallet (name) {
|
||||||
wallet.setPriority = setPriority
|
wallet.setPriority = setPriority
|
||||||
wallet.hasConfig = hasConfig
|
wallet.hasConfig = hasConfig
|
||||||
wallet.status = status
|
wallet.status = status
|
||||||
wallet.enabled = enabled && available
|
wallet.enabled = enabled
|
||||||
|
wallet.available = available
|
||||||
wallet.priority = priority
|
wallet.priority = priority
|
||||||
wallet.logger = logger
|
wallet.logger = logger
|
||||||
wallet.sendPayment = sendPayment
|
wallet.sendPayment = sendPayment
|
||||||
|
@ -436,12 +437,14 @@ export function walletPrioritySort (w1, w2) {
|
||||||
return w1.card.title < w2.card.title ? -1 : 1
|
return w1.card.title < w2.card.title ? -1 : 1
|
||||||
}
|
}
|
||||||
|
|
||||||
const WalletContext = createContext({
|
|
||||||
wallets: []
|
|
||||||
})
|
|
||||||
|
|
||||||
export function useWallets () {
|
export function useWallets () {
|
||||||
const { wallets } = useContext(WalletContext)
|
const wallets = walletDefs.map(def => useWallet(def.name))
|
||||||
|
|
||||||
|
const [walletsReady, setWalletsReady] = useState([])
|
||||||
|
useEffect(() => {
|
||||||
|
setWalletsReady(wallets.filter(w => w))
|
||||||
|
}, wallets)
|
||||||
|
|
||||||
const resetClient = useCallback(async (wallet) => {
|
const resetClient = useCallback(async (wallet) => {
|
||||||
for (const w of wallets) {
|
for (const w of wallets) {
|
||||||
if (w.canSend) {
|
if (w.canSend) {
|
||||||
|
@ -450,7 +453,7 @@ export function useWallets () {
|
||||||
await w.deleteLogs({ clientOnly: true })
|
await w.deleteLogs({ clientOnly: true })
|
||||||
}
|
}
|
||||||
}, wallets)
|
}, wallets)
|
||||||
return { wallets, resetClient }
|
return { wallets: walletsReady, resetClient }
|
||||||
}
|
}
|
||||||
|
|
||||||
export function WalletProvider ({ children }) {
|
export function WalletProvider ({ children }) {
|
||||||
|
@ -459,13 +462,7 @@ export function WalletProvider ({ children }) {
|
||||||
const { me } = useMe()
|
const { me } = useMe()
|
||||||
const migrationRan = useRef(false)
|
const migrationRan = useRef(false)
|
||||||
const migratableKeys = !migrationRan.current && !SSR ? Object.keys(window.localStorage).filter(k => k.startsWith('wallet:')) : undefined
|
const migratableKeys = !migrationRan.current && !SSR ? Object.keys(window.localStorage).filter(k => k.startsWith('wallet:')) : undefined
|
||||||
|
const { wallets } = useWallets()
|
||||||
const wallets = walletDefs.map(def => useWallet(def.name))
|
|
||||||
|
|
||||||
const [walletsReady, setWalletsReady] = useState([])
|
|
||||||
useEffect(() => {
|
|
||||||
setWalletsReady(wallets.filter(w => w))
|
|
||||||
}, wallets)
|
|
||||||
|
|
||||||
// migration
|
// migration
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
@ -494,9 +491,6 @@ export function WalletProvider ({ children }) {
|
||||||
}
|
}
|
||||||
})()
|
})()
|
||||||
}, [me, wallets])
|
}, [me, wallets])
|
||||||
return (
|
|
||||||
<WalletContext.Provider value={{ wallets: walletsReady }}>
|
return children
|
||||||
{children}
|
|
||||||
</WalletContext.Provider>
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue