123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- "use strict";
- var _LocalDatastoreUtils = require("./LocalDatastoreUtils");
- /**
- * @flow
- * @private
- */
- const RNStorage = require('./StorageController.react-native');
- const LocalDatastoreController = {
- async fromPinWithName(name /*: string*/) /*: Promise<Array<Object>>*/{
- const values = await RNStorage.getItemAsync(name);
- if (!values) {
- return [];
- }
- const objects = JSON.parse(values);
- return objects;
- },
- async pinWithName(name /*: string*/, value /*: any*/) /*: Promise<void>*/{
- try {
- const values = JSON.stringify(value);
- await RNStorage.setItemAsync(name, values);
- } catch (e) {
- // Quota exceeded, possibly due to Safari Private Browsing mode
- console.error(e.message);
- }
- },
- unPinWithName(name /*: string*/) /*: Promise<void>*/{
- return RNStorage.removeItemAsync(name);
- },
- async getAllContents() /*: Promise<Object>*/{
- const keys = await RNStorage.getAllKeysAsync();
- const batch = [];
- for (let i = 0; i < keys.length; i += 1) {
- const key = keys[i];
- if ((0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {
- batch.push(key);
- }
- }
- const LDS = {};
- let results = [];
- try {
- results = await RNStorage.multiGet(batch);
- } catch (error) {
- console.error('Error getAllContents: ', error);
- return {};
- }
- results.forEach(pair => {
- const [key, value] = pair;
- try {
- LDS[key] = JSON.parse(value);
- } catch (error) {
- LDS[key] = null;
- }
- });
- return LDS;
- },
- // Used for testing
- async getRawStorage() /*: Promise<Object>*/{
- const keys = await RNStorage.getAllKeysAsync();
- const storage = {};
- const results = await RNStorage.multiGet(keys);
- results.map(pair => {
- const [key, value] = pair;
- storage[key] = value;
- });
- return storage;
- },
- async clear() /*: Promise<void>*/{
- const keys = await RNStorage.getAllKeysAsync();
- const batch = [];
- for (let i = 0; i < keys.length; i += 1) {
- const key = keys[i];
- if ((0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {
- batch.push(key);
- }
- }
- return RNStorage.multiRemove(batch).catch(error => console.error('Error clearing local datastore: ', error));
- }
- };
- module.exports = LocalDatastoreController;
|