diff --git a/plugins/chat/app/serializers/chat/user_channel_membership_serializer.rb b/plugins/chat/app/serializers/chat/user_channel_membership_serializer.rb index 5abd13c372c..03b77cb2600 100644 --- a/plugins/chat/app/serializers/chat/user_channel_membership_serializer.rb +++ b/plugins/chat/app/serializers/chat/user_channel_membership_serializer.rb @@ -2,7 +2,7 @@ module Chat class UserChannelMembershipSerializer < BaseChannelMembershipSerializer - has_one :user, serializer: ::Chat::BasicUserSerializer, embed: :objects + has_one :user, serializer: ::Chat::ChatableUserSerializer, embed: :objects def user object.user || Chat::NullUser.new diff --git a/plugins/chat/assets/javascripts/discourse/components/chat-user-display-name.gjs b/plugins/chat/assets/javascripts/discourse/components/chat-user-display-name.gjs index af764831332..cc7f47f3514 100644 --- a/plugins/chat/assets/javascripts/discourse/components/chat-user-display-name.gjs +++ b/plugins/chat/assets/javascripts/discourse/components/chat-user-display-name.gjs @@ -30,7 +30,6 @@ export default class ChatUserDisplayName extends Component { {{#if this.shouldShowNameFirst}} {{@user.name}} - {{/if}} {{#if this.shouldShowNameLast}} - {{@user.name}} {{/if}} diff --git a/plugins/chat/assets/javascripts/discourse/components/chat-user-info.gjs b/plugins/chat/assets/javascripts/discourse/components/chat-user-info.gjs index 7f5c967efcd..3a02e015ac0 100644 --- a/plugins/chat/assets/javascripts/discourse/components/chat-user-info.gjs +++ b/plugins/chat/assets/javascripts/discourse/components/chat-user-info.gjs @@ -1,4 +1,5 @@ import Component from "@glimmer/component"; +import UserStatusMessage from "discourse/components/user-status-message"; import { userPath } from "discourse/lib/url"; import ChatUserAvatar from "discourse/plugins/chat/discourse/components/chat-user-avatar"; import ChatUserDisplayName from "discourse/plugins/chat/discourse/components/chat-user-display-name"; @@ -16,6 +17,14 @@ export default class ChatUserInfo extends Component { return this.args.interactive ?? false; } + get showStatus() { + return this.args.showStatus ?? false; + } + + get showStatusDescription() { + return this.args.showStatusDescription ?? false; + } + } diff --git a/plugins/chat/assets/javascripts/discourse/components/chat/routes/channel-info-members.gjs b/plugins/chat/assets/javascripts/discourse/components/chat/routes/channel-info-members.gjs index 7956723a065..4877df2cb93 100644 --- a/plugins/chat/assets/javascripts/discourse/components/chat/routes/channel-info-members.gjs +++ b/plugins/chat/assets/javascripts/discourse/components/chat/routes/channel-info-members.gjs @@ -176,6 +176,8 @@ export default class ChatRouteChannelInfoMembers extends Component { @user={{membership.user}} @avatarSize="tiny" @interactive={{false}} + @showStatus={{true}} + @showStatusDescription={{true}} /> {{else}} diff --git a/plugins/chat/assets/stylesheets/common/chat-channel-members.scss b/plugins/chat/assets/stylesheets/common/chat-channel-members.scss index ab2d768a09a..a2f57c5d77b 100644 --- a/plugins/chat/assets/stylesheets/common/chat-channel-members.scss +++ b/plugins/chat/assets/stylesheets/common/chat-channel-members.scss @@ -32,6 +32,23 @@ .chat-user-avatar { margin-right: 0.5rem; } + + .chat-user-display-name span:not(.-first) { + color: var(--primary-high); + font-size: var(--font-down-1); + margin-left: 0.5rem; + } + + .user-status-message { + color: var(--primary-medium); + font-size: var(--font-down-2); + margin-left: 0.5rem; + + .emoji { + height: var(--font-0); + width: var(--font-0); + } + } } &.-add-member { diff --git a/plugins/chat/spec/support/api/schemas/user_chat_channel_membership.json b/plugins/chat/spec/support/api/schemas/user_chat_channel_membership.json index b19f6d7bd8e..421039c0a67 100644 --- a/plugins/chat/spec/support/api/schemas/user_chat_channel_membership.json +++ b/plugins/chat/spec/support/api/schemas/user_chat_channel_membership.json @@ -24,6 +24,7 @@ "name": { "type": "string" }, "avatar_template": { "type": "string" }, "username": { "type": "string" }, + "custom_fields": { "type": ["object", "null"] }, "can_chat": { "type": "boolean" }, "has_chat_enabled": { "type": "boolean" } } diff --git a/plugins/chat/spec/system/channel_members_page_spec.rb b/plugins/chat/spec/system/channel_members_page_spec.rb index eeca7da8a09..97ddcecc28a 100644 --- a/plugins/chat/spec/system/channel_members_page_spec.rb +++ b/plugins/chat/spec/system/channel_members_page_spec.rb @@ -62,6 +62,19 @@ RSpec.describe "Channel - Info - Members page", type: :system do expect(page).to have_selector(".c-channel-members__list-item", count: 1, text: "cat") end end + + context "with user status" do + it "renders status next to name" do + SiteSetting.enable_user_status = true + current_user.set_status!("walking the dog", "dog") + + chat_page.visit_channel_members(channel_1) + + expect(page).to have_selector( + ".-member .user-status-message img[alt='#{current_user.user_status.emoji}']", + ) + end + end end end diff --git a/plugins/chat/test/javascripts/components/chat-user-display-name-test.js b/plugins/chat/test/javascripts/components/chat-user-display-name-test.js index db43dad75ca..3fdbe374379 100644 --- a/plugins/chat/test/javascripts/components/chat-user-display-name-test.js +++ b/plugins/chat/test/javascripts/components/chat-user-display-name-test.js @@ -28,7 +28,7 @@ module( await render(hbs``); - assert.strictEqual(displayName(), "bob — Bobcat"); + assert.strictEqual(displayName(), "bob Bobcat"); }); } ); @@ -53,7 +53,7 @@ module( await render(hbs``); - assert.strictEqual(displayName(), "Bobcat — bob"); + assert.strictEqual(displayName(), "Bobcat bob"); }); } );