@dappworks/kit 0.5.46 → 0.5.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -246,6 +246,7 @@ var StorageListState = class _StorageListState {
|
|
|
246
246
|
}
|
|
247
247
|
}
|
|
248
248
|
load() {
|
|
249
|
+
if (typeof window === "undefined") return null;
|
|
249
250
|
try {
|
|
250
251
|
const value = localStorage.getItem(this.key);
|
|
251
252
|
if (value) {
|
|
@@ -266,12 +267,14 @@ var StorageListState = class _StorageListState {
|
|
|
266
267
|
this.save();
|
|
267
268
|
}
|
|
268
269
|
save() {
|
|
270
|
+
if (typeof window === "undefined") return;
|
|
269
271
|
try {
|
|
270
272
|
localStorage.setItem(this.key, JSON.stringify(this.list));
|
|
271
273
|
} catch (error) {
|
|
272
274
|
}
|
|
273
275
|
}
|
|
274
276
|
clear() {
|
|
277
|
+
if (typeof window === "undefined") return;
|
|
275
278
|
try {
|
|
276
279
|
localStorage.removeItem(this.key);
|
|
277
280
|
this.list = [];
|
|
@@ -1259,5 +1262,5 @@ var AppProvider = observer(({ children }) => {
|
|
|
1259
1262
|
});
|
|
1260
1263
|
|
|
1261
1264
|
export { AppProvider, AutoMan, BigNumberInputState, BigNumberState, ConnectLedger, DisconnectLedger, ObjectPool, PromiseHook, StorageListState, StorageState, WalletConfigStore, WalletHistoryStore, WalletRpcStore, WalletStore };
|
|
1262
|
-
//# sourceMappingURL=chunk-
|
|
1263
|
-
//# sourceMappingURL=chunk-
|
|
1265
|
+
//# sourceMappingURL=chunk-KZTNDLU6.mjs.map
|
|
1266
|
+
//# sourceMappingURL=chunk-KZTNDLU6.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../store/standard/PromiseHook.ts","../store/standard/BigNumberState.ts","../store/standard/BigNumberInputState.ts","../store/standard/StorageState.ts","../store/standard/StorageListState.ts","../store/standard/ObjectPool.ts","../module/Wallet/walletConfigStore.ts","../module/Wallet/walletPluginStore.tsx","../module/Wallet/SuccessTxDialog/index.tsx","../module/Wallet/ledger.tsx","../module/Wallet/index.tsx","../module/AutoMain/index.tsx","../module/AppProvider.tsx"],"names":["BigNumber","makeAutoObservable","React","Icon","_a","error","observer","useEffect","promise","rootStore"],"mappings":"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","file":"chunk-KZTNDLU6.mjs","sourcesContent":["import { observable } from \"mobx\";\n\nexport class KV {\n //@ts-ignore\n static datas = observable();\n}\n\nexport abstract class ContractBase {\n // chainId?: number;\n // address?: string;\n}\n\nexport type ContractClass<T extends ContractBase> = new (args: Partial<T>) => T;\n\nexport type PromiseHookData<T, U> = { value: Awaited<U>; get: T; call: T; func: T; loading: boolean; errorRetry: number };\n\nexport class PromiseHook {\n static entities = observable([]);\n static Get<T extends ContractBase>(\n cls: ContractClass<T>,\n ): (args: { args: Partial<T>; id?: string; select?: { [key in keyof Partial<T>]: boolean }; unselect?: { [key in keyof Partial<T>]: boolean } }) => Promise<T & { refresh: () => Promise<void> }> {\n try {\n return async ({ args, select, id, unselect }) => {\n let instance: any;\n //@ts-ignore\n if (!id || !this.entities[id]) {\n instance = new cls(args);\n\n instance.refresh = async () => {\n const hooks = Object.entries(instance)\n .filter((i) => {\n if (!this.isPromiseHook(instance[i[0]])) return false;\n //@ts-ignore\n if (i[1].lazy) return false;\n if (select && !select[i[0]]) return false;\n if (unselect && unselect[i[0]]) return false;\n return true;\n })\n .map((i) => {\n const hook = instance[i[0]];\n return hook;\n });\n\n await Promise.all(hooks.map((i) => i.call()));\n };\n if (id) {\n //@ts-ignore\n this.entities[id] = instance;\n }\n } else {\n instance = this.entities[id!];\n }\n\n await instance.refresh();\n return instance;\n };\n } catch (e) {\n throw e;\n }\n }\n\n static isPromiseHook(target) {\n return target?._type == \"promiseHook\";\n }\n\n //ttl : ms\n static wrap<T extends (...args: any[]) => Promise<any>, U = ReturnType<T>>({ func, defaultValue, lazy }: { func: T; defaultValue?: Awaited<U>; lazy?: boolean }): PromiseHookData<T, U> {\n let context;\n const call = (args) => {\n context.loading = true;\n if (!context._call) {\n context._call = func(args)\n .then((i) => {\n context.value = i;\n context.loading = false;\n context._call = null;\n return i;\n })\n .catch((i) => {\n console.error(i, func);\n context.value = defaultValue;\n context._call = null;\n context.loading = false;\n throw i;\n });\n }\n\n return context._call;\n };\n const get = async (args: any) => {\n if (!context.value) {\n return call(args);\n }\n return context.value;\n };\n\n if (!context) {\n context = observable({\n _type: \"promiseHook\",\n _value: defaultValue,\n get value() {\n return context[\"_value\"];\n },\n set value(val) {\n context[\"_value\"] = val;\n },\n get,\n lazy,\n\n loading: false,\n call,\n defaultValue,\n toJSON() {\n return context.value;\n },\n toString() {\n return context.value;\n },\n });\n }\n\n return context;\n }\n}\n","import BigNumber from \"bignumber.js\";\nimport { makeAutoObservable } from \"mobx\";\nimport { helper } from \"../../lib/helper\";\n\nexport class BigNumberState {\n value = new BigNumber(0);\n loading = false;\n decimals = 18;\n fixed = 6;\n formatter?: Function;\n constructor(args: Partial<BigNumberState>) {\n Object.assign(this, args);\n makeAutoObservable(this, {\n getFormat: false,\n });\n }\n get format() {\n if (this.loading) return \"...\";\n return this.getFormat();\n }\n\n getFormat({ decimals = this.decimals, fixed = this.fixed }: { decimals?: number; fixed?: number } = {}) {\n if (this.loading) return \"...\";\n if (this.formatter) return this.formatter(this);\n return helper.number.toPrecisionFloor(new BigNumber(this.value).dividedBy(10 ** decimals).toFixed(), {\n decimals: fixed,\n });\n }\n\n setDecimals(decimals: number) {\n this.decimals = decimals;\n }\n\n setValue(value: BigNumber) {\n this.value = value;\n this.setLoading(false);\n }\n\n setLoading(val) {\n this.loading = val;\n }\n}\n","import BigNumber from 'bignumber.js';\nimport { makeAutoObservable } from 'mobx';\nimport { helper } from '../../lib/helper';\nexport class BigNumberInputState {\n value = new BigNumber(0);\n format = '';\n loading = false;\n decimals = 18;\n formatter?: Function;\n constructor(args: Partial<BigNumberInputState>) {\n Object.assign(this, args);\n makeAutoObservable(this);\n }\n get noDecimasValue(): BigNumber {\n return new BigNumber(this.value).dividedBy(10 ** this.decimals);\n }\n setValue(value: any) {\n this.value = new BigNumber(value);\n // this.format = helper.number.toPrecisionFloor(new BigNumber(this.value).dividedBy(10 ** this.decimals).toFixed());\n this.format = helper.number.warpBigNumber(this.value.toFixed(), this.decimals, { format: '0.000', fallback: '' }).format;\n this.setLoading(false);\n }\n setFormat(val: any) {\n this.format = val;\n // this.format = helper.number.toPrecisionFloor(this.format);\n // this.format = helper.number.warpBigNumber(this.value.toFixed(), this.decimals, { format: '0.000', fallback: '' }).format;\n this.value = new BigNumber(val).multipliedBy(10 ** this.decimals);\n }\n setLoading(val: boolean) {\n this.loading = val;\n }\n setDecimals(val: number) {\n this.decimals = val;\n }\n get isZero(): boolean {\n return this.value.isZero() && this.format == '';\n }\n}\n","import { makeAutoObservable } from \"mobx\";\n\nexport class StorageState<T> {\n key: string;\n value: T | any = null;\n default: T | any = null;\n constructor(args: Partial<StorageState<T>>) {\n Object.assign(this, args);\n makeAutoObservable(this);\n this.load();\n }\n\n static safeParse(val: any) {\n try {\n return JSON.parse(val);\n } catch (error) {\n return val;\n }\n }\n\n load() {\n try {\n if (typeof window == 'undefined') return\n const value = window?.localStorage?.getItem(this.key);\n this.value = StorageState.safeParse(value);\n if (this.value == null) {\n this.value = this.default;\n }\n return this.value;\n } catch (error) {\n console.error(error);\n return null;\n }\n }\n\n save(value?: T) {\n try {\n if (typeof window == 'undefined') return\n if (value !== null || value !== undefined) {\n this.value = value;\n }\n window?.localStorage.setItem(this.key, JSON.stringify(value));\n } catch (error) {\n console.error(error);\n return null;\n }\n }\n\n setValue(value?: T) {\n this.save(value);\n }\n\n clear() {\n try {\n if (typeof window == 'undefined') return\n window?.localStorage.removeItem(this.key);\n } catch (error) {\n return null;\n }\n }\n}\n","import { makeAutoObservable } from \"mobx\";\n\nimport { helper } from \"../../lib/helper\";\nimport { _ } from \"../../lib/lodash\";\n\nexport class StorageListState<T = any> {\n key: string;\n list: T[] = [];\n\n static safeParse(val: any) {\n try {\n return JSON.parse(val);\n } catch (error) {\n return val;\n }\n }\n\n constructor(args: { key: string; }) {\n Object.assign(this, args);\n makeAutoObservable(this);\n this.load();\n }\n\n\n load() {\n if (typeof window === 'undefined') return null;\n try {\n const value = localStorage.getItem(this.key);\n if (value) {\n this.list = StorageListState.safeParse(value);\n }\n return StorageListState.safeParse(value)\n } catch (error) {\n console.error(error);\n return null;\n }\n }\n\n\n push(value: T) {\n this.list.push(value);\n this.save();\n }\n\n remove(index: number) {\n this.list.splice(index, 1);\n this.save();\n }\n\n private save() {\n if (typeof window === 'undefined') return;\n try {\n localStorage.setItem(this.key, JSON.stringify(this.list));\n } catch (error) {\n }\n }\n\n clear() {\n if (typeof window === 'undefined') return;\n try {\n localStorage.removeItem(this.key);\n this.list = [];\n } catch (error) {\n }\n }\n}\n","\n\nexport class ObjectPool {\n static pool: { [key: string]: any } = {};\n\n static get<T extends (...args: any[]) => any, U = ReturnType<T>>(key: string, func: T): U {\n if (!ObjectPool.pool[key]) {\n ObjectPool.pool[key] = func();\n }\n return ObjectPool.pool[key];\n }\n}","import { Chain, getDefaultConfig } from \"@rainbow-me/rainbowkit\";\nimport { walletConnectWallet, metaMaskWallet, iopayWallet, okxWallet, binanceWallet, safeWallet, gateWallet } from \"@rainbow-me/rainbowkit/wallets\";\nimport { ObjectPool, Store } from \"../..\";\n\nexport class WalletConfigStore implements Store {\n sid = \"WalletConfigStore\";\n autoObservable = true;\n\n appName = \"Dappkit\";\n projectId = \"b69e844f38265667350efd78e3e1a5fb\";\n // @ts-ignore\n supportedChains: Chain[];\n defaultChainId = 4689;\n updateTicker = 1;\n walletUpdateTick = 0;\n isConnect = false;\n isInSafeApp = false;\n // This mode to resolve and walletClient and nextui in some extreme cases cause page infinite redraw bugs\n compatibleMode = true;\n\n constructor(args: Partial<WalletConfigStore>) {\n Object.assign(this, args);\n }\n\n set(params: Partial<WalletConfigStore>) {\n Object.assign(this, params);\n this.updateTicker += 1;\n }\n\n get reconnectOnMount() {\n if (!this.compatibleMode) return true;\n\n if (!this.isConnect && this.walletUpdateTick == 0) {\n return true;\n }\n if (!this.isConnect && this.walletUpdateTick != 0) {\n return false;\n }\n if (this.isConnect) {\n return true;\n }\n }\n\n get rainbowKitConfig() {\n return ObjectPool.get(`rainbowKitConfig-${this.supportedChains?.map((i) => i.id).join(\"-\")}`, () => {\n return getDefaultConfig({\n pollingInterval: 2500,\n appName: this.appName,\n projectId: this.projectId,\n //@ts-ignore\n chains: this.supportedChains,\n wallets: [\n {\n groupName: \"Recommended\",\n wallets: [iopayWallet, metaMaskWallet],\n },\n {\n groupName: \"Others\",\n wallets: [metaMaskWallet, walletConnectWallet, iopayWallet, okxWallet, binanceWallet, safeWallet, gateWallet],\n },\n ],\n });\n });\n }\n}\n","import React from 'react';\nimport { Icon } from \"@iconify/react\";\nimport { RootStore } from \"../../store\";\nimport { Store } from \"../../store/standard/base\";\nimport { StorageState } from '../../store/standard/StorageState';\nimport { ToastPlugin } from \"../Toast/Toast\";\nimport { WalletTransactionHistoryType } from \"./type\";\nimport { WalletStore } from \".\";\nimport { helper } from \"../../lib/helper\";\nimport { WalletConfigStore } from './walletConfigStore';\nimport { toHex } from 'viem';\n\nconst defaultRPCList = [\n { name: 'https://babel-api.fastblocks.io', latency: 0, height: 0, custom: false },\n { name: 'https://babel-api.mainnet.iotex.one', latency: 0, height: 0, },\n { name: 'https://babel-api.mainnet.iotex.io', latency: 0, height: 0, },\n { name: 'https://iotex-network.rpc.thirdweb.com', latency: 0, height: 0, },\n // { name: 'https://iotexrpc.com', latency: 0, height: 0, },\n { name: 'https://iotex.api.onfinality.io/public', latency: 0, height: 0, },\n // { name: 'https://rpc.ankr.com/iotex', latency: 0, height: 0, },\n]\n\nexport class WalletRpcStore implements Store {\n sid = 'WalletPluginStore';\n autoObservable = true\n curRpc = new StorageState({ default: 'https://babel-api.mainnet.iotex.one', key: 'curRPC-v2', value: 'https://babel-api.mainnet.iotex.one' });\n isAutoSelectRpc = new StorageState({ key: 'isAutoSelectRpc', default: true });\n customRpc = '';\n rpcList = new StorageState({ key: 'customRpcList-v2', default: defaultRPCList, value: [] })\n showCustomRpc = false;\n get currentRpc() {\n console.log(this.rpcList.value?.find(i => i.name == this.curRpc))\n return this.rpcList.value?.find(i => i.name == this.curRpc.value) || null\n }\n addCustomRpc() {\n const item = { name: this.customRpc, latency: 0, height: 0, custom: true }\n if (defaultRPCList.find(i => i.name === item.name)) {\n return RootStore.Get(ToastPlugin).error('Rpc already exists')\n }\n if (this.rpcList.value) {\n this.rpcList.save([...this.rpcList.value, item])\n this.refresh()\n return\n }\n this.rpcList.save([...defaultRPCList, item])\n this.refresh()\n }\n async addToMetamask(url) {\n try {\n if (typeof window == 'undefined') return;\n await window?.ethereum?.request({\n method: 'wallet_addEthereumChain',\n params: [{\n chainId: `0x${(4689).toString(16)}`,\n chainName: 'IoTeX Mainnet',\n nativeCurrency: {\n name: 'IoTeX',\n symbol: 'IOTX',\n decimals: 18,\n },\n rpcUrls: [url],\n blockExplorerUrls: ['https://iotexscan.io'],\n }]\n });\n RootStore.Get(ToastPlugin).success('Network added');\n console.log('Network added');\n } catch (error) {\n console.error('Failed to add network', error);\n }\n }\n async switchOrAddChain(chainId: number) {\n return new Promise(async (resolve, reject) => {\n try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: toHex(chainId) }],\n });\n resolve(true)\n } catch (switchError) {\n if (switchError.code === 4902) {\n try {\n await this.addToMetamaskById(chainId)\n } catch (addError) {\n reject(addError)\n }\n } else {\n reject(switchError)\n }\n }\n })\n }\n async addToMetamaskById(id: number) {\n return new Promise(async (resolve, reject) => {\n try {\n if (typeof window == 'undefined') return;\n const chain = RootStore.Get(WalletConfigStore).supportedChains.find(i => i.id == id)\n const res = await window.ethereum.request({\n method: 'wallet_addEthereumChain',\n params: [{\n \"chainId\": toHex(chain.id),\n \"chainName\": chain.name,\n \"nativeCurrency\": {\n \"name\": chain.nativeCurrency.name,\n \"symbol\": chain.nativeCurrency.symbol,\n \"decimals\": chain.nativeCurrency.decimals,\n },\n \"rpcUrls\": JSON.parse(JSON.stringify(chain.rpcUrls.default.http)),\n \"blockExplorerUrls\": [chain.blockExplorers.default.url],\n }]\n });\n console.log(res)\n resolve(res)\n } catch (switchError) {\n reject(false)\n }\n })\n }\n refresh() {\n this.showCustomRpc = false\n this.customRpc = ''\n setTimeout(() => {\n this.testRpc()\n }, 500)\n }\n latencyColor(latency: number) {\n if (latency < 0) {\n return 'text-red-500'\n }\n if (latency < 1) {\n return 'text-green-500'\n }\n if (latency < 2) {\n return 'text-yellow-500'\n }\n return 'text-red-500'\n }\n async testRpcFunction(url: string): Promise<{ url: string, lentency: number, height: number }> {\n const start = performance.now();\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n method: 'eth_getBlockByNumber',\n params: [\"latest\", false],\n id: 1,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Error from server: ${response.status}`);\n }\n const res = await response.json();\n console.log(res)\n const end = performance.now();\n return { url, lentency: Number(helper.number.numberFormat(((end - start) / 1000), '0.000', { fallback: '-1' })), height: parseInt(res.result.number, 16) };\n } catch (error) {\n console.error('RPC Latency Test Failed:', error);\n return { url, lentency: -1, height: -1 };\n }\n }\n testRpc() {\n this.rpcList?.value.forEach(i => {\n this.testRpcFunction(i.name).then(res => {\n i.latency = res.lentency\n i.height = res.height\n })\n })\n this.rpcList.save(this.rpcList.value)\n }\n removeRpc(name: string) {\n this.rpcList.save(this.rpcList.value.filter(i => i.name !== name))\n }\n scoreIcon(score: number) {\n if (score < 0) {\n return <Icon icon=\"codicon:error\" width=\"18\" height=\"18\" style={{ color: \"#FF0000\" }} />\n }\n if (score < 1) {\n return <Icon icon=\"icon-park-solid:check-one\" width=\"18\" height=\"18\" style={{ color: \"#289726\" }} />\n }\n if (score < 2) {\n return <Icon icon=\"bxs:error\" width=\"18\" height=\"18\" style={{ color: \"#FFA500\" }} />\n }\n return <Icon icon=\"codicon:error\" width=\"18\" height=\"18\" style={{ color: \"#FF0000\" }} />\n }\n get wallet() {\n return RootStore.Get(WalletStore)\n }\n // debounceAutoSelectRpc = pDebounce(this.autoSelectRpc, 3000)\n async autoSelectRpc() {\n console.log('autoSelectRpc')\n for (let i = 0; i < this.rpcList.value.length; i++) {\n const item = this.rpcList.value[i]\n const res = await this.testRpcFunction(item.name)\n if (res.lentency != -1 || res.height > 0) {\n this.curRpc.save(item.name)\n break;\n }\n }\n }\n}\n\nexport class WalletHistoryStore implements Store {\n sid = 'WalletHistoryStore';\n isRender = false\n autoObservable = true\n set(params: Partial<WalletHistoryStore>) {\n Object.assign(this, params);\n }\n private history = new StorageState<WalletTransactionHistoryType[] | null>({ value: [], key: 'history' });\n get historyList(): WalletTransactionHistoryType[] {\n if (this.isRender) {\n return this.history.value\n }\n return []\n }\n recordHistory(item: WalletTransactionHistoryType) {\n let value: WalletTransactionHistoryType[] | null = this.history.load();\n if (!value) {\n value = [item];\n } else {\n value = [...value, item];\n }\n this.history.setValue(value);\n }\n updateHistoryStatusByTx(tx: string | null, status: 'loading' | 'success' | 'fail') {\n let value: WalletTransactionHistoryType[] | null = this.history.load();\n if (!value) {\n return;\n }\n value = value.map((i) => {\n if (i.tx == tx) {\n i.status = status;\n return i;\n }\n if (!tx) {\n i.status = status;\n }\n return i;\n });\n this.history.setValue(value);\n }\n clearHistory() {\n this.history.setValue(null);\n }\n}\n","import { Icon } from \"@iconify/react\";\nimport { observer } from \"mobx-react-lite\";\nimport React from \"react\";\nimport { RootStore } from \"../../../store\";\nimport { DialogStore } from \"../../../module/Dialog\";\n\ninterface IProps {\n msg: string,\n hash: string,\n}\n\nconst SuccessTxDialog = observer((props: IProps) => {\n return <div className='flex-col gap-4 py-10'>\n <div className='w-full flex items-center justify-center'>\n <Icon icon=\"icon-park-solid:check-one\" width=\"48\" height=\"48\" className='text-green-500' /></div>\n <div className='text-2xl font-[900] text-center mt-4'>{props.msg}</div>\n <div className='flex items-center justify-center text-green-500 text-sm mt-6 gap-2 cursor-pointer hover:text-green-600 transition'\n onClick={e => window.open(`https://iotexscan.io/tx/${props.hash}`, '_blank')}>View on IoTeXScan <Icon icon=\"material-symbols:chip-extraction-rounded\" width=\"18\" height=\"18\" /></div>\n </div>\n})\nexport const ShowSuccessTxDialog = ({ msg, hash }) => {\n RootStore.Get(DialogStore).setData({\n title: '',\n content: <SuccessTxDialog msg={msg} hash={hash} />,\n isOpen: true,\n })\n}","import Transport from \"@ledgerhq/hw-transport\";\nimport TransportWebUSB from \"@ledgerhq/hw-transport-webusb\";\nimport Eth from \"@ledgerhq/hw-app-eth\";\nimport { ethers } from \"ethers\";\nimport { ObjectPool } from \"../../store/standard/ObjectPool\";\nimport { RootStore } from \"../../store\";\nimport { WalletStore } from \".\";\nimport { ToastPlugin } from \"../Toast/Toast\";\n\nlet _transport: Transport | null = null;\nlet _signer: LedgerSigner | null = null;\n\nexport async function createTransport(): Promise<Transport> {\n if (_transport) {\n return _transport;\n }\n try {\n const res = await TransportWebUSB.create();\n console.log('createTransport res', res);\n _transport = res;\n return res;\n } catch (error) {\n console.error('Error creating transport', error);\n throw error;\n }\n}\n\nexport async function getAddress(transport: Transport, path: string): Promise<string> {\n const eth = new Eth(transport);\n const address = await eth.getAddress(path);\n return address.address;\n}\n\nexport function waiter(duration: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n\nexport const GlobalLedgerProvider = ObjectPool.get('provider', async () => {\n return new ethers.providers.JsonRpcProvider(\"https://babel-api.mainnet.iotex.io\");\n});\n\nexport const GlobalLedgerSigner = async () => {\n try {\n if (_signer) {\n return _signer;\n }\n const transport = await createTransport();\n _signer = new LedgerSigner(transport, await GlobalLedgerProvider, \"44'/304'/0'/0/0\");\n return _signer;\n } catch (error) {\n console.error('Error creating ledger signer', error);\n RootStore.Get(ToastPlugin).error(error.message ?? 'Failed to connect to Ledger');\n RootStore.Get(WalletStore).isLedger = false;\n return null;\n }\n}\n\nexport const ConnectLedger = async () => {\n RootStore.Get(WalletStore).isLedger = true;\n console.log('ConnectLedger');\n const signer = await GlobalLedgerSigner();\n console.log('signer', signer);\n const interval = setInterval(async () => {\n try {\n const address = await signer?.getAddress()\n if (address) {\n RootStore.Get(WalletStore).set({\n account: address as `0x${string}`,\n isConnect: true,\n });\n // const transport = await createTransport();\n // RootStore.Get(WalletStore).walletClient = createWalletClient({\n // account: address as `0x${string}`,\n // chain: iotex,\n // //@ts-ignore\n // transport: (transport)\n // }).extend(publicActions)\n clearInterval(interval);\n return signer;\n }\n } catch (error) {\n console.error('Error getting address', error);\n }\n }, 1000);\n};\n\nexport const DisconnectLedger = () => {\n RootStore.Get(WalletStore).set({\n isConnect: false,\n isLedger: false,\n });\n};\n\nexport class LedgerSigner extends ethers.Signer {\n readonly path: string\n readonly _eth: Promise<Eth>;\n\n constructor(transport: Transport, provider?: ethers.providers.Provider, path?: string) {\n super();\n\n ethers.utils.defineReadOnly(this, \"path\", path || \"44'/304'/0'/0/0\");\n //@ts-ignore\n ethers.utils.defineReadOnly(this, \"provider\", provider || null);\n\n const eth = new Eth(transport);\n const _eth = eth.getAppConfiguration().then((config) => {\n return eth;\n }, (error) => {\n return Promise.reject(error);\n });\n ethers.utils.defineReadOnly(this, \"_eth\", _eth);\n }\n\n _retry<T = any>(callback: (eth: Eth) => Promise<T>, timeout?: number): Promise<T> {\n return new Promise(async (resolve, reject) => {\n if (timeout && timeout > 0) {\n setTimeout(() => { reject(new Error(\"timeout\")); }, timeout);\n }\n\n const eth = await this._eth;\n\n // Wait up to 5 seconds\n for (let i = 0; i < 50; i++) {\n try {\n const result = await callback(eth);\n return resolve(result);\n } catch (error) {\n if (error.id !== \"TransportLocked\") {\n return reject(error);\n }\n }\n await waiter(100);\n }\n\n return reject(new Error(\"timeout\"));\n });\n }\n\n async getAddress(): Promise<string> {\n const account = await this._retry((eth) => eth.getAddress(this.path));\n return ethers.utils.getAddress(account.address);\n }\n\n async signMessage(message: ethers.utils.Bytes | string): Promise<string> {\n if (typeof (message) === 'string') {\n message = ethers.utils.toUtf8Bytes(message);\n }\n\n const messageHex = ethers.utils.hexlify(message).substring(2);\n\n const sig = await this._retry((eth) => eth.signPersonalMessage(this.path, messageHex));\n sig.r = '0x' + sig.r;\n sig.s = '0x' + sig.s;\n return ethers.utils.joinSignature(sig);\n }\n\n async signTransaction(transaction: ethers.providers.TransactionRequest): Promise<string> {\n const tx = await ethers.utils.resolveProperties(transaction);\n const baseTx: ethers.utils.UnsignedTransaction = {\n chainId: (tx.chainId || undefined),\n data: (tx.data || undefined),\n gasLimit: (tx.gasLimit || undefined),\n gasPrice: (tx.gasPrice || undefined),\n nonce: (tx.nonce ? ethers.BigNumber.from(tx.nonce).toNumber() : undefined),\n to: (tx.to || undefined),\n value: (tx.value || undefined),\n };\n\n const unsignedTx = ethers.utils.serializeTransaction(baseTx).substring(2);\n const sig = await this._retry((eth) => eth.signTransaction(this.path, unsignedTx));\n\n return ethers.utils.serializeTransaction(baseTx, {\n v: ethers.BigNumber.from(\"0x\" + sig.v).toNumber(),\n r: (\"0x\" + sig.r),\n s: (\"0x\" + sig.s),\n });\n }\n\n connect(provider: ethers.providers.Provider): ethers.Signer {\n //@ts-ignore\n return new LedgerSigner(provider, this.path);\n }\n}","import React from 'react';\nimport { useEffect } from \"react\";\nimport { Store } from \"../../store/standard/base\";\nimport { PublicClient, type HttpTransport, WalletClient, TransactionReceipt, createWalletClient, custom, publicActions, SwitchChainErrorType, UserRejectedRequestError } from \"viem\";\nimport { PromiseHook } from '../../store/standard/PromiseHook';\nimport { AddressMode, WalletTransactionHistoryType } from \"./type\";\nimport EventEmitter from \"events\";\nimport { SwitchChainMutateAsync } from \"wagmi/query\";\nimport { Config, useAccount, useConnect, useDisconnect, useSwitchChain, useWalletClient, } from \"wagmi\";\nimport { Chain, useConnectModal } from '@rainbow-me/rainbowkit';\nimport { RootStore } from \"../../store\";\nimport { ToastPlugin } from \"../Toast/Toast\";\nimport { WalletHistoryStore, WalletRpcStore } from './walletPluginStore';\nimport SafeAppsSDK, { TransactionStatus } from '@safe-global/safe-apps-sdk';\nimport { ShowSuccessTxDialog } from './SuccessTxDialog'\nimport { WalletConfigStore } from \"./walletConfigStore\";\nimport { AIem } from \"../../aiem\";\nimport { helper } from \"../../lib/helper\";\nimport { DialogStore } from '../Dialog';\nimport { Icon } from '@iconify/react';\nimport { Card, Input } from '@nextui-org/react';\nimport { GlobalLedgerSigner } from './ledger';\n\nexport class WalletStore implements Store {\n sid = 'wallet';\n autoObservable = true;\n account: `0x${string}` = null;\n isSuccessDialogOpen = false;\n // isInSafeApp = false;\n get isInSafeApp() {\n return RootStore.Get(WalletConfigStore).isInSafeApp\n }\n isLedger = false;\n isConnect = false;\n walletClient: WalletClient;\n event = new EventEmitter();\n switchChain: SwitchChainMutateAsync<Config, unknown> | undefined;\n updateTicker = 0;\n addressMode: AddressMode = '0x';\n isIoTeXChain: boolean = false;\n setAddressMode(mode: AddressMode) {\n this.addressMode = mode;\n localStorage.setItem('addressMode', mode);\n }\n get accountFormat() {\n return this.account ? helper.address.convertAddress(this.addressMode, this.account) : '-';\n }\n get connectAccountEllipsisFormat() {\n return this.account ? helper.string.truncate(helper.address.convertAddress(this.addressMode, this.account), 11, '...') : '-';\n }\n get accountEllipsisFormat() {\n return this.account ? helper.string.truncate(helper.address.convertAddress(this.addressMode, this.account), 16, '...') : '-';\n }\n get supportedChains() {\n return RootStore.Get(WalletConfigStore).supportedChains\n }\n chain: Chain | undefined;\n openConnectModal: any;\n disconnect: any;\n balance = PromiseHook.wrap({\n func: async () => {\n if (!this.publicClient || !this.account) return helper.number.warpBigNumber('0');\n const balance = await this.publicClient.getBalance({\n address: this.account,\n });\n if (balance) {\n return helper.number.warpBigNumber(balance?.toString() ?? '0');\n }\n },\n });\n\n constructor(args?: Partial<WalletStore>) {\n Object.assign(this, args);\n }\n\n use() {\n // const { data: walletClient, isSuccess } = useWalletClient();\n const { chain, address, isConnected } = useAccount();\n const { switchChainAsync } = useSwitchChain();\n const { openConnectModal } = useConnectModal();\n const { connect } = useConnect();\n const { disconnect } = useDisconnect();\n const walletConfigStore = RootStore.Get(WalletConfigStore);\n this.set({\n //@ts-ignore\n connect,\n // @ts-ignore \n // walletClient,\n openConnectModal,\n switchChain: switchChainAsync,\n disconnect\n })\n\n useEffect(() => {\n RootStore.Get(WalletHistoryStore).set({ isRender: true })\n this.set({\n isConnect: isConnected,\n account: address,\n chain,\n })\n if (chain?.id == 4689) {\n this.isIoTeXChain = true\n } else {\n this.isIoTeXChain = false\n }\n walletConfigStore.set({\n isConnect: isConnected,\n })\n if (this.account) {\n this.updateTicker++;\n walletConfigStore.set({\n walletUpdateTick: this.updateTicker,\n })\n this.event.emit('walletAccount:ready');\n }\n // this.useWalletClientWithCompatibleMode()\n }, [address, isConnected, chain])\n\n useEffect(() => {\n setTimeout(() => {\n this.balance.call()\n }, 1500)\n }, [this.updateTicker])\n }\n\n private useWalletClientWithCompatibleMode() {\n if (RootStore.Get(WalletConfigStore).compatibleMode) {\n if (this.account && this.chain) {\n // @ts-ignore - Type instantiation is too deep, but the code works correctly\n this.walletClient = createWalletClient({\n account: this.account,\n chain: this.chain,\n transport: custom(window.ethereum! as any),\n pollingInterval: 2500,\n }).extend(publicActions)\n }\n console.log(this.walletClient, 'this.walletClientxxx')\n }\n }\n\n useWalletClientWithoutCompatibleMode() {\n const { data: walletClient, isSuccess } = useWalletClient({\n query: {\n refetchInterval: 2500\n }\n })\n useEffect(() => {\n if (isSuccess && walletClient) {\n this.set({ walletClient })\n }\n }, [walletClient, isSuccess]);\n }\n\n //always return or return default chain\n get publicClient(): PublicClient<HttpTransport, Chain, any, any> {\n if (this.chain && this.supportedChains.some(i => i.id === this.chain.id)) {\n if (this.chain.id == 4689) {\n return AIem.PubClient('4689', {\n rpcUrls: { default: { http: [RootStore.Get(WalletRpcStore).curRpc.value] } },\n multicall: true,\n pollingInterval: 2500\n })\n }\n return AIem.PubClient(this.chain.id.toString(), { pollingInterval: 2500 })\n } else {\n return AIem.PubClient('4689', { pollingInterval: 2500 })\n }\n }\n\n set(args: Partial<WalletStore>) {\n Object.assign(this, args);\n }\n\n toJSON() {\n const { account } = this;\n return { account };\n }\n\n async prepare(chainId?: number): Promise<WalletStore> {\n const walletRpcStore = RootStore.Get(WalletRpcStore)\n return new Promise<WalletStore>(async (res, rej) => {\n try {\n if (this.account) {\n if (this.isLedger) {\n res(this)\n }\n if ((!chainId || (Number(this.chain?.id) == Number(chainId))) && this.walletClient) {\n res(this);\n }\n const interval = setInterval(() => {\n if (this.chain?.id == chainId) {\n try {\n this.useWalletClientWithCompatibleMode()\n res(this);\n } catch (error) {\n console.log(error, 'myerror')\n rej(error);\n }\n clearInterval(interval);\n }\n }, 1000);\n\n if (chainId != this.chain?.id) {\n try {\n await this.walletClient?.switchChain({ id: chainId })\n } catch (error) {\n console.log(error.message)\n if (error?.message?.includes(\"wallet_addEthereumChain\")) {\n const chain = RootStore.Get(WalletConfigStore).supportedChains.find(i => i.id == chainId)\n try {\n await RootStore.Get(WalletRpcStore).addToMetamaskById(chainId)\n await this.walletClient.switchChain({ id: chainId })\n } catch (error) {\n RootStore.Get(DialogStore).setData({\n isOpen: true,\n title: \"Chain Addition Failed\",\n size: '2xl',\n content: <div>\n <Card className='p-2'>\n <div className='p-2 flex items-center justify-center gap-4'>\n <div className='text-yellow-500 text-sm'>We encountered an issue while adding the chain. This might be caused by a compatibility issue with your current plugin. Please try adding the chain manually or review your plugin settings to ensure compatibility.</div>\n </div>\n </Card>\n <div className='flex flex-col gap-4 my-4'>\n <Input\n label=\"Network Name\"\n value={chain.name}\n startContent={\n <Icon icon=\"fluent:rename-24-filled\" width=\"20\" height=\"20\" />\n }\n />\n <Input\n label=\"Network RPC\"\n value={chain.rpcUrls.default?.http?.[0]}\n startContent={\n <Icon icon=\"material-symbols:link\" width=\"20\" height=\"20\" />\n }\n />\n <Input\n label=\"Chain ID\"\n value={chain.id.toString()}\n startContent={\n <Icon icon=\"f7:grid-circle-fill\" width=\"20\" height=\"20\" />\n }\n />\n <Input\n label=\"Native Currency Symbol\"\n value={chain.nativeCurrency?.symbol}\n startContent={\n <Icon icon=\"mingcute:coin-fill\" width=\"20\" height=\"20\" />\n }\n />\n <Input\n label=\"Block Explorer URL\"\n value={chain.blockExplorers?.default?.url}\n startContent={\n <Icon icon=\"material-symbols:explore\" width=\"20\" height=\"20\" />\n }\n />\n </div>\n </div>\n })\n console.log(error.message)\n }\n } else {\n rej(error)\n }\n }\n }\n } else {\n this.openConnectModal();\n const interval = setInterval(() => {\n if (this.account) {\n clearInterval(interval);\n res(this);\n }\n }, 1000);\n }\n } catch (error) {\n rej(error);\n }\n });\n }\n\n\n async waitForTransactionReceipt({ hash }) {\n // https://github.com/wevm/wagmi/discussions/3463#discussioncomment-8139187\n if (this.isInSafeApp) {\n // console.log('isInSafeApp', this.isInSafeApp);\n const sdk = new SafeAppsSDK();\n while (true) {\n const queued = await sdk.txs.getBySafeTxHash(hash);\n if (queued.txStatus === TransactionStatus.AWAITING_CONFIRMATIONS || queued.txStatus === TransactionStatus.AWAITING_EXECUTION || queued.txStatus === TransactionStatus.CANCELLED) {\n await new Promise((resolve) => setTimeout(resolve, 2000));\n } else {\n return this.publicClient.waitForTransactionReceipt({ hash: queued.txHash! as `0x${string}` });\n }\n }\n } else {\n return this.publicClient.waitForTransactionReceipt({ hash });\n }\n }\n\n static async SendTx(...args: Parameters<WalletStore['sendTx']>) {\n return RootStore.Get(WalletStore).sendTx(...args);\n }\n static async SendRawTx(...args: Parameters<WalletStore['sendRawTx']>) {\n return RootStore.Get(WalletStore).sendRawTx(...args);\n }\n async sendTx({\n chainId,\n tx,\n autoAlert = true,\n loadingText,\n successText,\n historyItem,\n showSuccessDialog = false,\n onSuccess,\n onError,\n }: {\n chainId: number | string;\n tx: any;\n autoAlert?: boolean;\n loadingText?: string;\n successText?: string;\n showSuccessDialog?: boolean;\n historyItem?: Pick<WalletTransactionHistoryType, 'msg' | 'type'>;\n onSuccess?: ({ receipt }: { receipt: TransactionReceipt }) => Promise<void>;\n onError?: (error: any) => void;\n }) {\n const toast = RootStore.Get(ToastPlugin);\n let hash;\n const historyStore = RootStore.Get(WalletHistoryStore)\n try {\n if (loadingText) toast.loading(loadingText);\n if (!chainId) throw new Error('chainId, address, data is required');\n await RootStore.Get(WalletStore).prepare(Number(chainId));\n hash = await tx();\n if (historyItem) {\n historyStore.recordHistory({ ...historyItem, tx: hash, timestamp: Date.now(), status: 'loading', chainId: Number(chainId) });\n }\n const receipt = await this.waitForTransactionReceipt({ hash });\n if (receipt.status == 'success') {\n if (onSuccess) {\n await onSuccess({ receipt });\n }\n toast.dismiss();\n toast.success('The transaction was successful');\n if (historyItem) {\n if (showSuccessDialog) {\n ShowSuccessTxDialog({ msg: historyItem.msg, hash: hash });\n }\n historyStore.updateHistoryStatusByTx(hash, 'success');\n }\n } else {\n toast.dismiss();\n toast.error('The transaction failed');\n historyStore.updateHistoryStatusByTx(hash, 'fail');\n }\n if (successText) toast.success(successText);\n this.updateTicker++;\n return receipt;\n } catch (error) {\n console.log(error);\n toast.dismiss();\n if (autoAlert) {\n const msg = /reason=\"[A-Za-z0-9_ :\"]*/g.exec(error?.message);\n console.log('sendTx', error?.message);\n if (error?.message?.includes('rejected') || String(error).toLowerCase().includes('rejected') || error?.message?.includes('cancel') || String(error).toLowerCase().includes('cancel') || String(error).toLowerCase().includes('denied')) {\n toast.error('User rejected transaction');\n // onError?.(error);\n return;\n }\n if (error?.message?.includes('The Transaction may not be processed on a block yet') || error?.message?.includes('could not be found')) {\n if (historyItem) {\n historyStore.updateHistoryStatusByTx(hash, 'success');\n }\n toast.success('The transaction was successful');\n return;\n }\n\n if (msg) {\n // toast.error(msg as unknown as string);\n onError?.(new Error(msg as unknown as string || 'Transaction failed'));\n } else {\n if (error?.message.includes('viem')) {\n const messageArr = error?.message.split('\\n');\n console.log('messageArr---', messageArr);\n if (messageArr.length > 0) {\n // toast.error(messageArr[0]);\n onError?.(new Error(messageArr[0] || 'Transaction failed'));\n }\n } else {\n // toast.error(String(error?.message || error));\n onError?.(new Error(error?.message || 'Transaction failed'));\n }\n }\n } else {\n onError?.(error);\n throw error;\n }\n }\n }\n async sendRawTx({\n chainId,\n address,\n data,\n value = '0',\n autoAlert = true,\n onSended,\n onSuccess,\n onError,\n historyItem,\n loadingText,\n showSuccessDialog = false,\n }: {\n loadingText?: string;\n chainId: number | string;\n address: string;\n data: string | null;\n value?: string;\n autoRefresh?: boolean;\n autoAlert?: boolean;\n historyItem?: Pick<WalletTransactionHistoryType, 'msg' | 'type'>;\n showTransactionSubmitDialog?: boolean;\n showSuccessDialog?: boolean;\n onSended?: ({ res }: { res: TransactionReceipt }) => void;\n onSuccess?: ({ res }: { res: TransactionReceipt }) => void;\n onError?: (error: any) => void;\n }): Promise<TransactionReceipt | undefined> {\n chainId = Number(chainId);\n const toast = RootStore.Get(ToastPlugin);\n try {\n if (!chainId || !address) throw new Error('chainId, address, is required');\n await RootStore.Get(WalletStore).prepare(chainId);\n if (loadingText) toast.loading(loadingText);\n const historyStore = RootStore.Get(WalletHistoryStore)\n let hash;\n if (this.isLedger) {\n const ledger = await GlobalLedgerSigner();\n console.log(ledger, 'ledger signer')\n const tx = await ledger.sendTransaction({\n to: address as `0x${string}`,\n data: data as `0x${string}`,\n value: value ? BigInt(value) : undefined,\n from: this.account,\n type: 0\n });\n hash = tx?.hash;\n } else {\n // @ts-ignore\n hash = await this.walletClient.sendTransaction({\n account: this.account,\n to: address as `0x${string}`,\n data: data as `0x${string}`,\n value: value ? BigInt(value) : undefined,\n });\n }\n let receipt = await this.waitForTransactionReceipt({ hash });\n if (historyItem) {\n historyStore.recordHistory({ ...historyItem, tx: receipt.transactionHash, timestamp: Date.now(), status: 'loading', chainId: Number(chainId) });\n }\n this.updateTicker++;\n onSended ? onSended({ res: receipt }) : null;\n if (receipt.status == 'success') {\n if (historyItem) {\n if (showSuccessDialog) {\n ShowSuccessTxDialog({ msg: historyItem.msg, hash: hash });\n }\n historyStore.updateHistoryStatusByTx(receipt.transactionHash, 'success');\n }\n onSuccess && onSuccess({ res: receipt });\n toast.dismiss();\n toast.success('The transaction was successful');\n } else {\n if (historyItem) {\n historyStore.updateHistoryStatusByTx(receipt.transactionHash, 'fail');\n }\n onError && onError?.(new Error('The transaction failed'));\n toast.dismiss();\n toast.error('The transaction failed');\n }\n return receipt;\n } catch (error) {\n toast.dismiss();\n onError?.(error)\n console.log(error);\n const msg = /reason=\"[A-Za-z0-9_ :\"]*/g.exec(error?.message);\n // Details: Transaction was rejected\n if (error?.message?.includes('rejected') || error?.message?.includes('cancel') || String(error).toLowerCase().includes('cancel') || String(error).toLowerCase().includes('rejected') || String(error).toLowerCase().includes('user denied')) {\n autoAlert && toast.error('User rejected transaction');\n onError?.(error);\n return;\n }\n if (error?.message?.includes('Price slippage check')) {\n autoAlert && toast.error('The latest pool price has changed, please try to increase the slippage tolerance or reload the page.');\n onError?.(error);\n return;\n }\n if (error?.message.includes('viem')) {\n const messageArr = error?.message.split('\\n');\n console.log('messageArr---', messageArr);\n if (messageArr.length > 0) {\n // toast.error(messageArr[0]);\n onError?.(new Error(messageArr[0] ?? 'Transaction failed'));\n return;\n }\n }\n\n // if (msg) {\n // autoAlert && toast.error(msg as unknown as string);\n // } else {\n // autoAlert && toast.error(String(error.message));\n // }\n if (!autoAlert) {\n onError?.(error);\n throw error;\n }\n }\n }\n async signMessage(message: string) {\n if (this.isLedger) {\n const ledger = await GlobalLedgerSigner();\n return ledger.signMessage(message);\n }\n // @ts-ignore\n return this.walletClient.signMessage(message);\n }\n}\n","import { useEffect } from 'react';\nimport { useRouter } from 'next/router.js';\nimport { observer } from 'mobx-react-lite';\nimport { RootStore, rootStore } from '../../store';\nimport { Store } from \"../../store/standard/base\";\nimport { WalletStore } from '../Wallet';\nimport React from 'react';\n\nexport class AutoMan implements Store {\n sid = 'AutoMan';\n stype = 'Plugin';\n autoObservable?: boolean | undefined;\n\n provider = observer(() => {\n const wallet = RootStore.Get(WalletStore);\n const router = useRouter();\n useEffect(() => {\n console.log('automan proverider')\n // @ts-ignore\n const stores = Object.values(rootStore.instance).filter((i) => i._active > 0);\n //@ts-ignore\n const promise: PromiseState<any>[] = stores.reduce((p, c) => {\n //@ts-ignore\n const promise = Object.values(c).filter((i: PromiseState<any>) => !!i?.call);\n //@ts-ignore\n return [...p, ...promise];\n }, []);\n const autoUpdate = promise.filter((i) => i.autoUpdate);\n console.log({ autoUpdate });\n\n autoUpdate.forEach((i) => !i.loading.value && i.call());\n }, [wallet.updateTicker, router.asPath]);\n return <></>;\n });\n\n static use<T extends { [Key in keyof T]: Store }, U extends { [Key in keyof T]: T[Key] extends Store ? { [K in keyof T[Key]]?: any } : never }>(stores: T, promises?: U) {\n useEffect(() => {\n Object.keys(stores).forEach((storeName) => {\n const store = stores[storeName];\n Object.keys(store).forEach((key) => {\n const i = store[key];\n //@ts-ignore\n if (!!i?.getOrCall && (i.autoInit || !!promises?.[storeName][key])) {\n if (!store._active) store._active = 0;\n store._active += 1;\n i.getOrCall();\n }\n });\n });\n\n return () => {\n Object.values(stores).forEach((store) => {\n //@ts-ignore\n if (!store._active) store._active = 0;\n //@ts-ignore\n store._active -= 1;\n //@ts-ignore\n if (store.autoClean !== false && !store._active > 0) {\n //@ts-ignore\n Object.entries(store)\n //@ts-ignore\n .filter(([key, i]) => !!i?.value)\n .forEach(([key, i]) => {\n console.log('clean', key);\n //@ts-ignore\n i.value = null;\n });\n }\n });\n\n if (!!promises) {\n //@ts-ignore\n Object.entries(promises).forEach(([storaName, promise]) => {\n const store = stores[storaName];\n //@ts-ignore\n Object.keys(promise).forEach((key) => {\n const promise = store[key];\n console.log('clean', key);\n if (!promise) return\n if (!promise._active) promise._active = 0;\n\n promise._active -= 1;\n //@ts-ignore\n if (!promise._active > 0) {\n promise.value = null;\n }\n });\n });\n }\n };\n }, []);\n return stores;\n }\n}\n","import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { RootStore } from \"../store/root\";\n\nexport const AppProvider = observer(({ children }: { children?: React.ReactNode }) => {\n const rootStore = RootStore.init()\n return (\n <>\n {rootStore.providers.map((store) => {\n const Component: any = store.provider;\n return <Component rootStore={rootStore} key={store.sid} />;\n })}\n {children && children}\n </>\n )\n})"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AppProvider, AutoMan, BigNumberInputState, BigNumberState, ObjectPool, PromiseHook, StorageListState, StorageState } from './chunk-
|
|
1
|
+
export { AppProvider, AutoMan, BigNumberInputState, BigNumberState, ObjectPool, PromiseHook, StorageListState, StorageState } from './chunk-KZTNDLU6.mjs';
|
|
2
2
|
export { BooleanState, NumberState, PromiseState, Store, StringState, ValueState } from './chunk-GPPSD2BO.mjs';
|
|
3
3
|
import './chunk-VTQ6GTX2.mjs';
|
|
4
4
|
import './chunk-NCGC2KDE.mjs';
|
package/dist/wallet.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { WalletConfigStore, WalletStore, WalletRpcStore } from './chunk-
|
|
2
|
-
export { ConnectLedger, DisconnectLedger, WalletConfigStore, WalletHistoryStore, WalletRpcStore, WalletStore } from './chunk-
|
|
1
|
+
import { WalletConfigStore, WalletStore, WalletRpcStore } from './chunk-KZTNDLU6.mjs';
|
|
2
|
+
export { ConnectLedger, DisconnectLedger, WalletConfigStore, WalletHistoryStore, WalletRpcStore, WalletStore } from './chunk-KZTNDLU6.mjs';
|
|
3
3
|
import './chunk-GPPSD2BO.mjs';
|
|
4
4
|
import './chunk-VTQ6GTX2.mjs';
|
|
5
5
|
import './chunk-NCGC2KDE.mjs';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dappworks/kit",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.47",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./dist/index.mjs",
|
|
6
6
|
"types": "./dist/index.d.mts",
|
|
@@ -173,4 +173,4 @@
|
|
|
173
173
|
"reflect-metadata": "^0.2.2",
|
|
174
174
|
"virtua": "0.33.7"
|
|
175
175
|
}
|
|
176
|
-
}
|
|
176
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../store/standard/PromiseHook.ts","../store/standard/BigNumberState.ts","../store/standard/BigNumberInputState.ts","../store/standard/StorageState.ts","../store/standard/StorageListState.ts","../store/standard/ObjectPool.ts","../module/Wallet/walletConfigStore.ts","../module/Wallet/walletPluginStore.tsx","../module/Wallet/SuccessTxDialog/index.tsx","../module/Wallet/ledger.tsx","../module/Wallet/index.tsx","../module/AutoMain/index.tsx","../module/AppProvider.tsx"],"names":["BigNumber","makeAutoObservable","React","Icon","_a","error","observer","useEffect","promise","rootStore"],"mappings":"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","file":"chunk-Y4YJJN5R.mjs","sourcesContent":["import { observable } from \"mobx\";\n\nexport class KV {\n //@ts-ignore\n static datas = observable();\n}\n\nexport abstract class ContractBase {\n // chainId?: number;\n // address?: string;\n}\n\nexport type ContractClass<T extends ContractBase> = new (args: Partial<T>) => T;\n\nexport type PromiseHookData<T, U> = { value: Awaited<U>; get: T; call: T; func: T; loading: boolean; errorRetry: number };\n\nexport class PromiseHook {\n static entities = observable([]);\n static Get<T extends ContractBase>(\n cls: ContractClass<T>,\n ): (args: { args: Partial<T>; id?: string; select?: { [key in keyof Partial<T>]: boolean }; unselect?: { [key in keyof Partial<T>]: boolean } }) => Promise<T & { refresh: () => Promise<void> }> {\n try {\n return async ({ args, select, id, unselect }) => {\n let instance: any;\n //@ts-ignore\n if (!id || !this.entities[id]) {\n instance = new cls(args);\n\n instance.refresh = async () => {\n const hooks = Object.entries(instance)\n .filter((i) => {\n if (!this.isPromiseHook(instance[i[0]])) return false;\n //@ts-ignore\n if (i[1].lazy) return false;\n if (select && !select[i[0]]) return false;\n if (unselect && unselect[i[0]]) return false;\n return true;\n })\n .map((i) => {\n const hook = instance[i[0]];\n return hook;\n });\n\n await Promise.all(hooks.map((i) => i.call()));\n };\n if (id) {\n //@ts-ignore\n this.entities[id] = instance;\n }\n } else {\n instance = this.entities[id!];\n }\n\n await instance.refresh();\n return instance;\n };\n } catch (e) {\n throw e;\n }\n }\n\n static isPromiseHook(target) {\n return target?._type == \"promiseHook\";\n }\n\n //ttl : ms\n static wrap<T extends (...args: any[]) => Promise<any>, U = ReturnType<T>>({ func, defaultValue, lazy }: { func: T; defaultValue?: Awaited<U>; lazy?: boolean }): PromiseHookData<T, U> {\n let context;\n const call = (args) => {\n context.loading = true;\n if (!context._call) {\n context._call = func(args)\n .then((i) => {\n context.value = i;\n context.loading = false;\n context._call = null;\n return i;\n })\n .catch((i) => {\n console.error(i, func);\n context.value = defaultValue;\n context._call = null;\n context.loading = false;\n throw i;\n });\n }\n\n return context._call;\n };\n const get = async (args: any) => {\n if (!context.value) {\n return call(args);\n }\n return context.value;\n };\n\n if (!context) {\n context = observable({\n _type: \"promiseHook\",\n _value: defaultValue,\n get value() {\n return context[\"_value\"];\n },\n set value(val) {\n context[\"_value\"] = val;\n },\n get,\n lazy,\n\n loading: false,\n call,\n defaultValue,\n toJSON() {\n return context.value;\n },\n toString() {\n return context.value;\n },\n });\n }\n\n return context;\n }\n}\n","import BigNumber from \"bignumber.js\";\nimport { makeAutoObservable } from \"mobx\";\nimport { helper } from \"../../lib/helper\";\n\nexport class BigNumberState {\n value = new BigNumber(0);\n loading = false;\n decimals = 18;\n fixed = 6;\n formatter?: Function;\n constructor(args: Partial<BigNumberState>) {\n Object.assign(this, args);\n makeAutoObservable(this, {\n getFormat: false,\n });\n }\n get format() {\n if (this.loading) return \"...\";\n return this.getFormat();\n }\n\n getFormat({ decimals = this.decimals, fixed = this.fixed }: { decimals?: number; fixed?: number } = {}) {\n if (this.loading) return \"...\";\n if (this.formatter) return this.formatter(this);\n return helper.number.toPrecisionFloor(new BigNumber(this.value).dividedBy(10 ** decimals).toFixed(), {\n decimals: fixed,\n });\n }\n\n setDecimals(decimals: number) {\n this.decimals = decimals;\n }\n\n setValue(value: BigNumber) {\n this.value = value;\n this.setLoading(false);\n }\n\n setLoading(val) {\n this.loading = val;\n }\n}\n","import BigNumber from 'bignumber.js';\nimport { makeAutoObservable } from 'mobx';\nimport { helper } from '../../lib/helper';\nexport class BigNumberInputState {\n value = new BigNumber(0);\n format = '';\n loading = false;\n decimals = 18;\n formatter?: Function;\n constructor(args: Partial<BigNumberInputState>) {\n Object.assign(this, args);\n makeAutoObservable(this);\n }\n get noDecimasValue(): BigNumber {\n return new BigNumber(this.value).dividedBy(10 ** this.decimals);\n }\n setValue(value: any) {\n this.value = new BigNumber(value);\n // this.format = helper.number.toPrecisionFloor(new BigNumber(this.value).dividedBy(10 ** this.decimals).toFixed());\n this.format = helper.number.warpBigNumber(this.value.toFixed(), this.decimals, { format: '0.000', fallback: '' }).format;\n this.setLoading(false);\n }\n setFormat(val: any) {\n this.format = val;\n // this.format = helper.number.toPrecisionFloor(this.format);\n // this.format = helper.number.warpBigNumber(this.value.toFixed(), this.decimals, { format: '0.000', fallback: '' }).format;\n this.value = new BigNumber(val).multipliedBy(10 ** this.decimals);\n }\n setLoading(val: boolean) {\n this.loading = val;\n }\n setDecimals(val: number) {\n this.decimals = val;\n }\n get isZero(): boolean {\n return this.value.isZero() && this.format == '';\n }\n}\n","import { makeAutoObservable } from \"mobx\";\n\nexport class StorageState<T> {\n key: string;\n value: T | any = null;\n default: T | any = null;\n constructor(args: Partial<StorageState<T>>) {\n Object.assign(this, args);\n makeAutoObservable(this);\n this.load();\n }\n\n static safeParse(val: any) {\n try {\n return JSON.parse(val);\n } catch (error) {\n return val;\n }\n }\n\n load() {\n try {\n if (typeof window == 'undefined') return\n const value = window?.localStorage?.getItem(this.key);\n this.value = StorageState.safeParse(value);\n if (this.value == null) {\n this.value = this.default;\n }\n return this.value;\n } catch (error) {\n console.error(error);\n return null;\n }\n }\n\n save(value?: T) {\n try {\n if (typeof window == 'undefined') return\n if (value !== null || value !== undefined) {\n this.value = value;\n }\n window?.localStorage.setItem(this.key, JSON.stringify(value));\n } catch (error) {\n console.error(error);\n return null;\n }\n }\n\n setValue(value?: T) {\n this.save(value);\n }\n\n clear() {\n try {\n if (typeof window == 'undefined') return\n window?.localStorage.removeItem(this.key);\n } catch (error) {\n return null;\n }\n }\n}\n","import { makeAutoObservable } from \"mobx\";\n\nimport { helper } from \"../../lib/helper\";\nimport { _ } from \"../../lib/lodash\";\n\nexport class StorageListState<T = any> {\n key: string;\n list: T[] = [];\n\n static safeParse(val: any) {\n try {\n return JSON.parse(val);\n } catch (error) {\n return val;\n }\n }\n\n constructor(args: { key: string; }) {\n Object.assign(this, args);\n makeAutoObservable(this);\n this.load();\n }\n\n\n load() {\n try {\n const value = localStorage.getItem(this.key);\n if (value) {\n this.list = StorageListState.safeParse(value);\n }\n return StorageListState.safeParse(value)\n } catch (error) {\n console.error(error);\n return null;\n }\n }\n\n\n push(value: T) {\n this.list.push(value);\n this.save();\n }\n\n remove(index: number) {\n this.list.splice(index, 1);\n this.save();\n }\n\n private save() {\n try {\n localStorage.setItem(this.key, JSON.stringify(this.list));\n } catch (error) {\n }\n }\n\n clear() {\n try {\n localStorage.removeItem(this.key);\n this.list = [];\n } catch (error) {\n }\n }\n}\n","\n\nexport class ObjectPool {\n static pool: { [key: string]: any } = {};\n\n static get<T extends (...args: any[]) => any, U = ReturnType<T>>(key: string, func: T): U {\n if (!ObjectPool.pool[key]) {\n ObjectPool.pool[key] = func();\n }\n return ObjectPool.pool[key];\n }\n}","import { Chain, getDefaultConfig } from \"@rainbow-me/rainbowkit\";\nimport { walletConnectWallet, metaMaskWallet, iopayWallet, okxWallet, binanceWallet, safeWallet, gateWallet } from \"@rainbow-me/rainbowkit/wallets\";\nimport { ObjectPool, Store } from \"../..\";\n\nexport class WalletConfigStore implements Store {\n sid = \"WalletConfigStore\";\n autoObservable = true;\n\n appName = \"Dappkit\";\n projectId = \"b69e844f38265667350efd78e3e1a5fb\";\n // @ts-ignore\n supportedChains: Chain[];\n defaultChainId = 4689;\n updateTicker = 1;\n walletUpdateTick = 0;\n isConnect = false;\n isInSafeApp = false;\n // This mode to resolve and walletClient and nextui in some extreme cases cause page infinite redraw bugs\n compatibleMode = true;\n\n constructor(args: Partial<WalletConfigStore>) {\n Object.assign(this, args);\n }\n\n set(params: Partial<WalletConfigStore>) {\n Object.assign(this, params);\n this.updateTicker += 1;\n }\n\n get reconnectOnMount() {\n if (!this.compatibleMode) return true;\n\n if (!this.isConnect && this.walletUpdateTick == 0) {\n return true;\n }\n if (!this.isConnect && this.walletUpdateTick != 0) {\n return false;\n }\n if (this.isConnect) {\n return true;\n }\n }\n\n get rainbowKitConfig() {\n return ObjectPool.get(`rainbowKitConfig-${this.supportedChains?.map((i) => i.id).join(\"-\")}`, () => {\n return getDefaultConfig({\n pollingInterval: 2500,\n appName: this.appName,\n projectId: this.projectId,\n //@ts-ignore\n chains: this.supportedChains,\n wallets: [\n {\n groupName: \"Recommended\",\n wallets: [iopayWallet, metaMaskWallet],\n },\n {\n groupName: \"Others\",\n wallets: [metaMaskWallet, walletConnectWallet, iopayWallet, okxWallet, binanceWallet, safeWallet, gateWallet],\n },\n ],\n });\n });\n }\n}\n","import React from 'react';\nimport { Icon } from \"@iconify/react\";\nimport { RootStore } from \"../../store\";\nimport { Store } from \"../../store/standard/base\";\nimport { StorageState } from '../../store/standard/StorageState';\nimport { ToastPlugin } from \"../Toast/Toast\";\nimport { WalletTransactionHistoryType } from \"./type\";\nimport { WalletStore } from \".\";\nimport { helper } from \"../../lib/helper\";\nimport { WalletConfigStore } from './walletConfigStore';\nimport { toHex } from 'viem';\n\nconst defaultRPCList = [\n { name: 'https://babel-api.fastblocks.io', latency: 0, height: 0, custom: false },\n { name: 'https://babel-api.mainnet.iotex.one', latency: 0, height: 0, },\n { name: 'https://babel-api.mainnet.iotex.io', latency: 0, height: 0, },\n { name: 'https://iotex-network.rpc.thirdweb.com', latency: 0, height: 0, },\n // { name: 'https://iotexrpc.com', latency: 0, height: 0, },\n { name: 'https://iotex.api.onfinality.io/public', latency: 0, height: 0, },\n // { name: 'https://rpc.ankr.com/iotex', latency: 0, height: 0, },\n]\n\nexport class WalletRpcStore implements Store {\n sid = 'WalletPluginStore';\n autoObservable = true\n curRpc = new StorageState({ default: 'https://babel-api.mainnet.iotex.one', key: 'curRPC-v2', value: 'https://babel-api.mainnet.iotex.one' });\n isAutoSelectRpc = new StorageState({ key: 'isAutoSelectRpc', default: true });\n customRpc = '';\n rpcList = new StorageState({ key: 'customRpcList-v2', default: defaultRPCList, value: [] })\n showCustomRpc = false;\n get currentRpc() {\n console.log(this.rpcList.value?.find(i => i.name == this.curRpc))\n return this.rpcList.value?.find(i => i.name == this.curRpc.value) || null\n }\n addCustomRpc() {\n const item = { name: this.customRpc, latency: 0, height: 0, custom: true }\n if (defaultRPCList.find(i => i.name === item.name)) {\n return RootStore.Get(ToastPlugin).error('Rpc already exists')\n }\n if (this.rpcList.value) {\n this.rpcList.save([...this.rpcList.value, item])\n this.refresh()\n return\n }\n this.rpcList.save([...defaultRPCList, item])\n this.refresh()\n }\n async addToMetamask(url) {\n try {\n if (typeof window == 'undefined') return;\n await window?.ethereum?.request({\n method: 'wallet_addEthereumChain',\n params: [{\n chainId: `0x${(4689).toString(16)}`,\n chainName: 'IoTeX Mainnet',\n nativeCurrency: {\n name: 'IoTeX',\n symbol: 'IOTX',\n decimals: 18,\n },\n rpcUrls: [url],\n blockExplorerUrls: ['https://iotexscan.io'],\n }]\n });\n RootStore.Get(ToastPlugin).success('Network added');\n console.log('Network added');\n } catch (error) {\n console.error('Failed to add network', error);\n }\n }\n async switchOrAddChain(chainId: number) {\n return new Promise(async (resolve, reject) => {\n try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: toHex(chainId) }],\n });\n resolve(true)\n } catch (switchError) {\n if (switchError.code === 4902) {\n try {\n await this.addToMetamaskById(chainId)\n } catch (addError) {\n reject(addError)\n }\n } else {\n reject(switchError)\n }\n }\n })\n }\n async addToMetamaskById(id: number) {\n return new Promise(async (resolve, reject) => {\n try {\n if (typeof window == 'undefined') return;\n const chain = RootStore.Get(WalletConfigStore).supportedChains.find(i => i.id == id)\n const res = await window.ethereum.request({\n method: 'wallet_addEthereumChain',\n params: [{\n \"chainId\": toHex(chain.id),\n \"chainName\": chain.name,\n \"nativeCurrency\": {\n \"name\": chain.nativeCurrency.name,\n \"symbol\": chain.nativeCurrency.symbol,\n \"decimals\": chain.nativeCurrency.decimals,\n },\n \"rpcUrls\": JSON.parse(JSON.stringify(chain.rpcUrls.default.http)),\n \"blockExplorerUrls\": [chain.blockExplorers.default.url],\n }]\n });\n console.log(res)\n resolve(res)\n } catch (switchError) {\n reject(false)\n }\n })\n }\n refresh() {\n this.showCustomRpc = false\n this.customRpc = ''\n setTimeout(() => {\n this.testRpc()\n }, 500)\n }\n latencyColor(latency: number) {\n if (latency < 0) {\n return 'text-red-500'\n }\n if (latency < 1) {\n return 'text-green-500'\n }\n if (latency < 2) {\n return 'text-yellow-500'\n }\n return 'text-red-500'\n }\n async testRpcFunction(url: string): Promise<{ url: string, lentency: number, height: number }> {\n const start = performance.now();\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n method: 'eth_getBlockByNumber',\n params: [\"latest\", false],\n id: 1,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Error from server: ${response.status}`);\n }\n const res = await response.json();\n console.log(res)\n const end = performance.now();\n return { url, lentency: Number(helper.number.numberFormat(((end - start) / 1000), '0.000', { fallback: '-1' })), height: parseInt(res.result.number, 16) };\n } catch (error) {\n console.error('RPC Latency Test Failed:', error);\n return { url, lentency: -1, height: -1 };\n }\n }\n testRpc() {\n this.rpcList?.value.forEach(i => {\n this.testRpcFunction(i.name).then(res => {\n i.latency = res.lentency\n i.height = res.height\n })\n })\n this.rpcList.save(this.rpcList.value)\n }\n removeRpc(name: string) {\n this.rpcList.save(this.rpcList.value.filter(i => i.name !== name))\n }\n scoreIcon(score: number) {\n if (score < 0) {\n return <Icon icon=\"codicon:error\" width=\"18\" height=\"18\" style={{ color: \"#FF0000\" }} />\n }\n if (score < 1) {\n return <Icon icon=\"icon-park-solid:check-one\" width=\"18\" height=\"18\" style={{ color: \"#289726\" }} />\n }\n if (score < 2) {\n return <Icon icon=\"bxs:error\" width=\"18\" height=\"18\" style={{ color: \"#FFA500\" }} />\n }\n return <Icon icon=\"codicon:error\" width=\"18\" height=\"18\" style={{ color: \"#FF0000\" }} />\n }\n get wallet() {\n return RootStore.Get(WalletStore)\n }\n // debounceAutoSelectRpc = pDebounce(this.autoSelectRpc, 3000)\n async autoSelectRpc() {\n console.log('autoSelectRpc')\n for (let i = 0; i < this.rpcList.value.length; i++) {\n const item = this.rpcList.value[i]\n const res = await this.testRpcFunction(item.name)\n if (res.lentency != -1 || res.height > 0) {\n this.curRpc.save(item.name)\n break;\n }\n }\n }\n}\n\nexport class WalletHistoryStore implements Store {\n sid = 'WalletHistoryStore';\n isRender = false\n autoObservable = true\n set(params: Partial<WalletHistoryStore>) {\n Object.assign(this, params);\n }\n private history = new StorageState<WalletTransactionHistoryType[] | null>({ value: [], key: 'history' });\n get historyList(): WalletTransactionHistoryType[] {\n if (this.isRender) {\n return this.history.value\n }\n return []\n }\n recordHistory(item: WalletTransactionHistoryType) {\n let value: WalletTransactionHistoryType[] | null = this.history.load();\n if (!value) {\n value = [item];\n } else {\n value = [...value, item];\n }\n this.history.setValue(value);\n }\n updateHistoryStatusByTx(tx: string | null, status: 'loading' | 'success' | 'fail') {\n let value: WalletTransactionHistoryType[] | null = this.history.load();\n if (!value) {\n return;\n }\n value = value.map((i) => {\n if (i.tx == tx) {\n i.status = status;\n return i;\n }\n if (!tx) {\n i.status = status;\n }\n return i;\n });\n this.history.setValue(value);\n }\n clearHistory() {\n this.history.setValue(null);\n }\n}\n","import { Icon } from \"@iconify/react\";\nimport { observer } from \"mobx-react-lite\";\nimport React from \"react\";\nimport { RootStore } from \"../../../store\";\nimport { DialogStore } from \"../../../module/Dialog\";\n\ninterface IProps {\n msg: string,\n hash: string,\n}\n\nconst SuccessTxDialog = observer((props: IProps) => {\n return <div className='flex-col gap-4 py-10'>\n <div className='w-full flex items-center justify-center'>\n <Icon icon=\"icon-park-solid:check-one\" width=\"48\" height=\"48\" className='text-green-500' /></div>\n <div className='text-2xl font-[900] text-center mt-4'>{props.msg}</div>\n <div className='flex items-center justify-center text-green-500 text-sm mt-6 gap-2 cursor-pointer hover:text-green-600 transition'\n onClick={e => window.open(`https://iotexscan.io/tx/${props.hash}`, '_blank')}>View on IoTeXScan <Icon icon=\"material-symbols:chip-extraction-rounded\" width=\"18\" height=\"18\" /></div>\n </div>\n})\nexport const ShowSuccessTxDialog = ({ msg, hash }) => {\n RootStore.Get(DialogStore).setData({\n title: '',\n content: <SuccessTxDialog msg={msg} hash={hash} />,\n isOpen: true,\n })\n}","import Transport from \"@ledgerhq/hw-transport\";\nimport TransportWebUSB from \"@ledgerhq/hw-transport-webusb\";\nimport Eth from \"@ledgerhq/hw-app-eth\";\nimport { ethers } from \"ethers\";\nimport { ObjectPool } from \"../../store/standard/ObjectPool\";\nimport { RootStore } from \"../../store\";\nimport { WalletStore } from \".\";\nimport { ToastPlugin } from \"../Toast/Toast\";\n\nlet _transport: Transport | null = null;\nlet _signer: LedgerSigner | null = null;\n\nexport async function createTransport(): Promise<Transport> {\n if (_transport) {\n return _transport;\n }\n try {\n const res = await TransportWebUSB.create();\n console.log('createTransport res', res);\n _transport = res;\n return res;\n } catch (error) {\n console.error('Error creating transport', error);\n throw error;\n }\n}\n\nexport async function getAddress(transport: Transport, path: string): Promise<string> {\n const eth = new Eth(transport);\n const address = await eth.getAddress(path);\n return address.address;\n}\n\nexport function waiter(duration: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n}\n\nexport const GlobalLedgerProvider = ObjectPool.get('provider', async () => {\n return new ethers.providers.JsonRpcProvider(\"https://babel-api.mainnet.iotex.io\");\n});\n\nexport const GlobalLedgerSigner = async () => {\n try {\n if (_signer) {\n return _signer;\n }\n const transport = await createTransport();\n _signer = new LedgerSigner(transport, await GlobalLedgerProvider, \"44'/304'/0'/0/0\");\n return _signer;\n } catch (error) {\n console.error('Error creating ledger signer', error);\n RootStore.Get(ToastPlugin).error(error.message ?? 'Failed to connect to Ledger');\n RootStore.Get(WalletStore).isLedger = false;\n return null;\n }\n}\n\nexport const ConnectLedger = async () => {\n RootStore.Get(WalletStore).isLedger = true;\n console.log('ConnectLedger');\n const signer = await GlobalLedgerSigner();\n console.log('signer', signer);\n const interval = setInterval(async () => {\n try {\n const address = await signer?.getAddress()\n if (address) {\n RootStore.Get(WalletStore).set({\n account: address as `0x${string}`,\n isConnect: true,\n });\n // const transport = await createTransport();\n // RootStore.Get(WalletStore).walletClient = createWalletClient({\n // account: address as `0x${string}`,\n // chain: iotex,\n // //@ts-ignore\n // transport: (transport)\n // }).extend(publicActions)\n clearInterval(interval);\n return signer;\n }\n } catch (error) {\n console.error('Error getting address', error);\n }\n }, 1000);\n};\n\nexport const DisconnectLedger = () => {\n RootStore.Get(WalletStore).set({\n isConnect: false,\n isLedger: false,\n });\n};\n\nexport class LedgerSigner extends ethers.Signer {\n readonly path: string\n readonly _eth: Promise<Eth>;\n\n constructor(transport: Transport, provider?: ethers.providers.Provider, path?: string) {\n super();\n\n ethers.utils.defineReadOnly(this, \"path\", path || \"44'/304'/0'/0/0\");\n //@ts-ignore\n ethers.utils.defineReadOnly(this, \"provider\", provider || null);\n\n const eth = new Eth(transport);\n const _eth = eth.getAppConfiguration().then((config) => {\n return eth;\n }, (error) => {\n return Promise.reject(error);\n });\n ethers.utils.defineReadOnly(this, \"_eth\", _eth);\n }\n\n _retry<T = any>(callback: (eth: Eth) => Promise<T>, timeout?: number): Promise<T> {\n return new Promise(async (resolve, reject) => {\n if (timeout && timeout > 0) {\n setTimeout(() => { reject(new Error(\"timeout\")); }, timeout);\n }\n\n const eth = await this._eth;\n\n // Wait up to 5 seconds\n for (let i = 0; i < 50; i++) {\n try {\n const result = await callback(eth);\n return resolve(result);\n } catch (error) {\n if (error.id !== \"TransportLocked\") {\n return reject(error);\n }\n }\n await waiter(100);\n }\n\n return reject(new Error(\"timeout\"));\n });\n }\n\n async getAddress(): Promise<string> {\n const account = await this._retry((eth) => eth.getAddress(this.path));\n return ethers.utils.getAddress(account.address);\n }\n\n async signMessage(message: ethers.utils.Bytes | string): Promise<string> {\n if (typeof (message) === 'string') {\n message = ethers.utils.toUtf8Bytes(message);\n }\n\n const messageHex = ethers.utils.hexlify(message).substring(2);\n\n const sig = await this._retry((eth) => eth.signPersonalMessage(this.path, messageHex));\n sig.r = '0x' + sig.r;\n sig.s = '0x' + sig.s;\n return ethers.utils.joinSignature(sig);\n }\n\n async signTransaction(transaction: ethers.providers.TransactionRequest): Promise<string> {\n const tx = await ethers.utils.resolveProperties(transaction);\n const baseTx: ethers.utils.UnsignedTransaction = {\n chainId: (tx.chainId || undefined),\n data: (tx.data || undefined),\n gasLimit: (tx.gasLimit || undefined),\n gasPrice: (tx.gasPrice || undefined),\n nonce: (tx.nonce ? ethers.BigNumber.from(tx.nonce).toNumber() : undefined),\n to: (tx.to || undefined),\n value: (tx.value || undefined),\n };\n\n const unsignedTx = ethers.utils.serializeTransaction(baseTx).substring(2);\n const sig = await this._retry((eth) => eth.signTransaction(this.path, unsignedTx));\n\n return ethers.utils.serializeTransaction(baseTx, {\n v: ethers.BigNumber.from(\"0x\" + sig.v).toNumber(),\n r: (\"0x\" + sig.r),\n s: (\"0x\" + sig.s),\n });\n }\n\n connect(provider: ethers.providers.Provider): ethers.Signer {\n //@ts-ignore\n return new LedgerSigner(provider, this.path);\n }\n}","import React from 'react';\nimport { useEffect } from \"react\";\nimport { Store } from \"../../store/standard/base\";\nimport { PublicClient, type HttpTransport, WalletClient, TransactionReceipt, createWalletClient, custom, publicActions, SwitchChainErrorType, UserRejectedRequestError } from \"viem\";\nimport { PromiseHook } from '../../store/standard/PromiseHook';\nimport { AddressMode, WalletTransactionHistoryType } from \"./type\";\nimport EventEmitter from \"events\";\nimport { SwitchChainMutateAsync } from \"wagmi/query\";\nimport { Config, useAccount, useConnect, useDisconnect, useSwitchChain, useWalletClient, } from \"wagmi\";\nimport { Chain, useConnectModal } from '@rainbow-me/rainbowkit';\nimport { RootStore } from \"../../store\";\nimport { ToastPlugin } from \"../Toast/Toast\";\nimport { WalletHistoryStore, WalletRpcStore } from './walletPluginStore';\nimport SafeAppsSDK, { TransactionStatus } from '@safe-global/safe-apps-sdk';\nimport { ShowSuccessTxDialog } from './SuccessTxDialog'\nimport { WalletConfigStore } from \"./walletConfigStore\";\nimport { AIem } from \"../../aiem\";\nimport { helper } from \"../../lib/helper\";\nimport { DialogStore } from '../Dialog';\nimport { Icon } from '@iconify/react';\nimport { Card, Input } from '@nextui-org/react';\nimport { GlobalLedgerSigner } from './ledger';\n\nexport class WalletStore implements Store {\n sid = 'wallet';\n autoObservable = true;\n account: `0x${string}` = null;\n isSuccessDialogOpen = false;\n // isInSafeApp = false;\n get isInSafeApp() {\n return RootStore.Get(WalletConfigStore).isInSafeApp\n }\n isLedger = false;\n isConnect = false;\n walletClient: WalletClient;\n event = new EventEmitter();\n switchChain: SwitchChainMutateAsync<Config, unknown> | undefined;\n updateTicker = 0;\n addressMode: AddressMode = '0x';\n isIoTeXChain: boolean = false;\n setAddressMode(mode: AddressMode) {\n this.addressMode = mode;\n localStorage.setItem('addressMode', mode);\n }\n get accountFormat() {\n return this.account ? helper.address.convertAddress(this.addressMode, this.account) : '-';\n }\n get connectAccountEllipsisFormat() {\n return this.account ? helper.string.truncate(helper.address.convertAddress(this.addressMode, this.account), 11, '...') : '-';\n }\n get accountEllipsisFormat() {\n return this.account ? helper.string.truncate(helper.address.convertAddress(this.addressMode, this.account), 16, '...') : '-';\n }\n get supportedChains() {\n return RootStore.Get(WalletConfigStore).supportedChains\n }\n chain: Chain | undefined;\n openConnectModal: any;\n disconnect: any;\n balance = PromiseHook.wrap({\n func: async () => {\n if (!this.publicClient || !this.account) return helper.number.warpBigNumber('0');\n const balance = await this.publicClient.getBalance({\n address: this.account,\n });\n if (balance) {\n return helper.number.warpBigNumber(balance?.toString() ?? '0');\n }\n },\n });\n\n constructor(args?: Partial<WalletStore>) {\n Object.assign(this, args);\n }\n\n use() {\n // const { data: walletClient, isSuccess } = useWalletClient();\n const { chain, address, isConnected } = useAccount();\n const { switchChainAsync } = useSwitchChain();\n const { openConnectModal } = useConnectModal();\n const { connect } = useConnect();\n const { disconnect } = useDisconnect();\n const walletConfigStore = RootStore.Get(WalletConfigStore);\n this.set({\n //@ts-ignore\n connect,\n // @ts-ignore \n // walletClient,\n openConnectModal,\n switchChain: switchChainAsync,\n disconnect\n })\n\n useEffect(() => {\n RootStore.Get(WalletHistoryStore).set({ isRender: true })\n this.set({\n isConnect: isConnected,\n account: address,\n chain,\n })\n if (chain?.id == 4689) {\n this.isIoTeXChain = true\n } else {\n this.isIoTeXChain = false\n }\n walletConfigStore.set({\n isConnect: isConnected,\n })\n if (this.account) {\n this.updateTicker++;\n walletConfigStore.set({\n walletUpdateTick: this.updateTicker,\n })\n this.event.emit('walletAccount:ready');\n }\n // this.useWalletClientWithCompatibleMode()\n }, [address, isConnected, chain])\n\n useEffect(() => {\n setTimeout(() => {\n this.balance.call()\n }, 1500)\n }, [this.updateTicker])\n }\n\n private useWalletClientWithCompatibleMode() {\n if (RootStore.Get(WalletConfigStore).compatibleMode) {\n if (this.account && this.chain) {\n // @ts-ignore - Type instantiation is too deep, but the code works correctly\n this.walletClient = createWalletClient({\n account: this.account,\n chain: this.chain,\n transport: custom(window.ethereum! as any),\n pollingInterval: 2500,\n }).extend(publicActions)\n }\n console.log(this.walletClient, 'this.walletClientxxx')\n }\n }\n\n useWalletClientWithoutCompatibleMode() {\n const { data: walletClient, isSuccess } = useWalletClient({\n query: {\n refetchInterval: 2500\n }\n })\n useEffect(() => {\n if (isSuccess && walletClient) {\n this.set({ walletClient })\n }\n }, [walletClient, isSuccess]);\n }\n\n //always return or return default chain\n get publicClient(): PublicClient<HttpTransport, Chain, any, any> {\n if (this.chain && this.supportedChains.some(i => i.id === this.chain.id)) {\n if (this.chain.id == 4689) {\n return AIem.PubClient('4689', {\n rpcUrls: { default: { http: [RootStore.Get(WalletRpcStore).curRpc.value] } },\n multicall: true,\n pollingInterval: 2500\n })\n }\n return AIem.PubClient(this.chain.id.toString(), { pollingInterval: 2500 })\n } else {\n return AIem.PubClient('4689', { pollingInterval: 2500 })\n }\n }\n\n set(args: Partial<WalletStore>) {\n Object.assign(this, args);\n }\n\n toJSON() {\n const { account } = this;\n return { account };\n }\n\n async prepare(chainId?: number): Promise<WalletStore> {\n const walletRpcStore = RootStore.Get(WalletRpcStore)\n return new Promise<WalletStore>(async (res, rej) => {\n try {\n if (this.account) {\n if (this.isLedger) {\n res(this)\n }\n if ((!chainId || (Number(this.chain?.id) == Number(chainId))) && this.walletClient) {\n res(this);\n }\n const interval = setInterval(() => {\n if (this.chain?.id == chainId) {\n try {\n this.useWalletClientWithCompatibleMode()\n res(this);\n } catch (error) {\n console.log(error, 'myerror')\n rej(error);\n }\n clearInterval(interval);\n }\n }, 1000);\n\n if (chainId != this.chain?.id) {\n try {\n await this.walletClient?.switchChain({ id: chainId })\n } catch (error) {\n console.log(error.message)\n if (error?.message?.includes(\"wallet_addEthereumChain\")) {\n const chain = RootStore.Get(WalletConfigStore).supportedChains.find(i => i.id == chainId)\n try {\n await RootStore.Get(WalletRpcStore).addToMetamaskById(chainId)\n await this.walletClient.switchChain({ id: chainId })\n } catch (error) {\n RootStore.Get(DialogStore).setData({\n isOpen: true,\n title: \"Chain Addition Failed\",\n size: '2xl',\n content: <div>\n <Card className='p-2'>\n <div className='p-2 flex items-center justify-center gap-4'>\n <div className='text-yellow-500 text-sm'>We encountered an issue while adding the chain. This might be caused by a compatibility issue with your current plugin. Please try adding the chain manually or review your plugin settings to ensure compatibility.</div>\n </div>\n </Card>\n <div className='flex flex-col gap-4 my-4'>\n <Input\n label=\"Network Name\"\n value={chain.name}\n startContent={\n <Icon icon=\"fluent:rename-24-filled\" width=\"20\" height=\"20\" />\n }\n />\n <Input\n label=\"Network RPC\"\n value={chain.rpcUrls.default?.http?.[0]}\n startContent={\n <Icon icon=\"material-symbols:link\" width=\"20\" height=\"20\" />\n }\n />\n <Input\n label=\"Chain ID\"\n value={chain.id.toString()}\n startContent={\n <Icon icon=\"f7:grid-circle-fill\" width=\"20\" height=\"20\" />\n }\n />\n <Input\n label=\"Native Currency Symbol\"\n value={chain.nativeCurrency?.symbol}\n startContent={\n <Icon icon=\"mingcute:coin-fill\" width=\"20\" height=\"20\" />\n }\n />\n <Input\n label=\"Block Explorer URL\"\n value={chain.blockExplorers?.default?.url}\n startContent={\n <Icon icon=\"material-symbols:explore\" width=\"20\" height=\"20\" />\n }\n />\n </div>\n </div>\n })\n console.log(error.message)\n }\n } else {\n rej(error)\n }\n }\n }\n } else {\n this.openConnectModal();\n const interval = setInterval(() => {\n if (this.account) {\n clearInterval(interval);\n res(this);\n }\n }, 1000);\n }\n } catch (error) {\n rej(error);\n }\n });\n }\n\n\n async waitForTransactionReceipt({ hash }) {\n // https://github.com/wevm/wagmi/discussions/3463#discussioncomment-8139187\n if (this.isInSafeApp) {\n // console.log('isInSafeApp', this.isInSafeApp);\n const sdk = new SafeAppsSDK();\n while (true) {\n const queued = await sdk.txs.getBySafeTxHash(hash);\n if (queued.txStatus === TransactionStatus.AWAITING_CONFIRMATIONS || queued.txStatus === TransactionStatus.AWAITING_EXECUTION || queued.txStatus === TransactionStatus.CANCELLED) {\n await new Promise((resolve) => setTimeout(resolve, 2000));\n } else {\n return this.publicClient.waitForTransactionReceipt({ hash: queued.txHash! as `0x${string}` });\n }\n }\n } else {\n return this.publicClient.waitForTransactionReceipt({ hash });\n }\n }\n\n static async SendTx(...args: Parameters<WalletStore['sendTx']>) {\n return RootStore.Get(WalletStore).sendTx(...args);\n }\n static async SendRawTx(...args: Parameters<WalletStore['sendRawTx']>) {\n return RootStore.Get(WalletStore).sendRawTx(...args);\n }\n async sendTx({\n chainId,\n tx,\n autoAlert = true,\n loadingText,\n successText,\n historyItem,\n showSuccessDialog = false,\n onSuccess,\n onError,\n }: {\n chainId: number | string;\n tx: any;\n autoAlert?: boolean;\n loadingText?: string;\n successText?: string;\n showSuccessDialog?: boolean;\n historyItem?: Pick<WalletTransactionHistoryType, 'msg' | 'type'>;\n onSuccess?: ({ receipt }: { receipt: TransactionReceipt }) => Promise<void>;\n onError?: (error: any) => void;\n }) {\n const toast = RootStore.Get(ToastPlugin);\n let hash;\n const historyStore = RootStore.Get(WalletHistoryStore)\n try {\n if (loadingText) toast.loading(loadingText);\n if (!chainId) throw new Error('chainId, address, data is required');\n await RootStore.Get(WalletStore).prepare(Number(chainId));\n hash = await tx();\n if (historyItem) {\n historyStore.recordHistory({ ...historyItem, tx: hash, timestamp: Date.now(), status: 'loading', chainId: Number(chainId) });\n }\n const receipt = await this.waitForTransactionReceipt({ hash });\n if (receipt.status == 'success') {\n if (onSuccess) {\n await onSuccess({ receipt });\n }\n toast.dismiss();\n toast.success('The transaction was successful');\n if (historyItem) {\n if (showSuccessDialog) {\n ShowSuccessTxDialog({ msg: historyItem.msg, hash: hash });\n }\n historyStore.updateHistoryStatusByTx(hash, 'success');\n }\n } else {\n toast.dismiss();\n toast.error('The transaction failed');\n historyStore.updateHistoryStatusByTx(hash, 'fail');\n }\n if (successText) toast.success(successText);\n this.updateTicker++;\n return receipt;\n } catch (error) {\n console.log(error);\n toast.dismiss();\n if (autoAlert) {\n const msg = /reason=\"[A-Za-z0-9_ :\"]*/g.exec(error?.message);\n console.log('sendTx', error?.message);\n if (error?.message?.includes('rejected') || String(error).toLowerCase().includes('rejected') || error?.message?.includes('cancel') || String(error).toLowerCase().includes('cancel') || String(error).toLowerCase().includes('denied')) {\n toast.error('User rejected transaction');\n // onError?.(error);\n return;\n }\n if (error?.message?.includes('The Transaction may not be processed on a block yet') || error?.message?.includes('could not be found')) {\n if (historyItem) {\n historyStore.updateHistoryStatusByTx(hash, 'success');\n }\n toast.success('The transaction was successful');\n return;\n }\n\n if (msg) {\n // toast.error(msg as unknown as string);\n onError?.(new Error(msg as unknown as string || 'Transaction failed'));\n } else {\n if (error?.message.includes('viem')) {\n const messageArr = error?.message.split('\\n');\n console.log('messageArr---', messageArr);\n if (messageArr.length > 0) {\n // toast.error(messageArr[0]);\n onError?.(new Error(messageArr[0] || 'Transaction failed'));\n }\n } else {\n // toast.error(String(error?.message || error));\n onError?.(new Error(error?.message || 'Transaction failed'));\n }\n }\n } else {\n onError?.(error);\n throw error;\n }\n }\n }\n async sendRawTx({\n chainId,\n address,\n data,\n value = '0',\n autoAlert = true,\n onSended,\n onSuccess,\n onError,\n historyItem,\n loadingText,\n showSuccessDialog = false,\n }: {\n loadingText?: string;\n chainId: number | string;\n address: string;\n data: string | null;\n value?: string;\n autoRefresh?: boolean;\n autoAlert?: boolean;\n historyItem?: Pick<WalletTransactionHistoryType, 'msg' | 'type'>;\n showTransactionSubmitDialog?: boolean;\n showSuccessDialog?: boolean;\n onSended?: ({ res }: { res: TransactionReceipt }) => void;\n onSuccess?: ({ res }: { res: TransactionReceipt }) => void;\n onError?: (error: any) => void;\n }): Promise<TransactionReceipt | undefined> {\n chainId = Number(chainId);\n const toast = RootStore.Get(ToastPlugin);\n try {\n if (!chainId || !address) throw new Error('chainId, address, is required');\n await RootStore.Get(WalletStore).prepare(chainId);\n if (loadingText) toast.loading(loadingText);\n const historyStore = RootStore.Get(WalletHistoryStore)\n let hash;\n if (this.isLedger) {\n const ledger = await GlobalLedgerSigner();\n console.log(ledger, 'ledger signer')\n const tx = await ledger.sendTransaction({\n to: address as `0x${string}`,\n data: data as `0x${string}`,\n value: value ? BigInt(value) : undefined,\n from: this.account,\n type: 0\n });\n hash = tx?.hash;\n } else {\n // @ts-ignore\n hash = await this.walletClient.sendTransaction({\n account: this.account,\n to: address as `0x${string}`,\n data: data as `0x${string}`,\n value: value ? BigInt(value) : undefined,\n });\n }\n let receipt = await this.waitForTransactionReceipt({ hash });\n if (historyItem) {\n historyStore.recordHistory({ ...historyItem, tx: receipt.transactionHash, timestamp: Date.now(), status: 'loading', chainId: Number(chainId) });\n }\n this.updateTicker++;\n onSended ? onSended({ res: receipt }) : null;\n if (receipt.status == 'success') {\n if (historyItem) {\n if (showSuccessDialog) {\n ShowSuccessTxDialog({ msg: historyItem.msg, hash: hash });\n }\n historyStore.updateHistoryStatusByTx(receipt.transactionHash, 'success');\n }\n onSuccess && onSuccess({ res: receipt });\n toast.dismiss();\n toast.success('The transaction was successful');\n } else {\n if (historyItem) {\n historyStore.updateHistoryStatusByTx(receipt.transactionHash, 'fail');\n }\n onError && onError?.(new Error('The transaction failed'));\n toast.dismiss();\n toast.error('The transaction failed');\n }\n return receipt;\n } catch (error) {\n toast.dismiss();\n onError?.(error)\n console.log(error);\n const msg = /reason=\"[A-Za-z0-9_ :\"]*/g.exec(error?.message);\n // Details: Transaction was rejected\n if (error?.message?.includes('rejected') || error?.message?.includes('cancel') || String(error).toLowerCase().includes('cancel') || String(error).toLowerCase().includes('rejected') || String(error).toLowerCase().includes('user denied')) {\n autoAlert && toast.error('User rejected transaction');\n onError?.(error);\n return;\n }\n if (error?.message?.includes('Price slippage check')) {\n autoAlert && toast.error('The latest pool price has changed, please try to increase the slippage tolerance or reload the page.');\n onError?.(error);\n return;\n }\n if (error?.message.includes('viem')) {\n const messageArr = error?.message.split('\\n');\n console.log('messageArr---', messageArr);\n if (messageArr.length > 0) {\n // toast.error(messageArr[0]);\n onError?.(new Error(messageArr[0] ?? 'Transaction failed'));\n return;\n }\n }\n\n // if (msg) {\n // autoAlert && toast.error(msg as unknown as string);\n // } else {\n // autoAlert && toast.error(String(error.message));\n // }\n if (!autoAlert) {\n onError?.(error);\n throw error;\n }\n }\n }\n async signMessage(message: string) {\n if (this.isLedger) {\n const ledger = await GlobalLedgerSigner();\n return ledger.signMessage(message);\n }\n // @ts-ignore\n return this.walletClient.signMessage(message);\n }\n}\n","import { useEffect } from 'react';\nimport { useRouter } from 'next/router.js';\nimport { observer } from 'mobx-react-lite';\nimport { RootStore, rootStore } from '../../store';\nimport { Store } from \"../../store/standard/base\";\nimport { WalletStore } from '../Wallet';\nimport React from 'react';\n\nexport class AutoMan implements Store {\n sid = 'AutoMan';\n stype = 'Plugin';\n autoObservable?: boolean | undefined;\n\n provider = observer(() => {\n const wallet = RootStore.Get(WalletStore);\n const router = useRouter();\n useEffect(() => {\n console.log('automan proverider')\n // @ts-ignore\n const stores = Object.values(rootStore.instance).filter((i) => i._active > 0);\n //@ts-ignore\n const promise: PromiseState<any>[] = stores.reduce((p, c) => {\n //@ts-ignore\n const promise = Object.values(c).filter((i: PromiseState<any>) => !!i?.call);\n //@ts-ignore\n return [...p, ...promise];\n }, []);\n const autoUpdate = promise.filter((i) => i.autoUpdate);\n console.log({ autoUpdate });\n\n autoUpdate.forEach((i) => !i.loading.value && i.call());\n }, [wallet.updateTicker, router.asPath]);\n return <></>;\n });\n\n static use<T extends { [Key in keyof T]: Store }, U extends { [Key in keyof T]: T[Key] extends Store ? { [K in keyof T[Key]]?: any } : never }>(stores: T, promises?: U) {\n useEffect(() => {\n Object.keys(stores).forEach((storeName) => {\n const store = stores[storeName];\n Object.keys(store).forEach((key) => {\n const i = store[key];\n //@ts-ignore\n if (!!i?.getOrCall && (i.autoInit || !!promises?.[storeName][key])) {\n if (!store._active) store._active = 0;\n store._active += 1;\n i.getOrCall();\n }\n });\n });\n\n return () => {\n Object.values(stores).forEach((store) => {\n //@ts-ignore\n if (!store._active) store._active = 0;\n //@ts-ignore\n store._active -= 1;\n //@ts-ignore\n if (store.autoClean !== false && !store._active > 0) {\n //@ts-ignore\n Object.entries(store)\n //@ts-ignore\n .filter(([key, i]) => !!i?.value)\n .forEach(([key, i]) => {\n console.log('clean', key);\n //@ts-ignore\n i.value = null;\n });\n }\n });\n\n if (!!promises) {\n //@ts-ignore\n Object.entries(promises).forEach(([storaName, promise]) => {\n const store = stores[storaName];\n //@ts-ignore\n Object.keys(promise).forEach((key) => {\n const promise = store[key];\n console.log('clean', key);\n if (!promise) return\n if (!promise._active) promise._active = 0;\n\n promise._active -= 1;\n //@ts-ignore\n if (!promise._active > 0) {\n promise.value = null;\n }\n });\n });\n }\n };\n }, []);\n return stores;\n }\n}\n","import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { RootStore } from \"../store/root\";\n\nexport const AppProvider = observer(({ children }: { children?: React.ReactNode }) => {\n const rootStore = RootStore.init()\n return (\n <>\n {rootStore.providers.map((store) => {\n const Component: any = store.provider;\n return <Component rootStore={rootStore} key={store.sid} />;\n })}\n {children && children}\n </>\n )\n})"]}
|