@dappworks/kit 0.5.36 → 0.5.37

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