InstallationController.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
  3. var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
  4. var _Storage = _interopRequireDefault(require("./Storage"));
  5. /**
  6. * @flow
  7. */
  8. var uuidv4 = require('./uuid');
  9. var iidCache = null;
  10. var InstallationController = {
  11. currentInstallationId: function () /*: Promise<string>*/{
  12. if (typeof iidCache === 'string') {
  13. return _promise.default.resolve(iidCache);
  14. }
  15. var path = _Storage.default.generatePath('installationId');
  16. return _Storage.default.getItemAsync(path).then(function (iid) {
  17. if (!iid) {
  18. iid = uuidv4();
  19. return _Storage.default.setItemAsync(path, iid).then(function () {
  20. iidCache = iid;
  21. return iid;
  22. });
  23. }
  24. iidCache = iid;
  25. return iid;
  26. });
  27. },
  28. _clearCache: function () {
  29. iidCache = null;
  30. },
  31. _setInstallationIdCache: function (iid /*: string*/) {
  32. iidCache = iid;
  33. }
  34. };
  35. module.exports = InstallationController;