UNPKG

@oap75/api

Version:
122 lines (121 loc) 4.3 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getNewIdsFromEvent = exports.resolveCidOfContent = exports.isValidIpfsCid = exports.asIpfsCid = exports.isIpfs = exports.getPostIdFromExtension = exports.getSharedPostId = exports.isAccountId = exports.asAccountId = exports.getUniqueIds = void 0; const classes_1 = require("@subsocial/types/substrate/classes"); const types_1 = require("@subsocial/types"); const utils_1 = require("@subsocial/utils"); const registry_1 = __importDefault(require("@subsocial/types/substrate/registry")); const types_2 = require("@polkadot/types"); const log = (0, utils_1.newLogger)('Subsocial Api Utils'); const getUniqueIds = (ids) => { if ((0, utils_1.isEmptyArray)(ids)) return []; const knownIds = new Set(); const uniqueIds = []; ids.forEach(id => { if (typeof (id === null || id === void 0 ? void 0 : id.toString) === 'function') { const idStr = id.toString(); if (!knownIds.has(idStr)) { knownIds.add(idStr); uniqueIds.push(id); } } }); return uniqueIds; }; exports.getUniqueIds = getUniqueIds; function asAccountId(id) { try { if (id instanceof types_2.GenericAccountId) { return id; } else if ((0, utils_1.nonEmptyStr)(id)) { return new types_2.GenericAccountId(registry_1.default, id); } return undefined; } catch (_a) { return undefined; } } exports.asAccountId = asAccountId; function isAccountId(id) { return !!asAccountId(id); } exports.isAccountId = isAccountId; const getSharedPostId = (postData) => { var _a; if (!postData) return undefined; const ext = (_a = postData === null || postData === void 0 ? void 0 : postData.struct) === null || _a === void 0 ? void 0 : _a.extension; const sharedPostId = (ext === null || ext === void 0 ? void 0 : ext.isSharedPost) ? ext.asSharedPost : undefined; sharedPostId && log.debug('Shared post id:', sharedPostId.toString()); return sharedPostId; }; exports.getSharedPostId = getSharedPostId; /** Return original post id from shared post or root post id if this post is a comment. */ const getPostIdFromExtension = (postData) => { if (!postData) return undefined; const ext = postData.struct.extension; if (ext) { const { isSharedPost, isComment } = ext; if (isComment || ext.value instanceof classes_1.Comment) { return ext.asComment.rootPostId; } else if (isSharedPost) { return ext.asSharedPost; } } return undefined; }; exports.getPostIdFromExtension = getPostIdFromExtension; const isIpfs = (content) => content && (content.isIpfs || content.IPFS); exports.isIpfs = isIpfs; const asIpfsCid = (cid) => { if (!cid) return undefined; if (cid instanceof types_1.CID) { return cid; } else if (typeof cid === 'string') { return new types_1.CID(cid); } else if (typeof (cid === null || cid === void 0 ? void 0 : cid.toU8a) === 'function') { return new types_1.CID(cid.toString()); } else { throw new Error('Wrong type of IPFS CID. Valid types are: string | CID | IpfsCid'); } }; exports.asIpfsCid = asIpfsCid; const isValidIpfsCid = (cid) => { try { return !!(0, exports.asIpfsCid)(cid); } catch (_a) { return false; } }; exports.isValidIpfsCid = isValidIpfsCid; const resolveCidOfContent = (content) => ((0, utils_1.isDef)(content) && content.isIpfs) ? content.asIpfs.toHuman() : undefined; exports.resolveCidOfContent = resolveCidOfContent; function getNewIdsFromEvent(txResult, eventType = 'Created') { const newIds = []; txResult.events.find(event => { const { event: { data, method } } = event; if (method.indexOf(eventType) >= 0) { const [/* owner */ , ...ids] = data.toArray(); newIds.push(...ids); return true; } return false; }); return newIds; } exports.getNewIdsFromEvent = getNewIdsFromEvent;