From ee05f57e2d676772a1df85be322e44611d13e7da Mon Sep 17 00:00:00 2001 From: Mark VanLandingham Date: Thu, 7 Dec 2023 11:30:44 -0600 Subject: [PATCH] FEATURE: Site setting to display user avatars in user menu (#24514) --- .../components/user-menu/bookmarks-list.js | 6 ++- .../app/components/user-menu/icon-avatar.gjs | 12 ++++++ .../app/components/user-menu/menu-item.hbs | 6 ++- .../app/components/user-menu/menu-item.js | 8 ++++ .../app/components/user-menu/menu.hbs | 2 +- .../app/components/user-menu/menu.js | 8 ++++ .../app/components/user-menu/messages-list.js | 18 ++++++++- .../discourse/app/lib/user-menu/base-item.js | 19 ++++++++++ .../app/lib/user-menu/bookmark-item.js | 4 ++ .../app/lib/user-menu/message-item.js | 4 ++ .../app/lib/user-menu/notification-item.js | 4 ++ .../tests/acceptance/user-menu-test.js | 33 +++++++++++++++++ .../tests/fixtures/notification-fixtures.js | 6 +++ .../discourse/tests/fixtures/user-menu.js | 6 +++ .../components/user-menu/menu-item-test.js | 31 ++++++++++++---- .../stylesheets/common/base/menu-panel.scss | 37 +++++++++++++++++++ app/controllers/notifications_controller.rb | 4 ++ app/controllers/users_controller.rb | 13 +++++++ app/models/notification.rb | 22 +++++++++++ app/serializers/notification_serializer.rb | 11 +++++- app/serializers/site_serializer.rb | 9 +++++ config/locales/server.en.yml | 1 + config/site_settings.yml | 4 +- spec/models/notification_spec.rb | 30 +++++++++++++++ .../requests/notifications_controller_spec.rb | 19 +++++++++- spec/requests/users_controller_spec.rb | 12 ++++++ 26 files changed, 314 insertions(+), 15 deletions(-) create mode 100644 app/assets/javascripts/discourse/app/components/user-menu/icon-avatar.gjs diff --git a/app/assets/javascripts/discourse/app/components/user-menu/bookmarks-list.js b/app/assets/javascripts/discourse/app/components/user-menu/bookmarks-list.js index 0fbdde106d8..50878aa5fcf 100644 --- a/app/assets/javascripts/discourse/app/components/user-menu/bookmarks-list.js +++ b/app/assets/javascripts/discourse/app/components/user-menu/bookmarks-list.js @@ -73,7 +73,11 @@ export default class UserMenuBookmarksList extends UserMenuNotificationsList { await Bookmark.applyTransformations(bookmarks); content.push( ...bookmarks.map((bookmark) => { - return new UserMenuBookmarkItem({ bookmark }); + return new UserMenuBookmarkItem({ + bookmark, + siteSettings: this.siteSettings, + site: this.site, + }); }) ); diff --git a/app/assets/javascripts/discourse/app/components/user-menu/icon-avatar.gjs b/app/assets/javascripts/discourse/app/components/user-menu/icon-avatar.gjs new file mode 100644 index 00000000000..599d36443f7 --- /dev/null +++ b/app/assets/javascripts/discourse/app/components/user-menu/icon-avatar.gjs @@ -0,0 +1,12 @@ +import Component from "@glimmer/component"; +import avatar from "discourse/helpers/bound-avatar-template"; +import dIcon from "discourse-common/helpers/d-icon"; + +export default class IconAvatar extends Component { + +} diff --git a/app/assets/javascripts/discourse/app/components/user-menu/menu-item.hbs b/app/assets/javascripts/discourse/app/components/user-menu/menu-item.hbs index 53021381291..bd3ca7038c4 100644 --- a/app/assets/javascripts/discourse/app/components/user-menu/menu-item.hbs +++ b/app/assets/javascripts/discourse/app/components/user-menu/menu-item.hbs @@ -4,7 +4,11 @@ title={{this.linkTitle}} {{on "click" this.onClick}} > - {{d-icon this.icon}} + {{#if this.iconComponent}} + + {{else}} + {{d-icon this.icon}} + {{/if}}
{{#if this.label}} diff --git a/app/assets/javascripts/discourse/app/components/user-menu/menu-item.js b/app/assets/javascripts/discourse/app/components/user-menu/menu-item.js index 4dace94b2d3..b6a728fc70d 100644 --- a/app/assets/javascripts/discourse/app/components/user-menu/menu-item.js +++ b/app/assets/javascripts/discourse/app/components/user-menu/menu-item.js @@ -49,6 +49,14 @@ export default class UserMenuItem extends Component { return this.#item.topicId; } + get iconComponent() { + return this.#item.iconComponent; + } + + get iconComponentArgs() { + return this.#item.iconComponentArgs; + } + get #item() { return this.args.item; } diff --git a/app/assets/javascripts/discourse/app/components/user-menu/menu.hbs b/app/assets/javascripts/discourse/app/components/user-menu/menu.hbs index 25efaa7a1cc..7f55f10dd5d 100644 --- a/app/assets/javascripts/discourse/app/components/user-menu/menu.hbs +++ b/app/assets/javascripts/discourse/app/components/user-menu/menu.hbs @@ -1,5 +1,5 @@