0
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-08-15 17:24:47 +08:00
discourse/plugins/chat/assets/javascripts/discourse/components/chat-channel-status.gjs
Godfrey Chan 3a0cdd2734 DEV: Convert components to gjs
- convert chat/channels-list -> gjs
- convert chat/chat-channel-archive-status -> gjs
- convert chat/chat-channel-card -> gjs
- convert chat/chat-channel-leave-btn -> gjs
- convert chat/chat-channel-metadata -> gjs
- convert chat/chat-channel-preview-card -> gjs
- convert chat/chat-channel-status -> gjs
- convert chat/chat-channel-unread-indicator -> gjs
- convert chat/chat-composer-dropdown -> gjs
- convert chat/chat-composer-message-details -> gjs
- convert chat/chat-composer-upload -> gjs
- convert chat/channel -> gjs
- convert chat/header -> gjs
- convert chat/back-link -> gjs
- convert chat/channel-title -> gjs
- convert chat/close-button -> gjs
- convert chat/full-page-button -> gjs
- convert chat/left-actions -> gjs
- convert chat/right-actions -> gjs
- convert chat/toggle-expand-button -> gjs
- convert chat/index -> gjs
- convert chat/chat-emoji-avatar -> gjs
- convert chat/chat-mention-warnings -> gjs
- convert chat/chat-message-in-reply-to-indicator -> gjs
- convert chat/chat-message-separator-date -> gjs
- convert chat/chat-message-separator-new -> gjs
- convert chat/chat-message-text -> gjs
- convert chat/chat-message-thread-indicator -> gjs
- convert chat/chat-notice -> gjs
- convert chat/chat-notices -> gjs
- convert chat/chat-replying-indicator -> gjs
- convert chat/chat-side-panel-resizer -> gjs
- convert chat/chat-side-panel -> gjs
- convert chat/chat-skeleton -> gjs
- convert chat/chat-upload-drop-zone -> gjs
- convert chat/chat-upload -> gjs
- convert chat/chat-user-display-name -> gjs
- convert chat/export-messages -> gjs
- convert chat/button -> gjs
- convert chat/separator -> gjs
- convert chat/avatar -> gjs
- convert chat/error -> gjs
- convert chat/info -> gjs
- convert chat/left-gutter -> gjs
- convert chat/archive-channel -> gjs
- convert chat/channel-summary -> gjs
- convert chat/delete-channel -> gjs
- convert chat/edit-channel-name -> gjs
- convert chat/move-message-to-channel -> gjs
- convert chat/thread-settings -> gjs
- convert chat/toggle-channel-status -> gjs
- convert chat/mention_without_membership -> gjs
- convert chat/scroll-to-bottom-arrow -> gjs
- convert chat/item -> gjs
- convert chat/unread-indicator -> gjs
- convert chat/user-card-button -> gjs
- convert chat/full-page-chat -> gjs
- convert chat/reviewable-chat-message -> gjs
- convert chat/chat -> gjs
- convert chat/toggle-channel-membership-button -> gjs
- convert chat/chat-preferences -> gjs
2023-11-14 10:53:54 +00:00

75 lines
2.2 KiB
Text
Vendored

import Component from "@glimmer/component";
import dIcon from "discourse-common/helpers/d-icon";
import I18n from "discourse-i18n";
import {
CHANNEL_STATUSES,
channelStatusIcon,
} from "discourse/plugins/chat/discourse/models/chat-channel";
import ChatChannelArchiveStatus from "./chat-channel-archive-status";
export default class ChatChannelStatus extends Component {
LONG_FORMAT = "long";
SHORT_FORMAT = "short";
VALID_FORMATS = [this.SHORT_FORMAT, this.LONG_FORMAT];
get format() {
return this.VALID_FORMATS.includes(this.args.format)
? this.args.format
: this.LONG_FORMAT;
}
get shouldRender() {
return (
this.channelStatusIcon &&
this.args.channel.status !== CHANNEL_STATUSES.open
);
}
get channelStatusMessage() {
if (this.format === this.LONG_FORMAT) {
return this.#longStatusMessage(this.args.channel.status);
} else {
return this.#shortStatusMessage(this.args.channel.status);
}
}
get channelStatusIcon() {
return channelStatusIcon(this.args.channel.status);
}
#shortStatusMessage(status) {
switch (status) {
case CHANNEL_STATUSES.archived:
return I18n.t("chat.channel_status.archived");
case CHANNEL_STATUSES.closed:
return I18n.t("chat.channel_status.closed");
case CHANNEL_STATUSES.open:
return I18n.t("chat.channel_status.open");
case CHANNEL_STATUSES.readOnly:
return I18n.t("chat.channel_status.read_only");
}
}
#longStatusMessage(status) {
switch (status) {
case CHANNEL_STATUSES.archived:
return I18n.t("chat.channel_status.archived_header");
case CHANNEL_STATUSES.closed:
return I18n.t("chat.channel_status.closed_header");
case CHANNEL_STATUSES.open:
return I18n.t("chat.channel_status.open_header");
case CHANNEL_STATUSES.readOnly:
return I18n.t("chat.channel_status.read_only_header");
}
}
<template>
{{#if this.shouldRender}}
<div class="chat-channel-status">
{{dIcon this.channelStatusIcon}}
<span>{{this.channelStatusMessage}}</span>
<ChatChannelArchiveStatus @channel={{@channel}} />
</div>
{{/if}}
</template>
}