| 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;
 |