"use strict"; var _Storage = _interopRequireDefault(require("./Storage")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * @flow */ const uuidv4 = require('./uuid'); let iidCache = null; const InstallationController = { currentInstallationId() /*: Promise*/{ if (typeof iidCache === 'string') { return Promise.resolve(iidCache); } const path = _Storage.default.generatePath('installationId'); return _Storage.default.getItemAsync(path).then(iid => { if (!iid) { iid = uuidv4(); return _Storage.default.setItemAsync(path, iid).then(() => { iidCache = iid; return iid; }); } iidCache = iid; return iid; }); }, _clearCache() { iidCache = null; }, _setInstallationIdCache(iid /*: string*/) { iidCache = iid; } }; module.exports = InstallationController;