@funded-labs/plug-controller
Version:
Internet Computer Plug wallet's controller
115 lines (114 loc) • 4.29 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const extensionizer_1 = __importDefault(require("extensionizer"));
const utils_1 = require("./utils");
/* eslint-disable no-underscore-dangle */
/* eslint-disable class-methods-use-this */
/**
* A wrapper around the extension's storage local API
*/
class ExtensionStore {
constructor() {
var _a;
this.isSupported = Boolean((_a = extensionizer_1.default === null || extensionizer_1.default === void 0 ? void 0 : extensionizer_1.default.storage) === null || _a === void 0 ? void 0 : _a.local);
if (!this.isSupported) {
console.log('Storage not supported in this browser'); // eslint-disable-line
}
}
/**
* Returns all of the keys currently saved
* @returns {Promise<*>}
*/
get() {
return __awaiter(this, void 0, void 0, function* () {
if (!this.isSupported) {
return undefined;
}
const result = yield this._get();
// extension?.storage.local always returns an obj
// if the object is empty, treat it as undefined
if ((0, utils_1.isEmpty)(result)) {
return undefined;
}
return result;
});
}
/**
* Sets the key in local state
* @param {Object} state - The state to set
* @returns {Promise<void>}
*/
set(state) {
return __awaiter(this, void 0, void 0, function* () {
return this._set(state);
});
}
/**
* Returns all of the keys currently saved
* @private
* @returns {Object} the key-value map from local storage
*/
_get() {
const { local } = extensionizer_1.default === null || extensionizer_1.default === void 0 ? void 0 : extensionizer_1.default.storage;
return new Promise((resolve, reject) => {
local.get(null, (/** @type {any} */ result) => {
const err = (0, utils_1.checkForError)();
if (err) {
reject(err);
}
else {
resolve(result);
}
});
});
}
/**
* Sets the key in local state
* @param {Object} obj - The key to set
* @returns {Promise<void>}
* @private
*/
_set(obj) {
const { local } = extensionizer_1.default === null || extensionizer_1.default === void 0 ? void 0 : extensionizer_1.default.storage;
return new Promise((resolve, reject) => {
local.set(obj, () => {
const err = (0, utils_1.checkForError)();
if (err) {
reject(err);
}
else {
resolve();
}
});
});
}
clear() {
return __awaiter(this, void 0, void 0, function* () {
const { local } = extensionizer_1.default === null || extensionizer_1.default === void 0 ? void 0 : extensionizer_1.default.storage;
return new Promise((resolve, reject) => {
local.clear(() => {
const err = (0, utils_1.checkForError)();
if (err) {
reject(err);
}
else {
resolve();
}
});
});
});
}
}
exports.default = ExtensionStore;