UNPKG

@blockv/sdk

Version:

Allows web apps to display and interact with vatoms.

74 lines (50 loc) 2.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _BLOCKvRegion = _interopRequireDefault(require("./BLOCKvRegion")); var _Discover = _interopRequireDefault(require("../../../client/Discover")); var _DataObject = _interopRequireDefault(require("../DataObject")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * This region plugin provides access to a collection of vatoms that are children of another vatom. * The 'inventory' region is much mor reliable, so if you know that your vatoms are owned by the current user, * use the inventory region with a filter rather. * * To get an instance, call `DataPool.region('children', "parent-id")` */ class VatomChildrenRegion extends _BLOCKvRegion.default { /** Plugin ID */ static get id() { return 'children'; } /** Constructor */ constructor(dataPool, parentID) { super(dataPool); // Store ID this.parentID = parentID; } /** Our state key is the list of IDs */ get stateKey() { return 'children:' + this.parentID; } /** Check if a region request matches our region */ matches(id, descriptor) { return id === 'children' && descriptor === this.parentID; } /** Load current state from the server */ async load() { // Pause websocket events this.pauseMessages(); // Fetch data let payload = new _Discover.default().setScope(_Discover.default.FieldParentID, this.parentID).getPayload(); let response = await this.dataPool.Blockv.client.request('POST', '/vatom/discover', payload, true); // Add vatom to new objects list let objects = []; response.results.map(v => new _DataObject.default('vatom', v.id, v)).forEach(f => objects.push(f)); // Add faces to new objects list response.faces.map(f => new _DataObject.default('face', f.id, f)).forEach(f => objects.push(f)); // Add actions to new objects list response.actions.map(a => new _DataObject.default('action', a.name, a)).forEach(a => objects.push(a)); // Add new objects this.addObjects(objects); // Resume websocket messages this.resumeMessages(); // Return array of IDs return objects.map(o => o.id); } } exports.default = VatomChildrenRegion;