This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/plugins/chat/assets/javascripts/discourse/components/chat-message-info.js
Roman Rizzi 0a5f548635
DEV: Move discourse-chat to the core repo. (#18776)
As part of this move, we are also renaming `discourse-chat` to `chat`.
2022-11-02 10:41:30 -03:00

71 lines
1.5 KiB
JavaScript

import { computed } from "@ember/object";
import Component from "@ember/component";
import { prioritizeNameInUx } from "discourse/lib/settings";
export default class ChatMessageInfo extends Component {
tagName = "";
message = null;
details = null;
didInsertElement() {
this._super(...arguments);
this.message.user?.trackStatus?.();
}
willDestroyElement() {
this._super(...arguments);
this.message.user?.stopTrackingStatus?.();
}
@computed("message.user")
get name() {
return this.prioritizeName
? this.message.user.name
: this.message.user.username;
}
@computed("message.reviewable_id", "message.user_flag_status")
get isFlagged() {
return this.message?.reviewable_id || this.message?.user_flag_status === 0;
}
@computed("message.user.name")
get prioritizeName() {
return (
this.siteSettings.display_name_on_posts &&
prioritizeNameInUx(this.message?.user?.name)
);
}
@computed("message.user.status")
get showStatus() {
return !!this.message.user?.status;
}
@computed("message.user")
get usernameClasses() {
const user = this.message?.user;
const classes = this.prioritizeName ? ["is-full-name"] : ["is-username"];
if (!user) {
return classes;
}
if (user.staff) {
classes.push("is-staff");
}
if (user.admin) {
classes.push("is-admin");
}
if (user.moderator) {
classes.push("is-moderator");
}
if (user.groupModerator) {
classes.push("is-category-moderator");
}
return classes.join(" ");
}
}