From 77b70ba3198a42779181d0d69258f85fe9e92f6b Mon Sep 17 00:00:00 2001 From: richardo2016x Date: Wed, 3 Jul 2024 18:39:44 +0800 Subject: [PATCH] fix: try to fix bootstrap issue. --- apps/mobile/src/core/storage/mmkv.ts | 6 +++++- packages/base-utils/src/isomorphic/string.ts | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/apps/mobile/src/core/storage/mmkv.ts b/apps/mobile/src/core/storage/mmkv.ts index 58f1fc429..81647b7b3 100644 --- a/apps/mobile/src/core/storage/mmkv.ts +++ b/apps/mobile/src/core/storage/mmkv.ts @@ -3,6 +3,7 @@ import { MMKV, MMKVConfiguration } from 'react-native-mmkv'; +import { stringUtils } from '@rabby-wallet/base-utils'; import { StorageAdapater } from '@rabby-wallet/persist-store'; import { atomWithStorage, createJSONStorage } from 'jotai/utils'; import { SyncStorage } from 'jotai/vanilla/utils/atomWithStorage'; @@ -12,7 +13,10 @@ export function makeAppStorage(options?: MMKVConfiguration) { function getItem(key: string): T | null { const value = mmkv.getString(key); - return value ? JSON.parse(value) : null; + + return !value + ? null + : stringUtils.safeParseJSON(value, { defaultValue: null }); } function setItem(key: string, value: T): void { diff --git a/packages/base-utils/src/isomorphic/string.ts b/packages/base-utils/src/isomorphic/string.ts index ea13fde9b..0de91464d 100644 --- a/packages/base-utils/src/isomorphic/string.ts +++ b/packages/base-utils/src/isomorphic/string.ts @@ -21,3 +21,11 @@ export function unSuffix(str = '', suffix = '/') { export function isStringOrNumber(data: any) { return typeof data === 'string' || typeof data === 'number'; } + +export function safeParseJSON(json: string, options?: { defaultValue?: any }): T | null { + try { + return JSON.parse(json); + } catch (error) { + return options?.defaultValue ?? null; + } +}