Skip to content

Commit 6c72881

Browse files
Merge pull request #1589 from input-output-hk/feat/LW-12228-improve-caching-mechanism
feat: equip persistent cache with better data serialisation
2 parents 69ca0b5 + 9d170e9 commit 6c72881

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

packages/web-extension/src/storage/persistentCacheStorage/persistentCacheStorage.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { type Cache, fromSerializableObject, toSerializableObject } from '@cardano-sdk/util';
12
import { Storage } from 'webextension-polyfill';
23

34
type StorageLocal = Pick<Storage.StorageArea, 'get' | 'set' | 'remove'>;
@@ -31,7 +32,7 @@ export const makePersistentCacheStorageFactory =
3132
fallbackMaxCollectionItemsGuard: number;
3233
resourceName: string;
3334
quotaInBytes: number;
34-
}) => {
35+
}): Cache<T> => {
3536
const loaded = createVolatileCache<T>();
3637
const metadataKey = makeMetadataKey(resourceName);
3738
const getItemKey = (key: string) => makeItemKey(resourceName, key);
@@ -91,7 +92,7 @@ export const makePersistentCacheStorageFactory =
9192
let value = loaded.get(itemKey);
9293
if (!value) {
9394
const result = await extensionLocalStorage.get(itemKey);
94-
value = result[itemKey];
95+
value = fromSerializableObject(result[itemKey]);
9596
}
9697

9798
if (value) {
@@ -103,7 +104,7 @@ export const makePersistentCacheStorageFactory =
103104
async set(key: string, value: T) {
104105
const itemKey = getItemKey(key);
105106
loaded.set(itemKey, value);
106-
await extensionLocalStorage.set({ [itemKey]: value });
107+
await extensionLocalStorage.set({ [itemKey]: toSerializableObject(value) });
107108

108109
void (async () => {
109110
await updateAccessTime(itemKey);

0 commit comments

Comments
 (0)