From 9d170e928d33307f6ce2acd204557c309b1cfc0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szymon=20Mas=C5=82owski?= Date: Fri, 7 Feb 2025 15:48:59 +0100 Subject: [PATCH] feat(web-extension): equip persisten cache with better data serialization Use `toSerializableObject` and `fromSerializableObject` when seting and geting items from the storage --- .../persistentCacheStorage/persistentCacheStorage.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/web-extension/src/storage/persistentCacheStorage/persistentCacheStorage.ts b/packages/web-extension/src/storage/persistentCacheStorage/persistentCacheStorage.ts index f871c27715c..acc81e506e0 100644 --- a/packages/web-extension/src/storage/persistentCacheStorage/persistentCacheStorage.ts +++ b/packages/web-extension/src/storage/persistentCacheStorage/persistentCacheStorage.ts @@ -1,3 +1,4 @@ +import { type Cache, fromSerializableObject, toSerializableObject } from '@cardano-sdk/util'; import { Storage } from 'webextension-polyfill'; type StorageLocal = Pick; @@ -31,7 +32,7 @@ export const makePersistentCacheStorageFactory = fallbackMaxCollectionItemsGuard: number; resourceName: string; quotaInBytes: number; - }) => { + }): Cache => { const loaded = createVolatileCache(); const metadataKey = makeMetadataKey(resourceName); const getItemKey = (key: string) => makeItemKey(resourceName, key); @@ -91,7 +92,7 @@ export const makePersistentCacheStorageFactory = let value = loaded.get(itemKey); if (!value) { const result = await extensionLocalStorage.get(itemKey); - value = result[itemKey]; + value = fromSerializableObject(result[itemKey]); } if (value) { @@ -103,7 +104,7 @@ export const makePersistentCacheStorageFactory = async set(key: string, value: T) { const itemKey = getItemKey(key); loaded.set(itemKey, value); - await extensionLocalStorage.set({ [itemKey]: value }); + await extensionLocalStorage.set({ [itemKey]: toSerializableObject(value) }); void (async () => { await updateAccessTime(itemKey);