mirror of
https://github.com/hanzoai/forum.git
synced 2026-09-30 21:51:19 +00:00
This commit does several changes: - it moves the ownership of the last message info to the channel instead of storing it on the message, it avoids the need to iterate over every messages - makes an optimistic update of the last read message id - adds a spec to confirm this behavior
96 lines
2.3 KiB
JavaScript
96 lines
2.3 KiB
JavaScript
import Component from "@glimmer/component";
|
|
import { action } from "@ember/object";
|
|
import { getOwner } from "@ember/owner";
|
|
import { service } from "@ember/service";
|
|
import ChatMessagesManager from "discourse/plugins/chat/discourse/lib/chat-messages-manager";
|
|
import ChatFabricators from "discourse/plugins/chat/discourse/lib/fabricators";
|
|
|
|
export default class ChatStyleguideChatMessage extends Component {
|
|
@service currentUser;
|
|
|
|
manager = new ChatMessagesManager(getOwner(this));
|
|
|
|
constructor() {
|
|
super(...arguments);
|
|
this.message = new ChatFabricators(getOwner(this)).message({
|
|
user: this.currentUser,
|
|
});
|
|
this.message.cook();
|
|
}
|
|
|
|
@action
|
|
toggleDeleted() {
|
|
if (this.message.deletedAt) {
|
|
this.message.deletedAt = null;
|
|
} else {
|
|
this.message.deletedAt = moment();
|
|
}
|
|
}
|
|
|
|
@action
|
|
toggleBookmarked() {
|
|
if (this.message.bookmark) {
|
|
this.message.bookmark = null;
|
|
} else {
|
|
this.message.bookmark = new ChatFabricators(getOwner(this)).bookmark();
|
|
}
|
|
}
|
|
|
|
@action
|
|
toggleHighlighted() {
|
|
this.message.highlighted = !this.message.highlighted;
|
|
}
|
|
|
|
@action
|
|
toggleEdited() {
|
|
this.message.edited = !this.message.edited;
|
|
}
|
|
|
|
@action
|
|
toggleThread() {
|
|
if (this.message.thread) {
|
|
this.message.channel.threadingEnabled = false;
|
|
this.message.thread = null;
|
|
} else {
|
|
this.message.thread = new ChatFabricators(getOwner(this)).thread({
|
|
channel: this.message.channel,
|
|
});
|
|
this.message.thread.preview.replyCount = 1;
|
|
this.message.channel.threadingEnabled = true;
|
|
}
|
|
}
|
|
|
|
@action
|
|
async updateMessage(event) {
|
|
this.message.message = event.target.value;
|
|
await this.message.cook();
|
|
}
|
|
|
|
@action
|
|
toggleReaction() {
|
|
if (this.message.reactions?.length) {
|
|
this.message.reactions = [];
|
|
} else {
|
|
this.message.reactions = [
|
|
new ChatFabricators(getOwner(this)).reaction({ emoji: "heart" }),
|
|
new ChatFabricators(getOwner(this)).reaction({
|
|
emoji: "rocket",
|
|
reacted: true,
|
|
}),
|
|
];
|
|
}
|
|
}
|
|
|
|
@action
|
|
toggleUpload() {
|
|
if (this.message.uploads?.length) {
|
|
this.message.uploads = [];
|
|
} else {
|
|
this.message.uploads = [
|
|
new ChatFabricators(getOwner(this)).upload(),
|
|
new ChatFabricators(getOwner(this)).upload(),
|
|
];
|
|
}
|
|
}
|
|
}
|