@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
text/typescript
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;
}