@global-savings-group/extension-storage
Advanced tools
Comparing version 0.1.0 to 0.1.1
/// <reference types="chrome" /> | ||
import { AsyncStorage } from "./storage.interfaces.js"; | ||
declare abstract class StorageService implements AsyncStorage { | ||
protected areaName: chrome.storage.AreaName; | ||
protected storage: chrome.storage.StorageArea; | ||
@@ -9,2 +10,3 @@ constructor(areaName?: chrome.storage.AreaName); | ||
set<T = any>(key: string, value: T): Promise<void>; | ||
onChanged: (key: string, callback: (newValue: any, oldValue: any) => void) => void; | ||
} | ||
@@ -11,0 +13,0 @@ declare class LocalStorageService extends StorageService { |
class StorageService { | ||
constructor(areaName = "local") { | ||
this.areaName = areaName; | ||
this.onChanged = (key, callback) => { | ||
chrome.storage.onChanged.addListener((changes, areaName) => { | ||
if (areaName === this.areaName && changes[key]) { | ||
callback(changes[key].newValue, changes[key].oldValue); | ||
} | ||
}); | ||
}; | ||
this.storage = chrome.storage[areaName]; | ||
@@ -66,2 +74,9 @@ } | ||
}; | ||
this.onChanged = (key, callback) => { | ||
storage.onChanged(storageKey, (newValue, oldValue) => { | ||
if (newValue?.[key] !== oldValue?.[key]) { | ||
callback(newValue?.[key], oldValue?.[key]); | ||
} | ||
}); | ||
}; | ||
} | ||
@@ -68,0 +83,0 @@ } |
{ | ||
"name": "@global-savings-group/extension-storage", | ||
"version": "0.1.0", | ||
"version": "0.1.1", | ||
"description": "Cross-browser storage service for browser extensions", | ||
@@ -5,0 +5,0 @@ "author": "Global Savings Group", |
@@ -8,8 +8,12 @@ # Cross-browser storage service for browser extensions | ||
const localData = await localStorageService.get('local-key'); | ||
await localStorageService.set('local-key', localData); | ||
setTimeout(async () => { | ||
const localData = await localStorageService.get('key') ?? 1000; | ||
await localStorageService.set('key', localData + 1); | ||
console.log(`Local data: ${localData}`); | ||
const sessionData = await sessionStorageService.get('local-key'); | ||
await sessionStorageService.set('local-key', sessionData); | ||
const sessionData = await sessionStorageService.get('key') || 2000; | ||
await sessionStorageService.set('key', sessionData + 1); | ||
console.log(`Session data: ${sessionData}`); | ||
}, 5000); | ||
``` |
5167
115
18