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/widgets/chat-invitation-notification-item.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

43 lines
1.5 KiB
JavaScript

import I18n from "I18n";
import RawHtml from "discourse/widgets/raw-html";
import { createWidgetFrom } from "discourse/widgets/widget";
import { DefaultNotificationItem } from "discourse/widgets/default-notification-item";
import { h } from "virtual-dom";
import { formatUsername } from "discourse/lib/utilities";
import { iconNode } from "discourse-common/lib/icon-library";
import slugifyChannel from "discourse/plugins/chat/discourse/lib/slugify-channel";
createWidgetFrom(DefaultNotificationItem, "chat-invitation-notification-item", {
services: ["chat", "router"],
text(data) {
const username = formatUsername(data.invited_by_username);
return I18n.t("notifications.chat_invitation_html", { username });
},
html(attrs) {
const notificationType = attrs.notification_type;
const lookup = this.site.get("notificationLookup");
const notificationName = lookup[notificationType];
const { data } = attrs;
const text = this.text(data);
const title = this.notificationTitle(notificationName, data);
const html = new RawHtml({ html: `<div>${text}</div>` });
const contents = [iconNode("link"), html];
const href = this.url(data);
return h(
"a",
{ attributes: { title, href, "data-auto-route": true } },
contents
);
},
url(data) {
const title = data.chat_channel_title
? slugifyChannel(data.chat_channel_title)
: "-";
return `/chat/channel/${data.chat_channel_id}/${title}?messageId=${data.chat_message_id}`;
},
});