Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
1.1 kB · 42 lines
TSX
12345678910111213141516171819202122232425262728293031323334353637383940414243import Storage from "expo-sqlite/kv-store";import { Lock } from "./lock";import { AQStorage } from "./storage.shared";
// Needed because concurrent calls seem to return with a locked databaseconst lock = new Lock();
export default class NativeStorage implements AQStorage { async getItem(key: string): Promise<string | null> { return lock.critical(async () => { try { const value = await Storage.getItem(key); return value ?? null; } catch (e) { console.error(`error in NativeStorage.getItem: ${e}`); throw e; } }); }
async setItem(key: string, value: string): Promise<void> { return lock.critical(async () => { try { await Storage.setItem(key, value); } catch (e) { console.error(`error in NativeStorage.setItem: ${e}`); throw e; } }); }
async removeItem(key: string): Promise<void> { return lock.critical(async () => { try { await Storage.removeItem(key); } catch (e) { console.error(`error in NativeStorage.removeItem: ${e}`); throw e; } }); }}