UNPKG

@subsocial/api

Version:
167 lines (166 loc) 7.57 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.flattenReactions = exports.flattenReaction = exports.flattenDomainStructs = exports.flattenDomainStruct = exports.flattenPostStructs = exports.flattenPostStruct = exports.flattenSpaceStructs = exports.flattenSpaceStruct = exports.flattenPermissions = exports.flattenCommonFields = exports.getUniqueSpaceIds = exports.getUniqueContentIds = exports.getUniqueOwnerIds = exports.getUniqueIds = void 0; const utils_1 = require("@subsocial/utils"); const types_1 = require("../../types"); __exportStar(require("./utils"), exports); function getUniqueIds(structs, idFieldName) { const ids = new Set(); structs.forEach((x) => { const edStruct = x.struct; const struct = (0, utils_1.notEmptyObj)(edStruct) ? edStruct : x; const id = struct[idFieldName]; if (id && !ids.has(id)) { ids.add(id); } }); return Array.from(ids); } exports.getUniqueIds = getUniqueIds; const getUniqueOwnerIds = (entities) => getUniqueIds(entities, 'ownerId'); exports.getUniqueOwnerIds = getUniqueOwnerIds; const getUniqueContentIds = (entities) => getUniqueIds(entities, 'contentId'); exports.getUniqueContentIds = getUniqueContentIds; const getUniqueSpaceIds = (entities) => getUniqueIds(entities, 'spaceId'); exports.getUniqueSpaceIds = getUniqueSpaceIds; function getContentFields({ content }) { let res = {}; if (content.isIpfs) { res = { contentId: content.asIpfs.toHuman() }; } return res; } function flattenCreatedField(struct) { const { created } = struct; return { createdByAccount: created.account.toHuman(), createdAtBlock: created.block.toNumber(), createdAtTime: created.time.toNumber(), }; } function flattenUpdatedField(struct) { var _a, _b, _c, _d; const updated = (_a = struct.updated) === null || _a === void 0 ? void 0 : _a.unwrapOr(undefined); if (!updated) return {}; return { updatedByAccount: (_b = updated === null || updated === void 0 ? void 0 : updated.account) === null || _b === void 0 ? void 0 : _b.toHuman(), updatedAtBlock: (_c = updated === null || updated === void 0 ? void 0 : updated.block) === null || _c === void 0 ? void 0 : _c.toNumber(), updatedAtTime: (_d = updated === null || updated === void 0 ? void 0 : updated.time) === null || _d === void 0 ? void 0 : _d.toNumber(), }; } function flattenCommonFields(struct) { return Object.assign(Object.assign(Object.assign({}, flattenCreatedField(struct)), { isUpdated: struct.edited.toHuman() }), getContentFields(struct)); } exports.flattenCommonFields = flattenCommonFields; function flattenSpaceOrPostStruct(struct) { return Object.assign(Object.assign({}, flattenCommonFields(struct)), { id: struct.id.toString(), ownerId: struct.owner.toHuman(), hidden: struct.hidden.isTrue }); } const flattenPermissions = (permissions) => { const flatPermissions = {}; if (permissions) { for (const [key, value] of permissions) { const permissionSet = value.unwrapOr(undefined); const permission = {}; permissionSet === null || permissionSet === void 0 ? void 0 : permissionSet.forEach(x => { permission[x.toString()] = true; }); flatPermissions[`${key}Permissions`] = permission; } } return flatPermissions; }; exports.flattenPermissions = flattenPermissions; function flattenSpaceStruct(struct) { var _a, _b; const flatPermissions = (0, exports.flattenPermissions)(struct.permissions.unwrapOr(undefined)); return Object.assign(Object.assign(Object.assign({}, flattenSpaceOrPostStruct(struct)), flatPermissions), { canFollowerCreatePosts: !!((_a = flatPermissions.followerPermissions) === null || _a === void 0 ? void 0 : _a.CreatePosts), canEveryoneCreatePosts: !!((_b = flatPermissions.everyonePermissions) === null || _b === void 0 ? void 0 : _b.CreatePosts) }); } exports.flattenSpaceStruct = flattenSpaceStruct; function flattenSpaceStructs(structs) { return structs.map(flattenSpaceStruct); } exports.flattenSpaceStructs = flattenSpaceStructs; function flattenPostExtension(struct) { const { isSharedPost, isComment, isRegularPost } = struct.extension; let normExt = {}; if (isSharedPost) { const originalPostId = struct.extension.asSharedPost; const sharedPost = { originalPostId: originalPostId.toString() }; normExt = sharedPost; } else if (isComment) { const { parentId, rootPostId } = struct.extension.asComment; const comment = { rootPostId: rootPostId.toString() }; if (parentId.isSome) { comment.parentId = parentId.unwrap().toString(); } normExt = comment; } return normExt; } function flattenPostStruct(struct) { const { isRegularPost, isSharedPost, isComment } = struct.extension; const extensionFields = flattenPostExtension(struct); let spaceField = {}; if (struct.spaceId.isSome) { spaceField = { spaceId: struct.spaceId.unwrap().toString(), }; } return Object.assign(Object.assign(Object.assign(Object.assign({}, flattenSpaceOrPostStruct(struct)), spaceField), extensionFields), { upvotesCount: struct.upvotesCount.toNumber(), downvotesCount: struct.downvotesCount.toNumber(), isRegularPost, isSharedPost, isComment }); } exports.flattenPostStruct = flattenPostStruct; function flattenPostStructs(structs) { return structs.map(flattenPostStruct); } exports.flattenPostStructs = flattenPostStructs; function flattenDomainStruct(struct) { var _a; let innerSpace = undefined; const innerValue = struct.innerValue.unwrapOr(undefined); if (innerValue === null || innerValue === void 0 ? void 0 : innerValue.isSpace) { innerSpace = innerValue.asSpace.toString(); } return { owner: struct.owner.toHuman(), expiresAt: struct.expiresAt.toString(), outerValue: (_a = struct.outerValue.toHuman()) === null || _a === void 0 ? void 0 : _a.toString(), innerSpace }; } exports.flattenDomainStruct = flattenDomainStruct; function flattenDomainStructs(structs) { return structs.map(flattenDomainStruct); } exports.flattenDomainStructs = flattenDomainStructs; function flattenReaction(rawReaction) { return Object.assign(Object.assign(Object.assign({}, flattenCreatedField(rawReaction)), flattenUpdatedField(rawReaction)), { id: rawReaction.id.toString(), kind: rawReaction.kind.isUpvote ? types_1.ReactionEnum.Upvote : types_1.ReactionEnum.Downvote }); } exports.flattenReaction = flattenReaction; function flattenReactions(rawReactions) { return rawReactions.map(flattenReaction); } exports.flattenReactions = flattenReactions;