@bitsocial/bitsocial-react-hooks 0.1.18 → 0.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"pkc-js-mock.js","sourceRoot":"","sources":["../../../src/lib/pkc-js/pkc-js-mock.ts"],"names":[],"mappings":"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","sourcesContent":["import EventEmitter from \"events\";\nimport type { PkcResolveAuthorNameOptions, PkcResolveAuthorNameResult } from \"../pkc-types\";\n\nconst loadingTime = 10;\nexport const simulateLoadingTime = () => new Promise((r) => setTimeout(r, loadingTime));\n\n// keep a list of created and edited owner communities\n// to reinitialize them with pkc.createCommunity()\nlet createdOwnerCommunities: any = {};\nlet editedOwnerCommunities: any = {};\n\n// reset the pkc-js global state in between tests\nexport const resetPkcJsMock = () => {\n createdOwnerCommunities = {};\n editedOwnerCommunities = {};\n};\nexport const debugPkcJsMock = () => {\n console.log({ createdOwnerCommunities, editedOwnerCommunities });\n};\n\nclass NameResolverClient extends EventEmitter {\n state = \"stopped\";\n}\n\nexport class PKC extends EventEmitter {\n nameResolvers: any[];\n _clientsManager: {\n clients: {\n nameResolvers: { [resolverKey: string]: NameResolverClient };\n };\n };\n\n constructor(options: any = {}) {\n super();\n this.nameResolvers = options?.nameResolvers || [];\n this._clientsManager = {\n clients: {\n nameResolvers: this.nameResolvers.reduce(\n (resolverClients: { [resolverKey: string]: NameResolverClient }, resolver: any) => ({\n ...resolverClients,\n [resolver.key]: new NameResolverClient(),\n }),\n {},\n ),\n },\n };\n }\n\n async resolveAuthorAddress(options: { address: string }) {\n const resolver = this.nameResolvers.find((nameResolver) =>\n nameResolver?.canResolve?.({ name: options.address }),\n );\n const resolverClient = resolver && this._clientsManager.clients.nameResolvers[resolver.key];\n if (resolverClient) {\n resolverClient.state = \"resolving-author-name\";\n resolverClient.emit(\"statechange\", resolverClient.state);\n }\n await simulateLoadingTime();\n if (resolverClient) {\n resolverClient.state = \"stopped\";\n resolverClient.emit(\"statechange\", resolverClient.state);\n }\n return \"resolved author address\";\n }\n\n async resolveAuthorName(\n options: PkcResolveAuthorNameOptions,\n ): Promise<PkcResolveAuthorNameResult> {\n const resolvedAuthorName = await this.resolveAuthorAddress({ address: options.name });\n return { resolvedAuthorName };\n }\n\n async createSigner() {\n return {\n privateKey: \"private key\",\n address: \"address\",\n };\n }\n\n async createCommunity(createCommunityOptions: any) {\n if (!createCommunityOptions) {\n createCommunityOptions = {};\n }\n const communityIdentifier =\n createCommunityOptions.address ||\n createCommunityOptions.name ||\n createCommunityOptions.publicKey;\n\n // no address provided so probably a user creating an owner community\n if (!communityIdentifier) {\n createCommunityOptions = {\n ...createCommunityOptions,\n address: \"created community address\",\n };\n // createdCommunityAddresses.push('created community address')\n createdOwnerCommunities[createCommunityOptions.address] = { ...createCommunityOptions };\n }\n // only address provided, so could be a previously created owner community\n // add props from previously created sub\n else if (\n createdOwnerCommunities[createCommunityOptions.address] &&\n JSON.stringify(Object.keys(createCommunityOptions)) === '[\"address\"]'\n ) {\n for (const prop in createdOwnerCommunities[createCommunityOptions.address]) {\n if (createdOwnerCommunities[createCommunityOptions.address][prop]) {\n createCommunityOptions[prop] =\n createdOwnerCommunities[createCommunityOptions.address][prop];\n }\n }\n }\n\n // add edited props if owner community was edited in the past\n if (editedOwnerCommunities[createCommunityOptions.address]) {\n for (const prop in editedOwnerCommunities[createCommunityOptions.address]) {\n if (editedOwnerCommunities[createCommunityOptions.address][prop]) {\n createCommunityOptions[prop] =\n editedOwnerCommunities[createCommunityOptions.address][prop];\n }\n }\n }\n\n return new Community(createCommunityOptions);\n }\n\n async getCommunity(options: { address: string }) {\n const address = options?.address;\n await simulateLoadingTime();\n const createCommunityOptions = { address };\n const community: any = new Community(createCommunityOptions);\n community.title = community.address + \" title\";\n const hotPageCid = community.address + \" page cid hot\";\n community.posts.pages.hot = community.posts.pageToGet(hotPageCid);\n community.posts.pageCids = {\n hot: hotPageCid,\n topAll: community.address + \" page cid topAll\",\n new: community.address + \" page cid new\",\n active: community.address + \" page cid active\",\n };\n community.modQueue.pageCids = {\n pendingApproval: community.address + \" page cid pendingApproval\",\n };\n return community;\n }\n\n // TODO: implement event communitieschange\n get communities() {\n return [\n ...new Set([\n \"list community address 1\",\n \"list community address 2\",\n ...Object.keys(createdOwnerCommunities),\n ]),\n ];\n }\n\n async createComment(createCommentOptions: any) {\n return new Comment(createCommentOptions);\n }\n\n async getComment(options: { cid: string }) {\n const cid = options?.cid;\n await simulateLoadingTime();\n const createCommentOptions = {\n cid,\n // useComment() requires timestamp or will use account comment instead of comment from store\n timestamp: 1670000000,\n ...this.commentToGet(cid),\n };\n return new Comment(createCommentOptions);\n }\n\n // mock this method to get a comment with different content, timestamp, address, etc\n commentToGet(commentCid?: string) {\n return {\n // content: 'mock some content'\n // author: {address: 'mock some address'},\n // timestamp: 1234\n };\n }\n\n async createVote() {\n return new Vote();\n }\n\n async createCommentEdit(createCommentEditOptions: any) {\n return new CommentEdit(createCommentEditOptions);\n }\n\n async createCommentModeration(createCommentModerationOptions: any) {\n return new CommentModeration(createCommentModerationOptions);\n }\n\n async createCommunityEdit(createCommunityEditOptions: any) {\n return new CommunityEdit(createCommunityEditOptions);\n }\n\n async fetchCid(options: { cid: string }) {\n const cid = options?.cid;\n if (cid?.startsWith(\"statscid\")) {\n return JSON.stringify({ hourActiveUserCount: 1 });\n }\n throw Error(`pkc.fetchCid not implemented in pkc-js mock for cid '${cid}'`);\n }\n\n async pubsubSubscribe(communityAddress: string) {}\n async pubsubUnsubscribe(communityAddress: string) {}\n\n clients = (() => {\n const pkcRpcClients = {\n \"http://localhost:9138\": new PkcRpcClient(),\n };\n return {\n pkcRpcClients,\n };\n })();\n\n async validateComment(comment: any, validateCommentOptions: any) {}\n}\n\nclass PkcRpcClient extends EventEmitter {\n state = \"connecting\";\n settings: any = undefined;\n constructor() {\n super();\n // simulate connecting to the rpc\n setTimeout(() => {\n this.state = \"connected\";\n this.settings = { challenges: {} };\n this.emit(\"statechange\", this.state);\n this.emit(\"settingschange\", this.settings);\n }, 10);\n }\n\n async setSettings(settings: any) {\n this.settings = settings;\n this.emit(\"settingschange\", this.settings);\n }\n}\n\nexport class Pages {\n pageCids: any = {};\n pages: any = {};\n community: any;\n comment: any;\n\n constructor(pagesOptions?: any) {\n Object.defineProperty(this, \"community\", {\n value: pagesOptions?.community,\n enumerable: false,\n });\n Object.defineProperty(this, \"comment\", { value: pagesOptions?.comment, enumerable: false });\n }\n\n async getPage(options: { cid: string }) {\n const cid = options?.cid;\n // need to wait twice otherwise react renders too fast and fetches too many pages in advance\n await simulateLoadingTime();\n return this.pageToGet(cid);\n }\n\n async validatePage(page: any) {}\n\n // mock this method to get pages with different content, or use to getPage without simulated loading time\n pageToGet(pageCid: string) {\n const communityAddress = this.community?.address || this.comment?.communityAddress;\n const isPendingApprovalPage = pageCid.includes(\"pendingApproval\");\n const page: any = {\n nextCid: communityAddress + \" \" + pageCid + \" - next page cid\",\n comments: [],\n };\n const postCount = 100;\n let index = 0;\n while (index++ < postCount) {\n const comment: any = {\n timestamp: index,\n cid: pageCid + \" comment cid \" + index,\n communityAddress,\n upvoteCount: index,\n downvoteCount: 10,\n author: {\n address: pageCid + \" author address \" + index,\n },\n updatedAt: index,\n };\n if (isPendingApprovalPage) {\n comment.pendingApproval = true;\n }\n page.comments.push(comment);\n }\n return page;\n }\n}\n\nexport class Community extends EventEmitter {\n updateCalledTimes = 0;\n updating = false;\n firstUpdate = true;\n address: string | undefined;\n publicKey: string | undefined;\n title: string | undefined;\n description: string | undefined;\n posts: Pages;\n modQueue: Pages;\n exportRecords: any[];\n updatedAt: number | undefined;\n statsCid: string | undefined;\n state: string;\n updatingState: string;\n\n constructor(createCommunityOptions?: any) {\n super();\n this.address =\n createCommunityOptions?.address ||\n createCommunityOptions?.name ||\n createCommunityOptions?.publicKey;\n this.publicKey = createCommunityOptions?.publicKey || this.address;\n this.title = createCommunityOptions?.title;\n this.description = createCommunityOptions?.description;\n this.statsCid = \"statscid\";\n this.state = \"stopped\";\n this.updatingState = \"stopped\";\n this.updatedAt = createCommunityOptions?.updatedAt;\n this.exportRecords = [];\n\n this.posts = new Pages({ community: this });\n // add community.posts from createCommunityOptions\n if (createCommunityOptions?.posts?.pages) {\n this.posts.pages = createCommunityOptions?.posts?.pages;\n }\n if (createCommunityOptions?.posts?.pageCids) {\n this.posts.pageCids = createCommunityOptions?.posts?.pageCids;\n }\n\n this.modQueue = new Pages({ community: this });\n // add community.modQueue from createCommunityOptions\n if (createCommunityOptions?.modQueue?.pageCids) {\n this.modQueue.pageCids = createCommunityOptions?.modQueue?.pageCids;\n }\n\n if (createCommunityOptions) {\n for (const prop in createCommunityOptions) {\n if (createCommunityOptions[prop] !== undefined) {\n const descriptor =\n Object.getOwnPropertyDescriptor(this, prop) ||\n Object.getOwnPropertyDescriptor(Object.getPrototypeOf(this), prop);\n if (descriptor && !descriptor.writable && !descriptor.set) {\n continue;\n }\n // @ts-ignore\n this[prop] = createCommunityOptions[prop];\n }\n }\n }\n\n const lookupKeys = [\"address\", \"name\", \"publicKey\"];\n const createCommunityOptionKeys = Object.keys(createCommunityOptions || {});\n const hasLookupIdentifier = Boolean(\n createCommunityOptions?.address ||\n createCommunityOptions?.name ||\n createCommunityOptions?.publicKey,\n );\n const lookupOnly =\n hasLookupIdentifier &&\n createCommunityOptionKeys.length > 0 &&\n createCommunityOptionKeys.every((key) => lookupKeys.includes(key));\n\n // only trigger a first update for lookup-only remote community instances\n if (!lookupOnly) {\n this.firstUpdate = false;\n }\n }\n\n async update() {\n this.updateCalledTimes++;\n if (!this.address) {\n throw Error(`can't update without community.address`);\n }\n // don't update twice\n if (this.updating) {\n return;\n }\n this.updating = true;\n\n this.state = \"updating\";\n this.updatingState = \"fetching-ipns\";\n this.emit(\"statechange\", \"updating\");\n this.emit(\"updatingstatechange\", \"fetching-ipns\");\n\n simulateLoadingTime().then(() => {\n this.simulateUpdateEvent();\n });\n }\n\n async delete() {\n if (this.address) {\n delete createdOwnerCommunities[this.address];\n delete editedOwnerCommunities[this.address];\n }\n }\n\n get exports() {\n return this.exportRecords.map((record) => ({ ...record }));\n }\n\n async export(exportCommunityOptions: any = {}) {\n if (!this.address) {\n throw Error(`can't community.export with no community.address`);\n }\n const exportRecord = {\n exportId: `${this.address} export ${this.exportRecords.length + 1}`,\n name: this.address,\n publicKey: this.publicKey || this.address,\n includePrivateKey: exportCommunityOptions.includePrivateKey === true,\n progress: 1,\n url: `file://${this.address}.zip`,\n };\n this.exportRecords.push(exportRecord);\n this.emit(\"exportschange\", this.exports);\n return { exportId: exportRecord.exportId };\n }\n\n simulateUpdateEvent() {\n if (this.firstUpdate) {\n this.simulateFirstUpdateEvent();\n return;\n }\n\n this.description = this.address + \" description updated\";\n // @ts-ignore\n this.updatedAt = this.updatedAt + 1;\n\n this.updating = false;\n this.updatingState = \"succeeded\";\n this.emit(\"update\", this);\n this.emit(\"updatingstatechange\", \"succeeded\");\n }\n\n // the first update event adds all the field from getCommunity\n async simulateFirstUpdateEvent() {\n this.firstUpdate = false;\n this.updatedAt = Math.floor(Date.now() / 1000);\n\n this.title = this.address + \" title\";\n const hotPageCid = this.address + \" page cid hot\";\n this.posts.pages.hot = this.posts.pageToGet(hotPageCid);\n this.posts.pageCids = {\n hot: hotPageCid,\n topAll: this.address + \" page cid topAll\",\n new: this.address + \" page cid new\",\n active: this.address + \" page cid active\",\n };\n this.modQueue.pageCids = {\n pendingApproval: this.address + \" page cid pendingApproval\",\n };\n\n // simulate the ipns update\n this.updatingState = \"succeeded\";\n this.emit(\"update\", this);\n this.emit(\"updatingstatechange\", \"succeeded\");\n\n // simulate the next update\n this.updatingState = \"fetching-ipns\";\n this.emit(\"updatingstatechange\", \"fetching-ipns\");\n simulateLoadingTime().then(() => {\n this.simulateUpdateEvent();\n });\n }\n\n // use getting to easily mock it\n get roles() {\n return this.rolesToGet();\n }\n\n // mock this method to get different roles\n rolesToGet() {\n return {};\n }\n\n async edit(editCommunityOptions: any) {\n if (!this.address || typeof this.address !== \"string\") {\n throw Error(`can't community.edit with no community.address`);\n }\n const previousAddress = this.address;\n\n // do community.edit\n for (const prop in editCommunityOptions) {\n if (editCommunityOptions[prop] !== undefined) {\n const descriptor =\n Object.getOwnPropertyDescriptor(this, prop) ||\n Object.getOwnPropertyDescriptor(Object.getPrototypeOf(this), prop);\n if (descriptor && !descriptor.writable && !descriptor.set) {\n continue;\n }\n // @ts-ignore\n this[prop] = editCommunityOptions[prop];\n }\n }\n\n // keep a list of edited communities to reinitialize\n // them with pkc.createCommunity()\n editedOwnerCommunities[this.address] = {\n address: this.address,\n title: this.title,\n description: this.description,\n };\n\n // handle change of community.address\n if (editCommunityOptions.address) {\n // apply address change to editedOwnerCommunities\n editedOwnerCommunities[previousAddress] = {\n address: this.address,\n title: this.title,\n description: this.description,\n };\n delete editedOwnerCommunities[previousAddress];\n\n // apply address change to createdOwnerCommunities\n createdOwnerCommunities[this.address] = {\n ...createdOwnerCommunities[previousAddress],\n address: this.address,\n };\n delete createdOwnerCommunities[previousAddress];\n }\n }\n}\n// make roles enumarable so it acts like a regular prop\nObject.defineProperty(Community.prototype, \"roles\", { enumerable: true });\n\nlet challengeRequestCount = 0;\nlet challengeAnswerCount = 0;\n\nclass Publication extends EventEmitter {\n timestamp: number | undefined;\n content: string | undefined;\n cid: string | undefined;\n challengeRequestId = `r${++challengeRequestCount}`;\n challengeAnswerId = `a${++challengeAnswerCount}`;\n state: string | undefined;\n publishingState: string | undefined;\n\n async publish() {\n this.state = \"publishing\";\n this.publishingState = \"publishing-challenge-request\";\n this.emit(\"statechange\", \"publishing\");\n this.emit(\"publishingstatechange\", \"publishing-challenge-request\");\n\n await simulateLoadingTime();\n this.simulateChallengeEvent();\n }\n\n simulateChallengeEvent() {\n this.publishingState = \"waiting-challenge-answers\";\n this.emit(\"publishingstatechange\", \"waiting-challenge-answers\");\n\n const challenge = { type: \"text\", challenge: \"2+2=?\" };\n const challengeMessage = {\n type: \"CHALLENGE\",\n challengeRequestId: this.challengeRequestId,\n challenges: [challenge],\n };\n this.emit(\"challenge\", challengeMessage, this);\n }\n\n async publishChallengeAnswers(_challengeAnswers?: string[] | { challengeAnswers?: string[] }) {\n this.publishingState = \"publishing-challenge-answer\";\n this.emit(\"publishingstatechange\", \"publishing-challenge-answer\");\n\n await simulateLoadingTime();\n this.publishingState = \"waiting-challenge-verification\";\n this.emit(\"publishingstatechange\", \"waiting-challenge-verification\");\n\n await simulateLoadingTime();\n this.simulateChallengeVerificationEvent();\n }\n\n simulateChallengeVerificationEvent() {\n // if publication has content, create cid for this content and add it to comment and challengeVerificationMessage\n this.cid = this.content && `${this.content} cid`;\n const commentUpdate = this.cid && { cid: this.cid };\n\n const challengeVerificationMessage = {\n type: \"CHALLENGEVERIFICATION\",\n challengeRequestId: this.challengeRequestId,\n challengeAnswerId: this.challengeAnswerId,\n challengeSuccess: true,\n commentUpdate,\n };\n this.emit(\"challengeverification\", challengeVerificationMessage, this);\n\n this.publishingState = \"succeeded\";\n this.emit(\"publishingstatechange\", \"succeeded\");\n }\n\n stop() {\n if (this.state === \"publishing\" || this.publishingState !== \"stopped\") {\n this.state = \"stopped\";\n this.publishingState = \"stopped\";\n this.emit(\"statechange\", \"stopped\");\n this.emit(\"publishingstatechange\", \"stopped\");\n }\n if ((this as any).updating || (this as any).updatingState !== \"stopped\") {\n (this as any).state = \"stopped\";\n (this as any).updating = false;\n (this as any).updatingState = \"stopped\";\n this.emit(\"statechange\", \"stopped\");\n this.emit(\"updatingstatechange\", \"stopped\");\n }\n }\n}\n\nexport class Comment extends Publication {\n updateCalledTimes = 0;\n updating = false;\n author: any;\n upvoteCount: number | undefined;\n downvoteCount: number | undefined;\n content: string | undefined;\n parentCid: string | undefined;\n replies: any;\n updatedAt: number | undefined;\n communityAddress: string | undefined;\n state: string;\n updatingState: string;\n publishingState: string;\n\n constructor(createCommentOptions?: any) {\n super();\n this.cid = createCommentOptions?.cid;\n this.upvoteCount = createCommentOptions?.upvoteCount;\n this.downvoteCount = createCommentOptions?.downvoteCount;\n this.content = createCommentOptions?.content;\n this.author = createCommentOptions?.author;\n this.timestamp = createCommentOptions?.timestamp;\n this.parentCid = createCommentOptions?.parentCid;\n this.communityAddress = createCommentOptions?.communityAddress;\n this.state = \"stopped\";\n this.updatingState = \"stopped\";\n this.publishingState = \"stopped\";\n\n if (createCommentOptions?.author?.address) {\n this.author.shortAddress = `short ${createCommentOptions.author.address}`;\n }\n\n this.replies = new Pages({ comment: this });\n\n // add comment.replies from createCommentOptions\n if (createCommentOptions?.replies?.pages) {\n this.replies.pages = createCommentOptions?.replies?.pages;\n }\n if (createCommentOptions?.replies?.pageCids) {\n this.replies.pageCids = createCommentOptions?.replies?.pageCids;\n }\n }\n\n async update() {\n this.updateCalledTimes++;\n if (this.updateCalledTimes > 5) {\n throw Error(\n \"with the current hooks, comment.update() should be called maximum 5 times, this number might change if the hooks change and is only there to catch bugs, the real comment.update() can be called infinite times\",\n );\n }\n // don't update twice\n if (this.updating) {\n return;\n }\n this.updating = true;\n\n this.state = \"updating\";\n this.updatingState = \"fetching-ipfs\";\n this.emit(\"statechange\", \"updating\");\n this.emit(\"updatingstatechange\", \"fetching-ipfs\");\n\n simulateLoadingTime().then(() => {\n this.simulateUpdateEvent();\n });\n }\n\n simulateUpdateEvent() {\n if (!this.updating) {\n return;\n }\n // if timestamp isn't defined, simulate fetching the comment ipfs\n if (!this.timestamp) {\n this.simulateFetchCommentIpfsUpdateEvent();\n return;\n }\n\n // simulate finding vote counts on an IPNS record\n this.upvoteCount = typeof this.upvoteCount === \"number\" ? this.upvoteCount + 2 : 3;\n this.downvoteCount = typeof this.downvoteCount === \"number\" ? this.downvoteCount + 1 : 1;\n this.updatedAt = Math.floor(Date.now() / 1000);\n\n this.updatingState = \"succeeded\";\n this.emit(\"update\", this);\n this.emit(\"updatingstatechange\", \"succeeded\");\n }\n\n async simulateFetchCommentIpfsUpdateEvent() {\n if (!this.updating) {\n return;\n }\n // use pkc.getComment() so mocking PKC.prototype.getComment works\n const commentIpfs = await new PKC().getComment({ cid: this.cid || \"\" });\n if (!this.updating) {\n return;\n }\n this.content = commentIpfs.content;\n this.author = commentIpfs.author;\n this.timestamp = commentIpfs.timestamp;\n this.parentCid = commentIpfs.parentCid;\n this.communityAddress = commentIpfs.communityAddress;\n\n // simulate the ipns update\n this.updatingState = \"fetching-update-ipns\";\n this.emit(\"update\", this);\n this.emit(\"updatingstatechange\", \"fetching-update-ipns\");\n simulateLoadingTime().then(() => {\n this.simulateUpdateEvent();\n });\n }\n}\n\nexport class Vote extends Publication {}\n\nexport class CommentEdit extends Publication {}\n\nexport class CommentModeration extends Publication {}\n\nexport class CommunityEdit extends Publication {}\n\nconst createPkc: any = async (...args: any) => {\n return new PKC(...args);\n};\n\ncreatePkc.getShortAddress = (options: { address: string }) => {\n const address = options?.address;\n if (address.includes(\".\")) {\n return address;\n }\n return address.substring(2, 14);\n};\n\ncreatePkc.getShortCid = (options: { cid: string }) => {\n const cid = options?.cid;\n return cid.substring(2, 14);\n};\n\nexport default createPkc;\n"]}
1
+ {"version":3,"file":"pkc-js-mock.js","sourceRoot":"","sources":["../../../src/lib/pkc-js/pkc-js-mock.ts"],"names":[],"mappings":"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","sourcesContent":["import EventEmitter from \"events\";\nimport type { PkcResolveAuthorNameOptions, PkcResolveAuthorNameResult } from \"../pkc-types\";\n\nconst loadingTime = 10;\nexport const simulateLoadingTime = () => new Promise((r) => setTimeout(r, loadingTime));\n\n// keep a list of created and edited owner communities\n// to reinitialize them with pkc.createCommunity()\nlet createdOwnerCommunities: any = {};\nlet editedOwnerCommunities: any = {};\n\n// reset the pkc-js global state in between tests\nexport const resetPkcJsMock = () => {\n createdOwnerCommunities = {};\n editedOwnerCommunities = {};\n};\nexport const debugPkcJsMock = () => {\n console.log({ createdOwnerCommunities, editedOwnerCommunities });\n};\n\nclass NameResolverClient extends EventEmitter {\n state = \"stopped\";\n}\n\nexport class PKC extends EventEmitter {\n nameResolvers: any[];\n _clientsManager: {\n clients: {\n nameResolvers: { [resolverKey: string]: NameResolverClient };\n };\n };\n\n constructor(options: any = {}) {\n super();\n this.nameResolvers = options?.nameResolvers || [];\n this._clientsManager = {\n clients: {\n nameResolvers: this.nameResolvers.reduce(\n (resolverClients: { [resolverKey: string]: NameResolverClient }, resolver: any) => ({\n ...resolverClients,\n [resolver.key]: new NameResolverClient(),\n }),\n {},\n ),\n },\n };\n }\n\n async resolveAuthorAddress(options: { address: string }) {\n const resolver = this.nameResolvers.find((nameResolver) =>\n nameResolver?.canResolve?.({ name: options.address }),\n );\n const resolverClient = resolver && this._clientsManager.clients.nameResolvers[resolver.key];\n if (resolverClient) {\n resolverClient.state = \"resolving-author-name\";\n resolverClient.emit(\"statechange\", resolverClient.state);\n }\n await simulateLoadingTime();\n if (resolverClient) {\n resolverClient.state = \"stopped\";\n resolverClient.emit(\"statechange\", resolverClient.state);\n }\n return \"resolved author address\";\n }\n\n async resolveAuthorName(\n options: PkcResolveAuthorNameOptions,\n ): Promise<PkcResolveAuthorNameResult> {\n const resolvedAuthorName = await this.resolveAuthorAddress({ address: options.name });\n return { resolvedAuthorName };\n }\n\n async createSigner() {\n return {\n privateKey: \"private key\",\n address: \"address\",\n };\n }\n\n async createCommunity(createCommunityOptions: any) {\n if (!createCommunityOptions) {\n createCommunityOptions = {};\n }\n const communityIdentifier =\n createCommunityOptions.address ||\n createCommunityOptions.name ||\n createCommunityOptions.publicKey;\n\n // no address provided so probably a user creating an owner community\n if (!communityIdentifier) {\n createCommunityOptions = {\n ...createCommunityOptions,\n address: \"created community address\",\n };\n // createdCommunityAddresses.push('created community address')\n createdOwnerCommunities[createCommunityOptions.address] = { ...createCommunityOptions };\n }\n // only address provided, so could be a previously created owner community\n // add props from previously created sub\n else if (\n (createdOwnerCommunities[createCommunityOptions.address] &&\n JSON.stringify(Object.keys(createCommunityOptions)) === '[\"address\"]') ||\n (createdOwnerCommunities[createCommunityOptions.name] &&\n JSON.stringify(Object.keys(createCommunityOptions)) === '[\"name\"]')\n ) {\n const ownerCommunityAddress = createCommunityOptions.address || createCommunityOptions.name;\n for (const prop in createdOwnerCommunities[ownerCommunityAddress]) {\n if (createdOwnerCommunities[ownerCommunityAddress][prop]) {\n createCommunityOptions[prop] = createdOwnerCommunities[ownerCommunityAddress][prop];\n }\n }\n }\n\n // add edited props if owner community was edited in the past\n if (editedOwnerCommunities[createCommunityOptions.address]) {\n for (const prop in editedOwnerCommunities[createCommunityOptions.address]) {\n if (editedOwnerCommunities[createCommunityOptions.address][prop]) {\n createCommunityOptions[prop] =\n editedOwnerCommunities[createCommunityOptions.address][prop];\n }\n }\n }\n\n return new Community(createCommunityOptions);\n }\n\n async getCommunity(options: { address: string }) {\n const address = options?.address;\n await simulateLoadingTime();\n const createCommunityOptions = { address };\n const community: any = new Community(createCommunityOptions);\n community.title = community.address + \" title\";\n const hotPageCid = community.address + \" page cid hot\";\n community.posts.pages.hot = community.posts.pageToGet(hotPageCid);\n community.posts.pageCids = {\n hot: hotPageCid,\n topAll: community.address + \" page cid topAll\",\n new: community.address + \" page cid new\",\n active: community.address + \" page cid active\",\n };\n community.modQueue.pageCids = {\n pendingApproval: community.address + \" page cid pendingApproval\",\n };\n return community;\n }\n\n // TODO: implement event communitieschange\n get communities() {\n return [\n ...new Set([\n \"list community address 1\",\n \"list community address 2\",\n ...Object.keys(createdOwnerCommunities),\n ]),\n ];\n }\n\n async createComment(createCommentOptions: any) {\n return new Comment(createCommentOptions);\n }\n\n async getComment(options: { cid: string }) {\n const cid = options?.cid;\n await simulateLoadingTime();\n const createCommentOptions = {\n cid,\n // useComment() requires timestamp or will use account comment instead of comment from store\n timestamp: 1670000000,\n ...this.commentToGet(cid),\n };\n return new Comment(createCommentOptions);\n }\n\n // mock this method to get a comment with different content, timestamp, address, etc\n commentToGet(commentCid?: string) {\n return {\n // content: 'mock some content'\n // author: {address: 'mock some address'},\n // timestamp: 1234\n };\n }\n\n async createVote() {\n return new Vote();\n }\n\n async createCommentEdit(createCommentEditOptions: any) {\n return new CommentEdit(createCommentEditOptions);\n }\n\n async createCommentModeration(createCommentModerationOptions: any) {\n return new CommentModeration(createCommentModerationOptions);\n }\n\n async createCommunityEdit(createCommunityEditOptions: any) {\n return new CommunityEdit(createCommunityEditOptions);\n }\n\n async fetchCid(options: { cid: string }) {\n const cid = options?.cid;\n if (cid?.startsWith(\"statscid\")) {\n return JSON.stringify({ hourActiveUserCount: 1 });\n }\n throw Error(`pkc.fetchCid not implemented in pkc-js mock for cid '${cid}'`);\n }\n\n async pubsubSubscribe(communityAddress: string) {}\n async pubsubUnsubscribe(communityAddress: string) {}\n\n clients = (() => {\n const pkcRpcClients = {\n \"http://localhost:9138\": new PkcRpcClient(),\n };\n return {\n pkcRpcClients,\n };\n })();\n\n async validateComment(comment: any, validateCommentOptions: any) {}\n}\n\nclass PkcRpcClient extends EventEmitter {\n state = \"connecting\";\n settings: any = undefined;\n constructor() {\n super();\n // simulate connecting to the rpc\n setTimeout(() => {\n this.state = \"connected\";\n this.settings = { challenges: {} };\n this.emit(\"statechange\", this.state);\n this.emit(\"settingschange\", this.settings);\n }, 10);\n }\n\n async setSettings(settings: any) {\n this.settings = settings;\n this.emit(\"settingschange\", this.settings);\n }\n}\n\nexport class Pages {\n pageCids: any = {};\n pages: any = {};\n community: any;\n comment: any;\n\n constructor(pagesOptions?: any) {\n Object.defineProperty(this, \"community\", {\n value: pagesOptions?.community,\n enumerable: false,\n });\n Object.defineProperty(this, \"comment\", { value: pagesOptions?.comment, enumerable: false });\n }\n\n async getPage(options: { cid: string }) {\n const cid = options?.cid;\n // need to wait twice otherwise react renders too fast and fetches too many pages in advance\n await simulateLoadingTime();\n return this.pageToGet(cid);\n }\n\n async validatePage(page: any) {}\n\n // mock this method to get pages with different content, or use to getPage without simulated loading time\n pageToGet(pageCid: string) {\n const communityAddress = this.community?.address || this.comment?.communityAddress;\n const isPendingApprovalPage = pageCid.includes(\"pendingApproval\");\n const page: any = {\n nextCid: communityAddress + \" \" + pageCid + \" - next page cid\",\n comments: [],\n };\n const postCount = 100;\n let index = 0;\n while (index++ < postCount) {\n const comment: any = {\n timestamp: index,\n cid: pageCid + \" comment cid \" + index,\n communityAddress,\n upvoteCount: index,\n downvoteCount: 10,\n author: {\n address: pageCid + \" author address \" + index,\n },\n updatedAt: index,\n };\n if (isPendingApprovalPage) {\n comment.pendingApproval = true;\n }\n page.comments.push(comment);\n }\n return page;\n }\n}\n\nexport class Community extends EventEmitter {\n updateCalledTimes = 0;\n updating = false;\n firstUpdate = true;\n address: string | undefined;\n publicKey: string | undefined;\n title: string | undefined;\n description: string | undefined;\n posts: Pages;\n modQueue: Pages;\n exportRecords: any[];\n updatedAt: number | undefined;\n statsCid: string | undefined;\n state: string;\n updatingState: string;\n\n constructor(createCommunityOptions?: any) {\n super();\n this.address =\n createCommunityOptions?.address ||\n createCommunityOptions?.name ||\n createCommunityOptions?.publicKey;\n this.publicKey = createCommunityOptions?.publicKey || this.address;\n this.title = createCommunityOptions?.title;\n this.description = createCommunityOptions?.description;\n this.statsCid = \"statscid\";\n this.state = \"stopped\";\n this.updatingState = \"stopped\";\n this.updatedAt = createCommunityOptions?.updatedAt;\n this.exportRecords = [];\n\n this.posts = new Pages({ community: this });\n // add community.posts from createCommunityOptions\n if (createCommunityOptions?.posts?.pages) {\n this.posts.pages = createCommunityOptions?.posts?.pages;\n }\n if (createCommunityOptions?.posts?.pageCids) {\n this.posts.pageCids = createCommunityOptions?.posts?.pageCids;\n }\n\n this.modQueue = new Pages({ community: this });\n // add community.modQueue from createCommunityOptions\n if (createCommunityOptions?.modQueue?.pageCids) {\n this.modQueue.pageCids = createCommunityOptions?.modQueue?.pageCids;\n }\n\n if (createCommunityOptions) {\n for (const prop in createCommunityOptions) {\n if (createCommunityOptions[prop] !== undefined) {\n const descriptor =\n Object.getOwnPropertyDescriptor(this, prop) ||\n Object.getOwnPropertyDescriptor(Object.getPrototypeOf(this), prop);\n if (descriptor && !descriptor.writable && !descriptor.set) {\n continue;\n }\n // @ts-ignore\n this[prop] = createCommunityOptions[prop];\n }\n }\n }\n\n const lookupKeys = [\"address\", \"name\", \"publicKey\"];\n const createCommunityOptionKeys = Object.keys(createCommunityOptions || {});\n const hasLookupIdentifier = Boolean(\n createCommunityOptions?.address ||\n createCommunityOptions?.name ||\n createCommunityOptions?.publicKey,\n );\n const lookupOnly =\n hasLookupIdentifier &&\n createCommunityOptionKeys.length > 0 &&\n createCommunityOptionKeys.every((key) => lookupKeys.includes(key));\n\n // only trigger a first update for lookup-only remote community instances\n if (!lookupOnly) {\n this.firstUpdate = false;\n }\n }\n\n async update() {\n this.updateCalledTimes++;\n if (!this.address) {\n throw Error(`can't update without community.address`);\n }\n // don't update twice\n if (this.updating) {\n return;\n }\n this.updating = true;\n\n this.state = \"updating\";\n this.updatingState = \"fetching-ipns\";\n this.emit(\"statechange\", \"updating\");\n this.emit(\"updatingstatechange\", \"fetching-ipns\");\n\n simulateLoadingTime().then(() => {\n this.simulateUpdateEvent();\n });\n }\n\n async delete() {\n if (this.address) {\n delete createdOwnerCommunities[this.address];\n delete editedOwnerCommunities[this.address];\n }\n }\n\n get exports() {\n return this.exportRecords.map((record) => ({ ...record }));\n }\n\n async export(exportCommunityOptions: any = {}) {\n if (!this.address) {\n throw Error(`can't community.export with no community.address`);\n }\n const exportRecord = {\n exportId: `${this.address} export ${this.exportRecords.length + 1}`,\n name: this.address,\n publicKey: this.publicKey || this.address,\n includePrivateKey: exportCommunityOptions.includePrivateKey === true,\n progress: 1,\n url: `file://${this.address}.zip`,\n };\n this.exportRecords.push(exportRecord);\n this.emit(\"exportschange\", this.exports);\n return { exportId: exportRecord.exportId };\n }\n\n simulateUpdateEvent() {\n if (this.firstUpdate) {\n this.simulateFirstUpdateEvent();\n return;\n }\n\n this.description = this.address + \" description updated\";\n // @ts-ignore\n this.updatedAt = this.updatedAt + 1;\n\n this.updating = false;\n this.updatingState = \"succeeded\";\n this.emit(\"update\", this);\n this.emit(\"updatingstatechange\", \"succeeded\");\n }\n\n // the first update event adds all the field from getCommunity\n async simulateFirstUpdateEvent() {\n this.firstUpdate = false;\n this.updatedAt = Math.floor(Date.now() / 1000);\n\n this.title = this.address + \" title\";\n const hotPageCid = this.address + \" page cid hot\";\n this.posts.pages.hot = this.posts.pageToGet(hotPageCid);\n this.posts.pageCids = {\n hot: hotPageCid,\n topAll: this.address + \" page cid topAll\",\n new: this.address + \" page cid new\",\n active: this.address + \" page cid active\",\n };\n this.modQueue.pageCids = {\n pendingApproval: this.address + \" page cid pendingApproval\",\n };\n\n // simulate the ipns update\n this.updatingState = \"succeeded\";\n this.emit(\"update\", this);\n this.emit(\"updatingstatechange\", \"succeeded\");\n\n // simulate the next update\n this.updatingState = \"fetching-ipns\";\n this.emit(\"updatingstatechange\", \"fetching-ipns\");\n simulateLoadingTime().then(() => {\n this.simulateUpdateEvent();\n });\n }\n\n // use getting to easily mock it\n get roles() {\n return this.rolesToGet();\n }\n\n // mock this method to get different roles\n rolesToGet() {\n return {};\n }\n\n async edit(editCommunityOptions: any) {\n if (!this.address || typeof this.address !== \"string\") {\n throw Error(`can't community.edit with no community.address`);\n }\n const previousAddress = this.address;\n\n // do community.edit\n for (const prop in editCommunityOptions) {\n if (editCommunityOptions[prop] !== undefined) {\n const descriptor =\n Object.getOwnPropertyDescriptor(this, prop) ||\n Object.getOwnPropertyDescriptor(Object.getPrototypeOf(this), prop);\n if (descriptor && !descriptor.writable && !descriptor.set) {\n continue;\n }\n // @ts-ignore\n this[prop] = editCommunityOptions[prop];\n }\n }\n\n // keep a list of edited communities to reinitialize\n // them with pkc.createCommunity()\n editedOwnerCommunities[this.address] = {\n address: this.address,\n title: this.title,\n description: this.description,\n };\n\n // handle change of community.address\n if (editCommunityOptions.address) {\n // apply address change to editedOwnerCommunities\n editedOwnerCommunities[previousAddress] = {\n address: this.address,\n title: this.title,\n description: this.description,\n };\n delete editedOwnerCommunities[previousAddress];\n\n // apply address change to createdOwnerCommunities\n createdOwnerCommunities[this.address] = {\n ...createdOwnerCommunities[previousAddress],\n address: this.address,\n };\n delete createdOwnerCommunities[previousAddress];\n }\n }\n}\n// make roles enumarable so it acts like a regular prop\nObject.defineProperty(Community.prototype, \"roles\", { enumerable: true });\n\nlet challengeRequestCount = 0;\nlet challengeAnswerCount = 0;\n\nclass Publication extends EventEmitter {\n timestamp: number | undefined;\n content: string | undefined;\n cid: string | undefined;\n challengeRequestId = `r${++challengeRequestCount}`;\n challengeAnswerId = `a${++challengeAnswerCount}`;\n state: string | undefined;\n publishingState: string | undefined;\n\n async publish() {\n this.state = \"publishing\";\n this.publishingState = \"publishing-challenge-request\";\n this.emit(\"statechange\", \"publishing\");\n this.emit(\"publishingstatechange\", \"publishing-challenge-request\");\n\n await simulateLoadingTime();\n this.simulateChallengeEvent();\n }\n\n simulateChallengeEvent() {\n this.publishingState = \"waiting-challenge-answers\";\n this.emit(\"publishingstatechange\", \"waiting-challenge-answers\");\n\n const challenge = { type: \"text\", challenge: \"2+2=?\" };\n const challengeMessage = {\n type: \"CHALLENGE\",\n challengeRequestId: this.challengeRequestId,\n challenges: [challenge],\n };\n this.emit(\"challenge\", challengeMessage, this);\n }\n\n async publishChallengeAnswers(_challengeAnswers?: string[] | { challengeAnswers?: string[] }) {\n this.publishingState = \"publishing-challenge-answer\";\n this.emit(\"publishingstatechange\", \"publishing-challenge-answer\");\n\n await simulateLoadingTime();\n this.publishingState = \"waiting-challenge-verification\";\n this.emit(\"publishingstatechange\", \"waiting-challenge-verification\");\n\n await simulateLoadingTime();\n this.simulateChallengeVerificationEvent();\n }\n\n simulateChallengeVerificationEvent() {\n // if publication has content, create cid for this content and add it to comment and challengeVerificationMessage\n this.cid = this.content && `${this.content} cid`;\n const commentUpdate = this.cid && { cid: this.cid };\n\n const challengeVerificationMessage = {\n type: \"CHALLENGEVERIFICATION\",\n challengeRequestId: this.challengeRequestId,\n challengeAnswerId: this.challengeAnswerId,\n challengeSuccess: true,\n commentUpdate,\n };\n this.emit(\"challengeverification\", challengeVerificationMessage, this);\n\n this.publishingState = \"succeeded\";\n this.emit(\"publishingstatechange\", \"succeeded\");\n }\n\n stop() {\n if (this.state === \"publishing\" || this.publishingState !== \"stopped\") {\n this.state = \"stopped\";\n this.publishingState = \"stopped\";\n this.emit(\"statechange\", \"stopped\");\n this.emit(\"publishingstatechange\", \"stopped\");\n }\n if ((this as any).updating || (this as any).updatingState !== \"stopped\") {\n (this as any).state = \"stopped\";\n (this as any).updating = false;\n (this as any).updatingState = \"stopped\";\n this.emit(\"statechange\", \"stopped\");\n this.emit(\"updatingstatechange\", \"stopped\");\n }\n }\n}\n\nexport class Comment extends Publication {\n updateCalledTimes = 0;\n updating = false;\n author: any;\n upvoteCount: number | undefined;\n downvoteCount: number | undefined;\n content: string | undefined;\n parentCid: string | undefined;\n replies: any;\n updatedAt: number | undefined;\n communityAddress: string | undefined;\n state: string;\n updatingState: string;\n publishingState: string;\n\n constructor(createCommentOptions?: any) {\n super();\n this.cid = createCommentOptions?.cid;\n this.upvoteCount = createCommentOptions?.upvoteCount;\n this.downvoteCount = createCommentOptions?.downvoteCount;\n this.content = createCommentOptions?.content;\n this.author = createCommentOptions?.author;\n this.timestamp = createCommentOptions?.timestamp;\n this.parentCid = createCommentOptions?.parentCid;\n this.communityAddress = createCommentOptions?.communityAddress;\n this.state = \"stopped\";\n this.updatingState = \"stopped\";\n this.publishingState = \"stopped\";\n\n if (createCommentOptions?.author?.address) {\n this.author.shortAddress = `short ${createCommentOptions.author.address}`;\n }\n\n this.replies = new Pages({ comment: this });\n\n // add comment.replies from createCommentOptions\n if (createCommentOptions?.replies?.pages) {\n this.replies.pages = createCommentOptions?.replies?.pages;\n }\n if (createCommentOptions?.replies?.pageCids) {\n this.replies.pageCids = createCommentOptions?.replies?.pageCids;\n }\n }\n\n async update() {\n this.updateCalledTimes++;\n if (this.updateCalledTimes > 5) {\n throw Error(\n \"with the current hooks, comment.update() should be called maximum 5 times, this number might change if the hooks change and is only there to catch bugs, the real comment.update() can be called infinite times\",\n );\n }\n // don't update twice\n if (this.updating) {\n return;\n }\n this.updating = true;\n\n this.state = \"updating\";\n this.updatingState = \"fetching-ipfs\";\n this.emit(\"statechange\", \"updating\");\n this.emit(\"updatingstatechange\", \"fetching-ipfs\");\n\n simulateLoadingTime().then(() => {\n this.simulateUpdateEvent();\n });\n }\n\n simulateUpdateEvent() {\n if (!this.updating) {\n return;\n }\n // if timestamp isn't defined, simulate fetching the comment ipfs\n if (!this.timestamp) {\n this.simulateFetchCommentIpfsUpdateEvent();\n return;\n }\n\n // simulate finding vote counts on an IPNS record\n this.upvoteCount = typeof this.upvoteCount === \"number\" ? this.upvoteCount + 2 : 3;\n this.downvoteCount = typeof this.downvoteCount === \"number\" ? this.downvoteCount + 1 : 1;\n this.updatedAt = Math.floor(Date.now() / 1000);\n\n this.updatingState = \"succeeded\";\n this.emit(\"update\", this);\n this.emit(\"updatingstatechange\", \"succeeded\");\n }\n\n async simulateFetchCommentIpfsUpdateEvent() {\n if (!this.updating) {\n return;\n }\n // use pkc.getComment() so mocking PKC.prototype.getComment works\n const commentIpfs = await new PKC().getComment({ cid: this.cid || \"\" });\n if (!this.updating) {\n return;\n }\n this.content = commentIpfs.content;\n this.author = commentIpfs.author;\n this.timestamp = commentIpfs.timestamp;\n this.parentCid = commentIpfs.parentCid;\n this.communityAddress = commentIpfs.communityAddress;\n\n // simulate the ipns update\n this.updatingState = \"fetching-update-ipns\";\n this.emit(\"update\", this);\n this.emit(\"updatingstatechange\", \"fetching-update-ipns\");\n simulateLoadingTime().then(() => {\n this.simulateUpdateEvent();\n });\n }\n}\n\nexport class Vote extends Publication {}\n\nexport class CommentEdit extends Publication {}\n\nexport class CommentModeration extends Publication {}\n\nexport class CommunityEdit extends Publication {}\n\nconst createPkc: any = async (...args: any) => {\n return new PKC(...args);\n};\n\ncreatePkc.getShortAddress = (options: { address: string }) => {\n const address = options?.address;\n if (address.includes(\".\")) {\n return address;\n }\n return address.substring(2, 14);\n};\n\ncreatePkc.getShortCid = (options: { cid: string }) => {\n const cid = options?.cid;\n return cid.substring(2, 14);\n};\n\nexport default createPkc;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"communities-store.d.ts","sourceRoot":"","sources":["../../../src/stores/communities/communities-store.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,WAAW,EAIZ,MAAM,aAAa,CAAC;AAcrB,eAAO,MAAM,4BAA4B,QAAiB,CAAC;AA6I3D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE;QAAE,CAAC,gBAAgB,EAAE,MAAM,GAAG,KAAK,EAAE,CAAA;KAAE,CAAC;IAChD,mBAAmB,EAAE,QAAQ,CAAC;IAC9B,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,aAAa,EAAE,QAAQ,CAAC;IACxB,eAAe,EAAE,QAAQ,CAAC;IAC1B,eAAe,EAAE,QAAQ,CAAC;CAC3B,CAAC;AAEF,QAAA,MAAM,gBAAgB,+EAmVrB,CAAC;AAKF,eAAO,MAAM,qBAAqB,qBAWjC,CAAC;AAGF,eAAO,MAAM,gCAAgC,qBAG5C,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"communities-store.d.ts","sourceRoot":"","sources":["../../../src/stores/communities/communities-store.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,WAAW,EAIZ,MAAM,aAAa,CAAC;AAcrB,eAAO,MAAM,4BAA4B,QAAiB,CAAC;AA6I3D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE;QAAE,CAAC,gBAAgB,EAAE,MAAM,GAAG,KAAK,EAAE,CAAA;KAAE,CAAC;IAChD,mBAAmB,EAAE,QAAQ,CAAC;IAC9B,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,aAAa,EAAE,QAAQ,CAAC;IACxB,eAAe,EAAE,QAAQ,CAAC;IAC1B,eAAe,EAAE,QAAQ,CAAC;CAC3B,CAAC;AAEF,QAAA,MAAM,gBAAgB,+EA0WrB,CAAC;AAKF,eAAO,MAAM,qBAAqB,qBAWjC,CAAC;AAGF,eAAO,MAAM,gCAAgC,qBAG5C,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -118,6 +118,7 @@ const communitiesStore = createStore((setState, getState) => ({
118
118
  errors: {},
119
119
  addCommunityToStore(communityAddressOrRef, account) {
120
120
  return __awaiter(this, void 0, void 0, function* () {
121
+ var _a, _b;
121
122
  const communityLookupOptions = getCommunityLookupOptions(communityAddressOrRef);
122
123
  const communityKey = typeof communityAddressOrRef === "string"
123
124
  ? communityAddressOrRef
@@ -148,7 +149,22 @@ const communitiesStore = createStore((setState, getState) => ({
148
149
  let fetchedAt;
149
150
  if (!community) {
150
151
  const communityData = yield communitiesDatabase.getItem(communityKey);
151
- if (communityData) {
152
+ const lookupName = "name" in communityLookupOptions ? communityLookupOptions.name : undefined;
153
+ const lookupPublicKey = "publicKey" in communityLookupOptions ? communityLookupOptions.publicKey : undefined;
154
+ const lookupAddress = "address" in communityLookupOptions ? communityLookupOptions.address : undefined;
155
+ const hasCachedPosts = Object.keys(((_a = communityData === null || communityData === void 0 ? void 0 : communityData.posts) === null || _a === void 0 ? void 0 : _a.pageCids) || {}).length > 0 ||
156
+ Object.keys(((_b = communityData === null || communityData === void 0 ? void 0 : communityData.posts) === null || _b === void 0 ? void 0 : _b.pages) || {}).length > 0;
157
+ const isUnresolvedNameCache = communityData &&
158
+ lookupName &&
159
+ !lookupPublicKey &&
160
+ !lookupAddress &&
161
+ !communityData.publicKey &&
162
+ !communityData.updatedAt &&
163
+ !communityData.updateCid &&
164
+ !communityData.title &&
165
+ !communityData.description &&
166
+ !hasCachedPosts;
167
+ if (communityData && !isUnresolvedNameCache) {
152
168
  fetchedAt = communityData.fetchedAt;
153
169
  delete communityData.fetchedAt; // not part of pkc-js schema
154
170
  try {
@@ -190,7 +206,7 @@ const communitiesStore = createStore((setState, getState) => ({
190
206
  Error(`communitiesStore.addCommunityToStore failed getting community '${communityKey}'`));
191
207
  }
192
208
  // success getting community
193
- const firstCommunityState = utils.clone(Object.assign(Object.assign({}, community), { fetchedAt }));
209
+ const firstCommunityState = utils.clone(Object.assign(Object.assign({}, community), (fetchedAt !== undefined ? { fetchedAt } : undefined)));
194
210
  yield communitiesDatabase.setItem(communityKey, firstCommunityState);
195
211
  log("communitiesStore.addCommunityToStore", {
196
212
  communityAddressOrRef,
@@ -1 +1 @@
1
- {"version":3,"file":"communities-store.js","sourceRoot":"","sources":["../../../src/stores/communities/communities-store.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from \"assert\";\nimport localForageLru from \"../../lib/localforage-lru\";\nconst communitiesDatabase = localForageLru.createInstance({\n name: \"bitsocialReactHooks-communities\",\n size: 500,\n});\nimport Logger from \"@pkcprotocol/pkc-logger\";\nconst log = Logger(\"bitsocial-react-hooks:communities:stores\");\nimport {\n Community,\n Communities,\n Account,\n CommunityIdentifier,\n CreateCommunityOptions,\n} from \"../../types\";\nimport utils from \"../../lib/utils\";\nimport createStore from \"zustand\";\nimport accountsStore from \"../accounts\";\nimport communitiesPagesStore from \"../communities-pages\";\nimport { getCommunityLookupOptions, getCommunityRefKey } from \"../../lib/community-ref\";\nimport {\n createPkcCommunity,\n getPkcCommunity,\n getPkcCommunityAddresses,\n getPkcCreateCommunity,\n getPkcGetCommunity,\n} from \"../../lib/pkc-compat\";\n\nexport const COMMUNITY_UPDATE_INTERVAL_MS = 15 * 60 * 1000;\n\nlet pkcGetCommunityPending: { [key: string]: boolean } = {};\n// Key pollers by community so delete/reset can stop the matching live instance.\nconst communityUpdatePollers: {\n [communityKey: string]: {\n community: any;\n updateInterval: ReturnType<typeof setInterval>;\n };\n} = {};\n\n// reset all event listeners in between tests\nconst listeners: any = [];\n\nconst COMMUNITY_ERROR_UPDATE_GRACE_MS = 1000;\nconst pendingCommunityErrorTimers: {\n [communityKey: string]: ReturnType<typeof setTimeout>[];\n} = {};\n\nconst createCommunityWithLookupFallback = async (\n pkc: any,\n communityLookupOptions: { address?: string; name?: string; publicKey?: string },\n communityKey: string,\n) => {\n const supportsAddressLookup = \"address\" in communityLookupOptions;\n const community = await createPkcCommunity(pkc, communityLookupOptions);\n if (community?.address || supportsAddressLookup) {\n return community;\n }\n throw Error(`communitiesStore.addCommunityToStore failed getting community '${communityKey}'`);\n};\n\nconst updateCommunity = (\n community: Community,\n {\n communityAddressOrRef,\n communityKey,\n }: { communityAddressOrRef: string | CommunityIdentifier; communityKey: string },\n) => {\n community.update().catch((error: unknown) =>\n log.trace(\"community.update error\", {\n communityAddressOrRef,\n communityKey,\n community,\n error,\n }),\n );\n};\n\nconst startCommunityUpdatePolling = (\n community: Community,\n {\n communityAddressOrRef,\n communityKey,\n }: { communityAddressOrRef: string | CommunityIdentifier; communityKey: string },\n) => {\n stopCommunityUpdatePolling(communityKey);\n updateCommunity(community, { communityAddressOrRef, communityKey });\n communityUpdatePollers[communityKey] = {\n community,\n updateInterval: setInterval(\n () => updateCommunity(community, { communityAddressOrRef, communityKey }),\n COMMUNITY_UPDATE_INTERVAL_MS,\n ),\n };\n};\n\nconst stopCommunityUpdatePolling = (communityKey: string) => {\n const polling = communityUpdatePollers[communityKey];\n if (!polling) {\n return;\n }\n\n clearPendingCommunityErrors(communityKey);\n clearInterval(polling.updateInterval);\n polling.community.removeAllListeners();\n const listenerIndex = listeners.indexOf(polling.community);\n if (listenerIndex >= 0) {\n listeners.splice(listenerIndex, 1);\n }\n delete communityUpdatePollers[communityKey];\n};\n\nconst clearPendingCommunityErrors = (communityKey: string) => {\n pendingCommunityErrorTimers[communityKey]?.forEach((timeout) => clearTimeout(timeout));\n delete pendingCommunityErrorTimers[communityKey];\n};\n\nconst clearStoredCommunityErrors = (state: CommunitiesState, communityKey: string) => {\n if (!state.errors[communityKey]) {\n return state.errors;\n }\n const nextErrors = { ...state.errors };\n delete nextErrors[communityKey];\n return nextErrors;\n};\n\nconst isRetriableCommunityLoadError = (error: Error) => {\n const details = (error as Error & { details?: unknown }).details;\n return Boolean(\n details &&\n typeof details === \"object\" &&\n \"retriableError\" in details &&\n (details as { retriableError?: unknown }).retriableError === true,\n );\n};\n\nconst scheduleCommunityError = (setState: Function, communityKey: string, error: Error) => {\n if (isRetriableCommunityLoadError(error)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n const pendingTimeouts = pendingCommunityErrorTimers[communityKey];\n if (!pendingTimeouts?.includes(timeout)) {\n return;\n }\n\n const remainingTimeouts = pendingTimeouts.filter(\n (pendingTimeout) => pendingTimeout !== timeout,\n );\n if (remainingTimeouts.length === 0) {\n delete pendingCommunityErrorTimers[communityKey];\n } else {\n pendingCommunityErrorTimers[communityKey] = remainingTimeouts;\n }\n setState((state: CommunitiesState) => {\n const communityErrors = state.errors[communityKey] || [];\n return {\n ...state,\n errors: { ...state.errors, [communityKey]: [...communityErrors, error] },\n };\n });\n }, COMMUNITY_ERROR_UPDATE_GRACE_MS);\n\n pendingCommunityErrorTimers[communityKey] = [\n ...(pendingCommunityErrorTimers[communityKey] || []),\n timeout,\n ];\n};\n\nexport type CommunitiesState = {\n communities: Communities;\n errors: { [communityAddress: string]: Error[] };\n addCommunityToStore: Function;\n refreshCommunity: Function;\n editCommunity: Function;\n createCommunity: Function;\n deleteCommunity: Function;\n};\n\nconst communitiesStore = createStore<CommunitiesState>(\n (setState: Function, getState: Function) => ({\n communities: {},\n errors: {},\n\n async addCommunityToStore(\n communityAddressOrRef: string | CommunityIdentifier,\n account: Account,\n ) {\n const communityLookupOptions = getCommunityLookupOptions(communityAddressOrRef);\n const communityKey =\n typeof communityAddressOrRef === \"string\"\n ? communityAddressOrRef\n : getCommunityRefKey(communityAddressOrRef);\n assert(\n communityKey !== \"\" && typeof communityKey === \"string\",\n `communitiesStore.addCommunityToStore invalid communityAddress argument '${communityAddressOrRef}'`,\n );\n assert(\n typeof getPkcCreateCommunity(account?.pkc) === \"function\",\n `communitiesStore.addCommunityToStore invalid account argument '${account}'`,\n );\n\n // community is in store already, do nothing\n const { communities } = getState();\n let community: Community | undefined = communities[communityKey];\n const pendingKey = communityKey + account.id;\n if (community || pkcGetCommunityPending[pendingKey]) {\n return;\n }\n\n // start trying to get community\n pkcGetCommunityPending[pendingKey] = true;\n let errorGettingCommunity: any;\n try {\n // try to find community in owner communities\n if (getPkcCommunityAddresses(account.pkc).includes(communityKey)) {\n try {\n community = await createCommunityWithLookupFallback(\n account.pkc,\n communityLookupOptions,\n communityKey,\n );\n } catch (e) {\n errorGettingCommunity = e;\n }\n }\n\n // try to find community in database\n let fetchedAt: number | undefined;\n if (!community) {\n const communityData: any = await communitiesDatabase.getItem(communityKey);\n if (communityData) {\n fetchedAt = communityData.fetchedAt;\n delete communityData.fetchedAt; // not part of pkc-js schema\n try {\n community = await createPkcCommunity(account.pkc, communityData);\n } catch (e) {\n fetchedAt = undefined;\n // need to log this always or it could silently fail in production and cache never be used\n console.error(\"failed pkc.createCommunity(cachedCommunity)\", {\n cachedCommunity: communityData,\n error: e,\n });\n }\n }\n if (community) {\n // add page comments to communitiesPagesStore so they can be used in useComment\n communitiesPagesStore.getState().addCommunityPageCommentsToStore(community);\n }\n }\n\n // community not in database, try to fetch from pkc-js\n if (!community) {\n try {\n community = await createCommunityWithLookupFallback(\n account.pkc,\n communityLookupOptions,\n communityKey,\n );\n } catch (e) {\n errorGettingCommunity = e;\n }\n }\n\n // failure getting community\n if (!community) {\n if (errorGettingCommunity) {\n setState((state: CommunitiesState) => {\n let communityErrors = state.errors[communityKey] || [];\n communityErrors = [...communityErrors, errorGettingCommunity];\n return { ...state, errors: { ...state.errors, [communityKey]: communityErrors } };\n });\n }\n\n throw (\n errorGettingCommunity ||\n Error(`communitiesStore.addCommunityToStore failed getting community '${communityKey}'`)\n );\n }\n\n // success getting community\n const firstCommunityState = utils.clone({ ...community, fetchedAt });\n await communitiesDatabase.setItem(communityKey, firstCommunityState);\n log(\"communitiesStore.addCommunityToStore\", {\n communityAddressOrRef,\n communityKey,\n community,\n account,\n });\n setState((state: any) => ({\n communities: { ...state.communities, [communityKey]: firstCommunityState },\n }));\n\n // the community has published new posts\n community.on(\"update\", async (updatedCommunity: Community) => {\n clearPendingCommunityErrors(communityKey);\n setState((state: CommunitiesState) => ({\n ...state,\n errors: clearStoredCommunityErrors(state, communityKey),\n }));\n updatedCommunity = utils.clone(updatedCommunity);\n\n // add fetchedAt to be able to expire the cache\n // NOTE: fetchedAt is undefined on owner communities because never stale\n updatedCommunity.fetchedAt = Math.floor(Date.now() / 1000);\n\n await communitiesDatabase.setItem(communityKey, updatedCommunity);\n log(\"communitiesStore community update\", {\n communityAddressOrRef,\n communityKey,\n updatedCommunity,\n account,\n });\n setState((state: any) => ({\n ...state,\n communities: { ...state.communities, [communityKey]: updatedCommunity },\n }));\n\n // if a community has a role with an account's address add it to the account.communities\n accountsStore\n .getState()\n .accountsActionsInternal.addCommunityRoleToAccountsCommunities(updatedCommunity);\n\n // add page comments to communitiesPagesStore so they can be used in useComment\n communitiesPagesStore.getState().addCommunityPageCommentsToStore(updatedCommunity);\n });\n\n community.on(\"updatingstatechange\", (updatingState: string) => {\n setState((state: CommunitiesState) => ({\n communities: {\n ...state.communities,\n [communityKey]: { ...state.communities[communityKey], updatingState },\n },\n }));\n });\n\n community.on(\"error\", (error: Error) => {\n scheduleCommunityError(setState, communityKey, error);\n });\n\n // set clients on community so the frontend can display it, dont persist in db because a reload cancels updating\n utils.clientsOnStateChange(\n community?.clients,\n (clientState: string, clientType: string, clientUrl: string, chainTicker?: string) => {\n setState((state: CommunitiesState) => {\n // make sure not undefined, sometimes happens in e2e tests\n if (!state.communities[communityKey]) {\n return {};\n }\n const clients = { ...state.communities[communityKey]?.clients };\n const client = { state: clientState };\n if (chainTicker) {\n const chainProviders = { ...clients[clientType][chainTicker], [clientUrl]: client };\n clients[clientType] = { ...clients[clientType], [chainTicker]: chainProviders };\n } else {\n clients[clientType] = { ...clients[clientType], [clientUrl]: client };\n }\n return {\n communities: {\n ...state.communities,\n [communityKey]: { ...state.communities[communityKey], clients },\n },\n };\n });\n },\n );\n\n listeners.push(community);\n startCommunityUpdatePolling(community, { communityAddressOrRef, communityKey });\n } finally {\n pkcGetCommunityPending[pendingKey] = false;\n }\n },\n\n async refreshCommunity(communityAddressOrRef: string | CommunityIdentifier, account: Account) {\n const communityLookupOptions = getCommunityLookupOptions(communityAddressOrRef);\n const communityKey =\n typeof communityAddressOrRef === \"string\"\n ? communityAddressOrRef\n : getCommunityRefKey(communityAddressOrRef);\n assert(\n communityKey !== \"\" && typeof communityKey === \"string\",\n `communitiesStore.refreshCommunity invalid communityAddress argument '${communityAddressOrRef}'`,\n );\n assert(\n typeof getPkcGetCommunity(account?.pkc) === \"function\",\n `communitiesStore.refreshCommunity invalid account argument '${account}'`,\n );\n\n const refreshedCommunity = utils.clone(\n await getPkcCommunity(account.pkc, communityLookupOptions),\n );\n refreshedCommunity.fetchedAt = Math.floor(Date.now() / 1000);\n\n await communitiesDatabase.setItem(communityKey, refreshedCommunity);\n log(\"communitiesStore.refreshCommunity\", {\n communityAddressOrRef,\n communityKey,\n refreshedCommunity,\n account,\n });\n setState((state: any) => ({\n communities: { ...state.communities, [communityKey]: refreshedCommunity },\n }));\n\n communitiesPagesStore.getState().addCommunityPageCommentsToStore(refreshedCommunity);\n\n return refreshedCommunity;\n },\n\n // user is the owner of the community and can edit it locally\n async editCommunity(communityAddress: string, communityEditOptions: any, account: Account) {\n assert(\n communityAddress !== \"\" && typeof communityAddress === \"string\",\n `communitiesStore.editCommunity invalid communityAddress argument '${communityAddress}'`,\n );\n assert(\n communityEditOptions && typeof communityEditOptions === \"object\",\n `communitiesStore.editCommunity invalid communityEditOptions argument '${communityEditOptions}'`,\n );\n assert(\n typeof getPkcCreateCommunity(account?.pkc) === \"function\",\n `communitiesStore.editCommunity invalid account argument '${account}'`,\n );\n\n // if not added to store first, community.update() is never called\n await getState().addCommunityToStore(communityAddress, account);\n\n // `communityAddress` is different from `communityEditOptions.address` when editing the community address\n const community = await createPkcCommunity(account.pkc, {\n address: communityAddress,\n });\n\n // could fix some test issues\n community.on(\"error\", console.log);\n\n await community.edit(communityEditOptions);\n\n const updatedCommunity = utils.clone(community);\n // edit db of both old and new community address to not break the UI\n await communitiesDatabase.setItem(communityAddress, updatedCommunity);\n await communitiesDatabase.setItem(community.address, updatedCommunity);\n log(\"communitiesStore.editCommunity\", {\n communityAddress,\n communityEditOptions,\n community,\n account,\n });\n setState((state: any) => ({\n communities: {\n ...state.communities,\n // edit react state of both old and new community address to not break the UI\n [communityAddress]: updatedCommunity,\n [community.address]: updatedCommunity,\n },\n }));\n },\n\n // internal action called by accountsActions.createCommunity\n async createCommunity(createCommunityOptions: CreateCommunityOptions, account: Account) {\n assert(\n !createCommunityOptions || typeof createCommunityOptions === \"object\",\n `communitiesStore.createCommunity invalid createCommunityOptions argument '${createCommunityOptions}'`,\n );\n if (!createCommunityOptions?.signer) {\n assert(\n !createCommunityOptions?.address,\n `communitiesStore.createCommunity createCommunityOptions.address '${createCommunityOptions?.address}' must be undefined to create a community`,\n );\n }\n assert(\n typeof getPkcCreateCommunity(account?.pkc) === \"function\",\n `communitiesStore.createCommunity invalid account argument '${account}'`,\n );\n\n const community = await createPkcCommunity(account.pkc, createCommunityOptions);\n\n // could fix some test issues\n community.on(\"error\", console.log);\n\n // if not added to store first, community.update() is never called\n await getState().addCommunityToStore(community.address, account);\n\n await communitiesDatabase.setItem(community.address, utils.clone(community));\n log(\"communitiesStore.createCommunity\", { createCommunityOptions, community, account });\n setState((state: any) => ({\n communities: { ...state.communities, [community.address]: utils.clone(community) },\n }));\n return community;\n },\n\n // internal action called by accountsActions.deleteCommunity\n async deleteCommunity(communityAddress: string, account: Account) {\n assert(\n communityAddress && typeof communityAddress === \"string\",\n `communitiesStore.deleteCommunity invalid communityAddress argument '${communityAddress}'`,\n );\n assert(\n typeof getPkcCreateCommunity(account?.pkc) === \"function\",\n `communitiesStore.deleteCommunity invalid account argument '${account}'`,\n );\n\n const community = await createPkcCommunity(account.pkc, {\n address: communityAddress,\n });\n\n // could fix some test issues\n community.on(\"error\", console.log);\n\n await community.delete();\n stopCommunityUpdatePolling(communityAddress);\n await communitiesDatabase.removeItem(communityAddress);\n log(\"communitiesStore.deleteCommunity\", { communityAddress, community, account });\n setState((state: any) => ({\n communities: { ...state.communities, [communityAddress]: undefined },\n }));\n },\n }),\n);\n\n// reset store in between tests\nconst originalState = communitiesStore.getState();\n// async function because some stores have async init\nexport const resetCommunitiesStore = async () => {\n pkcGetCommunityPending = {};\n Object.keys(pendingCommunityErrorTimers).forEach(clearPendingCommunityErrors);\n // remove all event listeners\n listeners.forEach((listener: any) => listener.removeAllListeners());\n listeners.length = 0;\n Object.keys(communityUpdatePollers).forEach(stopCommunityUpdatePolling);\n // destroy all component subscriptions to the store\n communitiesStore.destroy();\n // restore original state\n communitiesStore.setState(originalState);\n};\n\n// reset database and store in between tests\nexport const resetCommunitiesDatabaseAndStore = async () => {\n await localForageLru.createInstance({ name: \"bitsocialReactHooks-communities\" }).clear();\n await resetCommunitiesStore();\n};\n\nexport default communitiesStore;\n"]}
1
+ {"version":3,"file":"communities-store.js","sourceRoot":"","sources":["../../../src/stores/communities/communities-store.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from \"assert\";\nimport localForageLru from \"../../lib/localforage-lru\";\nconst communitiesDatabase = localForageLru.createInstance({\n name: \"bitsocialReactHooks-communities\",\n size: 500,\n});\nimport Logger from \"@pkcprotocol/pkc-logger\";\nconst log = Logger(\"bitsocial-react-hooks:communities:stores\");\nimport {\n Community,\n Communities,\n Account,\n CommunityIdentifier,\n CreateCommunityOptions,\n} from \"../../types\";\nimport utils from \"../../lib/utils\";\nimport createStore from \"zustand\";\nimport accountsStore from \"../accounts\";\nimport communitiesPagesStore from \"../communities-pages\";\nimport { getCommunityLookupOptions, getCommunityRefKey } from \"../../lib/community-ref\";\nimport {\n createPkcCommunity,\n getPkcCommunity,\n getPkcCommunityAddresses,\n getPkcCreateCommunity,\n getPkcGetCommunity,\n} from \"../../lib/pkc-compat\";\n\nexport const COMMUNITY_UPDATE_INTERVAL_MS = 15 * 60 * 1000;\n\nlet pkcGetCommunityPending: { [key: string]: boolean } = {};\n// Key pollers by community so delete/reset can stop the matching live instance.\nconst communityUpdatePollers: {\n [communityKey: string]: {\n community: any;\n updateInterval: ReturnType<typeof setInterval>;\n };\n} = {};\n\n// reset all event listeners in between tests\nconst listeners: any = [];\n\nconst COMMUNITY_ERROR_UPDATE_GRACE_MS = 1000;\nconst pendingCommunityErrorTimers: {\n [communityKey: string]: ReturnType<typeof setTimeout>[];\n} = {};\n\nconst createCommunityWithLookupFallback = async (\n pkc: any,\n communityLookupOptions: { address?: string; name?: string; publicKey?: string },\n communityKey: string,\n) => {\n const supportsAddressLookup = \"address\" in communityLookupOptions;\n const community = await createPkcCommunity(pkc, communityLookupOptions);\n if (community?.address || supportsAddressLookup) {\n return community;\n }\n throw Error(`communitiesStore.addCommunityToStore failed getting community '${communityKey}'`);\n};\n\nconst updateCommunity = (\n community: Community,\n {\n communityAddressOrRef,\n communityKey,\n }: { communityAddressOrRef: string | CommunityIdentifier; communityKey: string },\n) => {\n community.update().catch((error: unknown) =>\n log.trace(\"community.update error\", {\n communityAddressOrRef,\n communityKey,\n community,\n error,\n }),\n );\n};\n\nconst startCommunityUpdatePolling = (\n community: Community,\n {\n communityAddressOrRef,\n communityKey,\n }: { communityAddressOrRef: string | CommunityIdentifier; communityKey: string },\n) => {\n stopCommunityUpdatePolling(communityKey);\n updateCommunity(community, { communityAddressOrRef, communityKey });\n communityUpdatePollers[communityKey] = {\n community,\n updateInterval: setInterval(\n () => updateCommunity(community, { communityAddressOrRef, communityKey }),\n COMMUNITY_UPDATE_INTERVAL_MS,\n ),\n };\n};\n\nconst stopCommunityUpdatePolling = (communityKey: string) => {\n const polling = communityUpdatePollers[communityKey];\n if (!polling) {\n return;\n }\n\n clearPendingCommunityErrors(communityKey);\n clearInterval(polling.updateInterval);\n polling.community.removeAllListeners();\n const listenerIndex = listeners.indexOf(polling.community);\n if (listenerIndex >= 0) {\n listeners.splice(listenerIndex, 1);\n }\n delete communityUpdatePollers[communityKey];\n};\n\nconst clearPendingCommunityErrors = (communityKey: string) => {\n pendingCommunityErrorTimers[communityKey]?.forEach((timeout) => clearTimeout(timeout));\n delete pendingCommunityErrorTimers[communityKey];\n};\n\nconst clearStoredCommunityErrors = (state: CommunitiesState, communityKey: string) => {\n if (!state.errors[communityKey]) {\n return state.errors;\n }\n const nextErrors = { ...state.errors };\n delete nextErrors[communityKey];\n return nextErrors;\n};\n\nconst isRetriableCommunityLoadError = (error: Error) => {\n const details = (error as Error & { details?: unknown }).details;\n return Boolean(\n details &&\n typeof details === \"object\" &&\n \"retriableError\" in details &&\n (details as { retriableError?: unknown }).retriableError === true,\n );\n};\n\nconst scheduleCommunityError = (setState: Function, communityKey: string, error: Error) => {\n if (isRetriableCommunityLoadError(error)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n const pendingTimeouts = pendingCommunityErrorTimers[communityKey];\n if (!pendingTimeouts?.includes(timeout)) {\n return;\n }\n\n const remainingTimeouts = pendingTimeouts.filter(\n (pendingTimeout) => pendingTimeout !== timeout,\n );\n if (remainingTimeouts.length === 0) {\n delete pendingCommunityErrorTimers[communityKey];\n } else {\n pendingCommunityErrorTimers[communityKey] = remainingTimeouts;\n }\n setState((state: CommunitiesState) => {\n const communityErrors = state.errors[communityKey] || [];\n return {\n ...state,\n errors: { ...state.errors, [communityKey]: [...communityErrors, error] },\n };\n });\n }, COMMUNITY_ERROR_UPDATE_GRACE_MS);\n\n pendingCommunityErrorTimers[communityKey] = [\n ...(pendingCommunityErrorTimers[communityKey] || []),\n timeout,\n ];\n};\n\nexport type CommunitiesState = {\n communities: Communities;\n errors: { [communityAddress: string]: Error[] };\n addCommunityToStore: Function;\n refreshCommunity: Function;\n editCommunity: Function;\n createCommunity: Function;\n deleteCommunity: Function;\n};\n\nconst communitiesStore = createStore<CommunitiesState>(\n (setState: Function, getState: Function) => ({\n communities: {},\n errors: {},\n\n async addCommunityToStore(\n communityAddressOrRef: string | CommunityIdentifier,\n account: Account,\n ) {\n const communityLookupOptions = getCommunityLookupOptions(communityAddressOrRef);\n const communityKey =\n typeof communityAddressOrRef === \"string\"\n ? communityAddressOrRef\n : getCommunityRefKey(communityAddressOrRef);\n assert(\n communityKey !== \"\" && typeof communityKey === \"string\",\n `communitiesStore.addCommunityToStore invalid communityAddress argument '${communityAddressOrRef}'`,\n );\n assert(\n typeof getPkcCreateCommunity(account?.pkc) === \"function\",\n `communitiesStore.addCommunityToStore invalid account argument '${account}'`,\n );\n\n // community is in store already, do nothing\n const { communities } = getState();\n let community: Community | undefined = communities[communityKey];\n const pendingKey = communityKey + account.id;\n if (community || pkcGetCommunityPending[pendingKey]) {\n return;\n }\n\n // start trying to get community\n pkcGetCommunityPending[pendingKey] = true;\n let errorGettingCommunity: any;\n try {\n // try to find community in owner communities\n if (getPkcCommunityAddresses(account.pkc).includes(communityKey)) {\n try {\n community = await createCommunityWithLookupFallback(\n account.pkc,\n communityLookupOptions,\n communityKey,\n );\n } catch (e) {\n errorGettingCommunity = e;\n }\n }\n\n // try to find community in database\n let fetchedAt: number | undefined;\n if (!community) {\n const communityData: any = await communitiesDatabase.getItem(communityKey);\n const lookupName =\n \"name\" in communityLookupOptions ? communityLookupOptions.name : undefined;\n const lookupPublicKey =\n \"publicKey\" in communityLookupOptions ? communityLookupOptions.publicKey : undefined;\n const lookupAddress =\n \"address\" in communityLookupOptions ? communityLookupOptions.address : undefined;\n const hasCachedPosts =\n Object.keys(communityData?.posts?.pageCids || {}).length > 0 ||\n Object.keys(communityData?.posts?.pages || {}).length > 0;\n const isUnresolvedNameCache =\n communityData &&\n lookupName &&\n !lookupPublicKey &&\n !lookupAddress &&\n !communityData.publicKey &&\n !communityData.updatedAt &&\n !communityData.updateCid &&\n !communityData.title &&\n !communityData.description &&\n !hasCachedPosts;\n if (communityData && !isUnresolvedNameCache) {\n fetchedAt = communityData.fetchedAt;\n delete communityData.fetchedAt; // not part of pkc-js schema\n try {\n community = await createPkcCommunity(account.pkc, communityData);\n } catch (e) {\n fetchedAt = undefined;\n // need to log this always or it could silently fail in production and cache never be used\n console.error(\"failed pkc.createCommunity(cachedCommunity)\", {\n cachedCommunity: communityData,\n error: e,\n });\n }\n }\n if (community) {\n // add page comments to communitiesPagesStore so they can be used in useComment\n communitiesPagesStore.getState().addCommunityPageCommentsToStore(community);\n }\n }\n\n // community not in database, try to fetch from pkc-js\n if (!community) {\n try {\n community = await createCommunityWithLookupFallback(\n account.pkc,\n communityLookupOptions,\n communityKey,\n );\n } catch (e) {\n errorGettingCommunity = e;\n }\n }\n\n // failure getting community\n if (!community) {\n if (errorGettingCommunity) {\n setState((state: CommunitiesState) => {\n let communityErrors = state.errors[communityKey] || [];\n communityErrors = [...communityErrors, errorGettingCommunity];\n return { ...state, errors: { ...state.errors, [communityKey]: communityErrors } };\n });\n }\n\n throw (\n errorGettingCommunity ||\n Error(`communitiesStore.addCommunityToStore failed getting community '${communityKey}'`)\n );\n }\n\n // success getting community\n const firstCommunityState = utils.clone({\n ...community,\n ...(fetchedAt !== undefined ? { fetchedAt } : undefined),\n });\n await communitiesDatabase.setItem(communityKey, firstCommunityState);\n log(\"communitiesStore.addCommunityToStore\", {\n communityAddressOrRef,\n communityKey,\n community,\n account,\n });\n setState((state: any) => ({\n communities: { ...state.communities, [communityKey]: firstCommunityState },\n }));\n\n // the community has published new posts\n community.on(\"update\", async (updatedCommunity: Community) => {\n clearPendingCommunityErrors(communityKey);\n setState((state: CommunitiesState) => ({\n ...state,\n errors: clearStoredCommunityErrors(state, communityKey),\n }));\n updatedCommunity = utils.clone(updatedCommunity);\n\n // add fetchedAt to be able to expire the cache\n // NOTE: fetchedAt is undefined on owner communities because never stale\n updatedCommunity.fetchedAt = Math.floor(Date.now() / 1000);\n\n await communitiesDatabase.setItem(communityKey, updatedCommunity);\n log(\"communitiesStore community update\", {\n communityAddressOrRef,\n communityKey,\n updatedCommunity,\n account,\n });\n setState((state: any) => ({\n ...state,\n communities: { ...state.communities, [communityKey]: updatedCommunity },\n }));\n\n // if a community has a role with an account's address add it to the account.communities\n accountsStore\n .getState()\n .accountsActionsInternal.addCommunityRoleToAccountsCommunities(updatedCommunity);\n\n // add page comments to communitiesPagesStore so they can be used in useComment\n communitiesPagesStore.getState().addCommunityPageCommentsToStore(updatedCommunity);\n });\n\n community.on(\"updatingstatechange\", (updatingState: string) => {\n setState((state: CommunitiesState) => ({\n communities: {\n ...state.communities,\n [communityKey]: { ...state.communities[communityKey], updatingState },\n },\n }));\n });\n\n community.on(\"error\", (error: Error) => {\n scheduleCommunityError(setState, communityKey, error);\n });\n\n // set clients on community so the frontend can display it, dont persist in db because a reload cancels updating\n utils.clientsOnStateChange(\n community?.clients,\n (clientState: string, clientType: string, clientUrl: string, chainTicker?: string) => {\n setState((state: CommunitiesState) => {\n // make sure not undefined, sometimes happens in e2e tests\n if (!state.communities[communityKey]) {\n return {};\n }\n const clients = { ...state.communities[communityKey]?.clients };\n const client = { state: clientState };\n if (chainTicker) {\n const chainProviders = { ...clients[clientType][chainTicker], [clientUrl]: client };\n clients[clientType] = { ...clients[clientType], [chainTicker]: chainProviders };\n } else {\n clients[clientType] = { ...clients[clientType], [clientUrl]: client };\n }\n return {\n communities: {\n ...state.communities,\n [communityKey]: { ...state.communities[communityKey], clients },\n },\n };\n });\n },\n );\n\n listeners.push(community);\n startCommunityUpdatePolling(community, { communityAddressOrRef, communityKey });\n } finally {\n pkcGetCommunityPending[pendingKey] = false;\n }\n },\n\n async refreshCommunity(communityAddressOrRef: string | CommunityIdentifier, account: Account) {\n const communityLookupOptions = getCommunityLookupOptions(communityAddressOrRef);\n const communityKey =\n typeof communityAddressOrRef === \"string\"\n ? communityAddressOrRef\n : getCommunityRefKey(communityAddressOrRef);\n assert(\n communityKey !== \"\" && typeof communityKey === \"string\",\n `communitiesStore.refreshCommunity invalid communityAddress argument '${communityAddressOrRef}'`,\n );\n assert(\n typeof getPkcGetCommunity(account?.pkc) === \"function\",\n `communitiesStore.refreshCommunity invalid account argument '${account}'`,\n );\n\n const refreshedCommunity = utils.clone(\n await getPkcCommunity(account.pkc, communityLookupOptions),\n );\n refreshedCommunity.fetchedAt = Math.floor(Date.now() / 1000);\n\n await communitiesDatabase.setItem(communityKey, refreshedCommunity);\n log(\"communitiesStore.refreshCommunity\", {\n communityAddressOrRef,\n communityKey,\n refreshedCommunity,\n account,\n });\n setState((state: any) => ({\n communities: { ...state.communities, [communityKey]: refreshedCommunity },\n }));\n\n communitiesPagesStore.getState().addCommunityPageCommentsToStore(refreshedCommunity);\n\n return refreshedCommunity;\n },\n\n // user is the owner of the community and can edit it locally\n async editCommunity(communityAddress: string, communityEditOptions: any, account: Account) {\n assert(\n communityAddress !== \"\" && typeof communityAddress === \"string\",\n `communitiesStore.editCommunity invalid communityAddress argument '${communityAddress}'`,\n );\n assert(\n communityEditOptions && typeof communityEditOptions === \"object\",\n `communitiesStore.editCommunity invalid communityEditOptions argument '${communityEditOptions}'`,\n );\n assert(\n typeof getPkcCreateCommunity(account?.pkc) === \"function\",\n `communitiesStore.editCommunity invalid account argument '${account}'`,\n );\n\n // if not added to store first, community.update() is never called\n await getState().addCommunityToStore(communityAddress, account);\n\n // `communityAddress` is different from `communityEditOptions.address` when editing the community address\n const community = await createPkcCommunity(account.pkc, {\n address: communityAddress,\n });\n\n // could fix some test issues\n community.on(\"error\", console.log);\n\n await community.edit(communityEditOptions);\n\n const updatedCommunity = utils.clone(community);\n // edit db of both old and new community address to not break the UI\n await communitiesDatabase.setItem(communityAddress, updatedCommunity);\n await communitiesDatabase.setItem(community.address, updatedCommunity);\n log(\"communitiesStore.editCommunity\", {\n communityAddress,\n communityEditOptions,\n community,\n account,\n });\n setState((state: any) => ({\n communities: {\n ...state.communities,\n // edit react state of both old and new community address to not break the UI\n [communityAddress]: updatedCommunity,\n [community.address]: updatedCommunity,\n },\n }));\n },\n\n // internal action called by accountsActions.createCommunity\n async createCommunity(createCommunityOptions: CreateCommunityOptions, account: Account) {\n assert(\n !createCommunityOptions || typeof createCommunityOptions === \"object\",\n `communitiesStore.createCommunity invalid createCommunityOptions argument '${createCommunityOptions}'`,\n );\n if (!createCommunityOptions?.signer) {\n assert(\n !createCommunityOptions?.address,\n `communitiesStore.createCommunity createCommunityOptions.address '${createCommunityOptions?.address}' must be undefined to create a community`,\n );\n }\n assert(\n typeof getPkcCreateCommunity(account?.pkc) === \"function\",\n `communitiesStore.createCommunity invalid account argument '${account}'`,\n );\n\n const community = await createPkcCommunity(account.pkc, createCommunityOptions);\n\n // could fix some test issues\n community.on(\"error\", console.log);\n\n // if not added to store first, community.update() is never called\n await getState().addCommunityToStore(community.address, account);\n\n await communitiesDatabase.setItem(community.address, utils.clone(community));\n log(\"communitiesStore.createCommunity\", { createCommunityOptions, community, account });\n setState((state: any) => ({\n communities: { ...state.communities, [community.address]: utils.clone(community) },\n }));\n return community;\n },\n\n // internal action called by accountsActions.deleteCommunity\n async deleteCommunity(communityAddress: string, account: Account) {\n assert(\n communityAddress && typeof communityAddress === \"string\",\n `communitiesStore.deleteCommunity invalid communityAddress argument '${communityAddress}'`,\n );\n assert(\n typeof getPkcCreateCommunity(account?.pkc) === \"function\",\n `communitiesStore.deleteCommunity invalid account argument '${account}'`,\n );\n\n const community = await createPkcCommunity(account.pkc, {\n address: communityAddress,\n });\n\n // could fix some test issues\n community.on(\"error\", console.log);\n\n await community.delete();\n stopCommunityUpdatePolling(communityAddress);\n await communitiesDatabase.removeItem(communityAddress);\n log(\"communitiesStore.deleteCommunity\", { communityAddress, community, account });\n setState((state: any) => ({\n communities: { ...state.communities, [communityAddress]: undefined },\n }));\n },\n }),\n);\n\n// reset store in between tests\nconst originalState = communitiesStore.getState();\n// async function because some stores have async init\nexport const resetCommunitiesStore = async () => {\n pkcGetCommunityPending = {};\n Object.keys(pendingCommunityErrorTimers).forEach(clearPendingCommunityErrors);\n // remove all event listeners\n listeners.forEach((listener: any) => listener.removeAllListeners());\n listeners.length = 0;\n Object.keys(communityUpdatePollers).forEach(stopCommunityUpdatePolling);\n // destroy all component subscriptions to the store\n communitiesStore.destroy();\n // restore original state\n communitiesStore.setState(originalState);\n};\n\n// reset database and store in between tests\nexport const resetCommunitiesDatabaseAndStore = async () => {\n await localForageLru.createInstance({ name: \"bitsocialReactHooks-communities\" }).clear();\n await resetCommunitiesStore();\n};\n\nexport default communitiesStore;\n"]}
package/package.json CHANGED
@@ -13,7 +13,7 @@
13
13
  "publishConfig": {
14
14
  "access": "public"
15
15
  },
16
- "version": "0.1.18",
16
+ "version": "0.1.20",
17
17
  "packageManager": "yarn@4.13.0",
18
18
  "files": [
19
19
  "CHANGELOG.md",
@@ -116,7 +116,7 @@
116
116
  "cz-conventional-changelog": "3.3.0",
117
117
  "husky": "4.3.8",
118
118
  "jsdom": "27.3.0",
119
- "knip": "6.16.1",
119
+ "knip": "6.17.0",
120
120
  "kubo": "0.42.0",
121
121
  "lint-staged": "12.3.8",
122
122
  "oxfmt": "0.36.0",