wallet-connect-web-examples/advanced/wallets/react-wallet-v2/src/store/SettingsStore.ts
Gancho Radkov 2f2cc8f2d6
fix: implements dynamic session list (#413)
* fix: implements dynamic session list

* chore: updates log msg

---------

Co-authored-by: Gancho Radkov <ganchoradkov@gmail.com>
2024-01-15 15:09:47 +02:00

114 lines
2.4 KiB
TypeScript

import { Verify, SessionTypes } from '@walletconnect/types'
import { proxy } from 'valtio'
/**
* Types
*/
interface State {
testNets: boolean
account: number
eip155Address: string
cosmosAddress: string
solanaAddress: string
polkadotAddress: string
nearAddress: string
multiversxAddress: string
tronAddress: string
tezosAddress: string
kadenaAddress: string
relayerRegionURL: string
activeChainId: string
currentRequestVerifyContext?: Verify.Context
sessions: SessionTypes.Struct[]
}
/**
* State
*/
const state = proxy<State>({
testNets: typeof localStorage !== 'undefined' ? Boolean(localStorage.getItem('TEST_NETS')) : true,
account: 0,
activeChainId: '1',
eip155Address: '',
cosmosAddress: '',
solanaAddress: '',
polkadotAddress: '',
nearAddress: '',
multiversxAddress: '',
tronAddress: '',
tezosAddress: '',
kadenaAddress: '',
relayerRegionURL: '',
sessions: []
})
/**
* Store / Actions
*/
const SettingsStore = {
state,
setAccount(value: number) {
state.account = value
},
setEIP155Address(eip155Address: string) {
state.eip155Address = eip155Address
},
setCosmosAddress(cosmosAddresses: string) {
state.cosmosAddress = cosmosAddresses
},
setSolanaAddress(solanaAddress: string) {
state.solanaAddress = solanaAddress
},
setPolkadotAddress(polkadotAddress: string) {
state.polkadotAddress = polkadotAddress
},
setNearAddress(nearAddress: string) {
state.nearAddress = nearAddress
},
setKadenaAddress(kadenaAddress: string) {
state.kadenaAddress = kadenaAddress
},
setRelayerRegionURL(relayerRegionURL: string) {
state.relayerRegionURL = relayerRegionURL
},
setMultiversxAddress(multiversxAddress: string) {
state.multiversxAddress = multiversxAddress
},
setTronAddress(tronAddress: string) {
state.tronAddress = tronAddress
},
setTezosAddress(tezosAddress: string) {
state.tezosAddress = tezosAddress
},
setActiveChainId(value: string) {
state.activeChainId = value
},
setCurrentRequestVerifyContext(context: Verify.Context) {
state.currentRequestVerifyContext = context
},
setSessions(sessions: SessionTypes.Struct[]) {
state.sessions = sessions
},
toggleTestNets() {
state.testNets = !state.testNets
if (state.testNets) {
localStorage.setItem('TEST_NETS', 'YES')
} else {
localStorage.removeItem('TEST_NETS')
}
}
}
export default SettingsStore