1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[626],{7626:(e,t,a)=>{a.d(t,{V:()=>h,_:()=>p});var n=a(5253),l=a(4257),r=a(3293);function s(e){try{let t=localStorage.getItem(e);if(!t)return null;let a=JSON.parse(t);if(!a||"object"!=typeof a||!("data"in a)||!("timestamp"in a)||"number"!=typeof a.timestamp||isNaN(a.timestamp))return localStorage.removeItem(e),null;return a.data}catch(t){console.warn('Cache read error for key "'.concat(e,'":'),t);try{localStorage.removeItem(e)}catch(e){}return null}}function c(e,t,a){try{let a={data:t,timestamp:Date.now()};localStorage.setItem(e,JSON.stringify(a))}catch(t){console.warn('Cache write error for key "'.concat(e,'":'),t)}}function o(e,t){try{let a=localStorage.getItem(e);if(!a)return!1;let n=JSON.parse(a);if(!n||"number"!=typeof n.timestamp)return!1;return Date.now()-n.timestamp<t}catch(e){return!1}}function i(e,t){return"wallet_data_".concat(t,"_").concat(e)}function u(e,t){try{localStorage.removeItem(i(e,t))}catch(e){}}let m={ethereum:"ETH",base:"ETH",arbitrum:"ETH",polygon:"MATIC",solana:"SOL",avalanche:"AVAX",tron:"TRX",bitcoin:"BTC",moonbeamTestnet:"DEV",astarShibuya:"SBY",paseoPassetHub:"PAS"},b=["ethereum","base","arbitrum","polygon","avalanche","bitcoin","solana","tron","polkadot","moonbeamTestnet","astarShibuya","paseoPassetHub"],f=(0,l.createContext)(null);function h(e){let{children:t,userId:a}=e,[h,p]=(0,l.useState)([]),[y,d]=(0,l.useState)([]),[S,g]=(0,l.useState)({balances:!1,transactions:!1}),[v,w]=(0,l.useState)({balances:null,transactions:null}),[I,C]=(0,l.useState)({balances:null,transactions:null}),N=(0,l.useRef)(null),k=(0,l.useRef)(null),E=(0,l.useCallback)(async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!a){p([]),g(e=>({...e,balances:!1}));return}let n=i(a,"balances"),l=s(n);if(l&&o(n,6e4)&&(p(l),g(e=>({...e,balances:!1})),w(e=>({...e,balances:null})),l&&o(n,6e4))){p(l),g(e=>({...e,balances:!1})),w(e=>({...e,balances:null}));try{let e=localStorage.getItem(n);if(e){let t=JSON.parse(e);t.timestamp&&C(e=>({...e,balances:t.timestamp}))}}catch(e){}if(!(Date.now()-(s(n)?(()=>{try{let e=localStorage.getItem(n);if(e)return JSON.parse(e).timestamp||0}catch(e){}return 0})():0)>48e3))return}if(N.current)return N.current;e&&g(e=>({...e,balances:!0})),w(e=>({...e,balances:null}));let u=(async()=>{try{let e=await r.y2.getAssetsAny(a,t),l=function(e){let t=[...e.map(e=>({chain:e.chain,symbol:e.symbol,balance:e.balance,decimals:e.decimals,balanceHuman:e.balanceHuman,isNative:null===e.address,address:e.address,valueUsd:e.valueUsd}))],a=function(e){let t=[];for(let a of b)if(!e.has(a)){let e=m[a]||"TOKEN";t.push({chain:a,symbol:e,balance:"0",decimals:18,balanceHuman:void 0,isNative:!0,address:null})}return t}(new Set(t.map(e=>e.chain)));return[...t,...a]}(e);p(l),C(e=>({...e,balances:Date.now()})),w(e=>({...e,balances:null})),c(n,l,6e4)}catch(t){let e=t instanceof Error?t.message:"Failed to load balances";w(t=>({...t,balances:e})),console.error("Failed to fetch balances:",t)}finally{g(e=>({...e,balances:!1})),N.current=null}})();return N.current=u,u},[a]),H=(0,l.useCallback)(async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!a){d([]),g(e=>({...e,transactions:!1}));return}let t=i(a,"transactions"),n=s(t);if(n&&o(t,3e4)&&(d(n),g(e=>({...e,transactions:!1})),w(e=>({...e,transactions:null})),n&&o(t,3e4))){d(n),g(e=>({...e,transactions:!1})),w(e=>({...e,transactions:null}));try{let e=localStorage.getItem(t);if(e){let t=JSON.parse(e);t.timestamp&&C(e=>({...e,transactions:t.timestamp}))}}catch(e){}if(!(Date.now()-(s(t)?(()=>{try{let e=localStorage.getItem(t);if(e)return JSON.parse(e).timestamp||0}catch(e){}return 0})():0)>24e3))return}if(k.current)return k.current;e&&g(e=>({...e,transactions:!0})),w(e=>({...e,transactions:null}));let l=(async()=>{try{let e=(await r.y2.getTransactionsAny(a,100)).filter(e=>e.txHash&&e.txHash.length>0&&(void 0!==e.value||void 0!==e.tokenSymbol));e.sort((e,t)=>{let a=e.timestamp||0;return(t.timestamp||0)-a}),d(e),C(e=>({...e,transactions:Date.now()})),w(e=>({...e,transactions:null})),c(t,e,3e4)}catch(t){let e=t instanceof Error?t.message:"Failed to load transactions";w(t=>({...t,transactions:e})),console.error("Failed to fetch transactions:",t)}finally{g(e=>({...e,transactions:!1})),k.current=null}})();return k.current=l,l},[a]),O=(0,l.useCallback)(async()=>{a&&(u(a,"balances"),u(a,"transactions"),await Promise.all([E(!0,!0),H(!0)]))},[a,E,H]),T=(0,l.useCallback)(async()=>
1{if(!a)return;let e=i(a,"balances");localStorage.removeItem(e),localStorage.removeItem("".concat(e,"_timestamp")),await E(!0,!0)},[a,E]),_=(0,l.useCallback)(async()=>{if(!a)return;let e=i(a,"transactions");localStorage.removeItem(e),localStorage.removeItem("".concat(e,"_timestamp")),await H(!0)},[a,H]),D=(0,l.useCallback)(e=>{try{let t=localStorage.getItem(e);if(t)return JSON.parse(t).timestamp||null}catch(e){}return null},[]);return(0,l.useEffect)(()=>{if(N.current=null,k.current=null,!a){p([]),d([]),g({balances:!1,transactions:!1}),w({balances:null,transactions:null}),C({balances:null,transactions:null});return}let e=i(a,"balances"),t=i(a,"transactions"),n=s(e),l=s(t),r=n&&o(e,6e4),c=l&&o(t,3e4);if(r){p(n);let t=D(e);t&&C(e=>({...e,balances:t}))}else p([]),C(e=>({...e,balances:null}));if(c){d(l);let e=D(t);e&&C(t=>({...t,transactions:e}))}else d([]),C(e=>({...e,transactions:null}));g({balances:!1,transactions:!1}),w({balances:null,transactions:null}),E(),H()},[a,E,H,D]),(0,n.jsx)(f.Provider,{value:{balances:h,transactions:y,loading:S,errors:v,refresh:O,refreshBalances:T,refreshTransactions:_,lastFetched:I},children:t})}function p(){let e=(0,l.useContext)(f);if(!e)throw Error("useWalletDataContext must be used within WalletDataProvider");return e}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.