implement message filter by reactions

This commit is contained in:
marlon-erler
2026-04-11 21:01:23 +00:00
parent 45e3ed31ee
commit 9c0a20d22f
9 changed files with 261 additions and 7 deletions
@@ -22,6 +22,8 @@ export default class ChatMessageViewModel {
);
sentByUser: boolean;
isHidden = new React.State<boolean>(false);
allReactions = new React.MapState<ChatMessageReaction>();
userReaction = new React.State<ReactionSymbols | string | undefined>(
undefined,
@@ -129,5 +131,43 @@ export default class ChatMessageViewModel {
this.chatMessage = chatMessage;
this.sentByUser = sentByUser;
this.loadData();
this.messagePageViewModel.reactionFilter.subscribe((content) => {
console.log(content, content==undefined)
if (content == undefined) {
this.isHidden.value = false;
return;
}
let count = 0;
switch (content) {
case ReactionSymbols.ThumbsUp: {
count = this.reactionsThumbsUpCount.value;
break;
}
case ReactionSymbols.Check: {
count = this.reactionsCheckCount.value;
break;
}
case ReactionSymbols.Stop: {
count = this.reactionsStopCount.value;
break;
}
case ReactionSymbols.Attention: {
count = this.reactionsAttentionCount.value;
break;
}
case ReactionSymbols.DoubleAttention: {
count = this.reactionsDoubleAttentionCount.value;
break;
}
case ReactionSymbols.Question: {
count = this.reactionsQuestionCount.value;
break;
}
}
this.isHidden.value = count == 0;
})
}
}
@@ -18,6 +18,8 @@ export default class MessagePageViewModel {
new React.ListState();
searchViewModel: SearchViewModel<ChatMessageViewModel>;
isFilterModalOpen = new React.State<boolean>(false);
reactionFilter = new React.State<ReactionSymbols | undefined>(undefined);
composingMessage: React.State<string> = new React.State("");
// guards
@@ -94,6 +96,14 @@ export default class MessagePageViewModel {
this.isFilterModalOpen.value = false;
};
revokeReactionFilter = (): void => {
this.reactionFilter.value = undefined;
}
setReactionFilter = (content: ReactionSymbols): void => {
this.reactionFilter.value = content;
};
// load
loadData = (): void => {
this.chatMessageViewModels.clear();