UNPKG

@gathertown/uikit-react-native

Version:

Sendbird UIKit for React Native: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.

51 lines (40 loc) 1.33 kB
import { ASYNC_NOOP } from '@gathertown/uikit-utils'; import type { KeyValuePairGet, KeyValuePairSet, LocalCacheStorage } from '../types'; export default class InternalLocalCacheStorage implements LocalCacheStorage { constructor(private storage: LocalCacheStorage) {} getAllKeys() { return this.storage.getAllKeys(); } getItem(key: string) { return this.storage.getItem(key); } removeItem(key: string) { return this.storage.removeItem(key); } setItem(key: string, value: string) { return this.storage.setItem(key, value); } async multiGet(keys: string[]) { if (this.storage.multiGet) { return this.storage.multiGet(keys); } else { return Promise.all(keys.map(async (key) => [key, await this.getItem(key)] as KeyValuePairGet)); } } async multiRemove(keys: string[]) { if (this.storage.multiRemove) { await this.storage.multiRemove(keys); } else { await Promise.all(keys.map(async (key) => this.removeItem(key))); } } async multiSet(keyValuePairs: Array<KeyValuePairSet>) { if (this.storage.multiSet) { await this.storage.multiSet(keyValuePairs); } else { await Promise.all(keyValuePairs.map(([key, value]) => this.storage.setItem(key, value))); } } clear = ASYNC_NOOP; flushGetRequests = ASYNC_NOOP; }