diff --git a/packages/api/api-did/server.ts b/packages/api/api-did/server.ts index 2a03c96e08..145d7891d8 100644 --- a/packages/api/api-did/server.ts +++ b/packages/api/api-did/server.ts @@ -8,11 +8,14 @@ import { sleep } from '@portkey-wallet/utils'; import im from '@portkey-wallet/im'; import { IM_TOKEN_ERROR_ARRAY } from '@portkey-wallet/im/constant'; import signalrFCM from '@portkey-wallet/socket/socket-fcm'; +import { IStorageSuite } from '@portkey/types'; const C_T_EVENT_NAME = 'connectTokenChange'; +const C_T_STORAGE_KEY = 'DidServiceConnectTokenStorageKey'; export class DidService extends ServiceInit { protected refreshTokenConfig?: RefreshTokenConfig; protected onLockApp?: (expired?: boolean) => void; + protected storage?: IStorageSuite; locked?: boolean; exceptionManager?: IExceptionManager; constructor() { @@ -34,9 +37,8 @@ export class DidService extends ServiceInit { try { if (!this.refreshTokenConfig || !isValidRefreshTokenConfig(this.refreshTokenConfig)) return; const authorization = await queryAuthorization(this.refreshTokenConfig); - this.set('headers', { Authorization: authorization }); - this.emitConnectTokenChange(authorization); - + this.saveAuthorization(authorization); + this.setAuthorization(authorization); this.locked = false; return authorization; } catch (error) { @@ -52,6 +54,7 @@ export class DidService extends ServiceInit { ...this.defaultConfig.headers, Authorization: '', }; + this.storage?.removeItem(C_T_STORAGE_KEY); }; setRefreshTokenConfig = (config: RefreshTokenConfig) => { @@ -133,6 +136,26 @@ export class DidService extends ServiceInit { rep: fetchResult, }); }; + + initStorageAuthorization = async () => { + try { + const authorization = await this.storage?.getItem(C_T_STORAGE_KEY); + if (authorization) this.setAuthorization(authorization); + } catch (error) { + this.exceptionManager?.reportError(error, Severity.Fatal); + } + }; + setStorage = (storage: IStorageSuite) => { + this.storage = storage; + this.initStorageAuthorization(); + }; + setAuthorization = (authorization: string) => { + this.set('headers', { Authorization: authorization }); + this.emitConnectTokenChange(authorization); + }; + saveAuthorization = (authorization: string) => { + this.storage?.setItem(C_T_STORAGE_KEY, authorization); + }; } const didServer = new DidService(); diff --git a/packages/mobile-app-did/js/components/Updater/index.tsx b/packages/mobile-app-did/js/components/Updater/index.tsx index 641bbbccd4..bb2021c7d9 100644 --- a/packages/mobile-app-did/js/components/Updater/index.tsx +++ b/packages/mobile-app-did/js/components/Updater/index.tsx @@ -30,6 +30,7 @@ import s3Instance from '@portkey-wallet/utils/s3'; import Config from 'react-native-config'; import { useCheckContactMap } from '@portkey-wallet/hooks/hooks-ca/contact'; import { useAppEntrance } from 'hooks/cms'; +import { baseStore } from '@portkey-wallet/utils/mobile/storage'; request.setExceptionManager(exceptionManager); export default function Updater() { @@ -55,6 +56,7 @@ export default function Updater() { useFetchTxFee(); useMemo(() => { request.set('baseURL', apiUrl); + request.setStorage(baseStore); if (service.defaults.baseURL !== apiUrl) { service.defaults.baseURL = apiUrl; } diff --git a/packages/web-extension-did/app/web/store/Provider/initConfig.ts b/packages/web-extension-did/app/web/store/Provider/initConfig.ts index 44f4cc42dc..1f4f720f0d 100644 --- a/packages/web-extension-did/app/web/store/Provider/initConfig.ts +++ b/packages/web-extension-did/app/web/store/Provider/initConfig.ts @@ -1,5 +1,6 @@ import { request } from '@portkey-wallet/api/api-did'; import BigNumber from 'bignumber.js'; +import { localStorage } from 'redux-persist-webextension-storage'; export function initConfig() { BigNumber.set({ ROUNDING_MODE: BigNumber.ROUND_DOWN }); @@ -7,4 +8,5 @@ export function initConfig() { export function initRequest() { request.set('headers', { version: `${process.env.SDK_VERSION}` }); + request.setStorage(localStorage); }