diff options
Diffstat (limited to 'src/state/models/content/post-thread.ts')
-rw-r--r-- | src/state/models/content/post-thread.ts | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/state/models/content/post-thread.ts b/src/state/models/content/post-thread.ts index 794beae20..acc9bffa9 100644 --- a/src/state/models/content/post-thread.ts +++ b/src/state/models/content/post-thread.ts @@ -42,6 +42,17 @@ export class PostThreadItemModel { return this.postRecord?.reply?.parent.uri } + get rootUri(): string { + if (this.postRecord?.reply?.root.uri) { + return this.postRecord.reply.root.uri + } + return this.uri + } + + get isThreadMuted() { + return this.rootStore.mutedThreads.uris.has(this.rootUri) + } + constructor( public rootStore: RootStoreModel, reactKey: string, @@ -188,6 +199,14 @@ export class PostThreadItemModel { } } + async toggleThreadMute() { + if (this.isThreadMuted) { + this.rootStore.mutedThreads.uris.delete(this.rootUri) + } else { + this.rootStore.mutedThreads.uris.add(this.rootUri) + } + } + async delete() { await this.rootStore.agent.deletePost(this.post.uri) this.rootStore.emitPostDeleted(this.post.uri) @@ -230,6 +249,19 @@ export class PostThreadModel { return this.error !== '' } + get rootUri(): string { + if (this.thread) { + if (this.thread.postRecord?.reply?.root.uri) { + return this.thread.postRecord.reply.root.uri + } + } + return this.resolvedUri + } + + get isThreadMuted() { + return this.rootStore.mutedThreads.uris.has(this.rootUri) + } + // public api // = @@ -279,6 +311,14 @@ export class PostThreadModel { this.refresh() } + async toggleThreadMute() { + if (this.isThreadMuted) { + this.rootStore.mutedThreads.uris.delete(this.rootUri) + } else { + this.rootStore.mutedThreads.uris.add(this.rootUri) + } + } + // state transitions // = |