@subsocial/api
Version:
JavaScript API for Subsocial blockchain.
167 lines (166 loc) • 7.57 kB
JavaScript
;
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;