From 6aa492254f342f12ac6db0a2fd266b998940fdb3 Mon Sep 17 00:00:00 2001 From: Amanda Alves Branquinho Date: Thu, 23 Jan 2025 16:25:21 -0300 Subject: [PATCH] DEV: Update glimmer menu to use value transformer (#30930) - Use the `smallUserAttrs` function in the new glimmer menu - Replace the sugar syntax `@data` with `this.args` to fix tests --- .../discourse/app/components/post/menu.gjs | 19 ++++----------- .../app/components/small-user-list.gjs | 23 ++++++++++++++----- .../discourse/app/lib/user-list-attrs.js | 16 ------------- .../discourse/app/widgets/post-menu.js | 2 +- 4 files changed, 23 insertions(+), 37 deletions(-) delete mode 100644 app/assets/javascripts/discourse/app/lib/user-list-attrs.js diff --git a/app/assets/javascripts/discourse/app/components/post/menu.gjs b/app/assets/javascripts/discourse/app/components/post/menu.gjs index 44883fd886d..c1957880475 100644 --- a/app/assets/javascripts/discourse/app/components/post/menu.gjs +++ b/app/assets/javascripts/discourse/app/components/post/menu.gjs @@ -9,12 +9,13 @@ import { and, eq } from "truth-helpers"; import AdminPostMenu from "discourse/components/admin-post-menu"; import DeleteTopicDisallowedModal from "discourse/components/modal/delete-topic-disallowed"; import PluginOutlet from "discourse/components/plugin-outlet"; -import SmallUserList from "discourse/components/small-user-list"; +import SmallUserList, { + smallUserAttrs, +} from "discourse/components/small-user-list"; import UserTip from "discourse/components/user-tip"; import concatClass from "discourse/helpers/concat-class"; import DAG from "discourse/lib/dag"; import { applyMutableValueTransformer } from "discourse/lib/transformer"; -import { userPath } from "discourse/lib/url"; import { i18n } from "discourse-i18n"; import PostMenuButtonConfig from "./menu/button-config"; import PostMenuButtonWrapper from "./menu/button-wrapper"; @@ -64,16 +65,6 @@ const coreButtonComponents = new Map([ [buttonKeys.SHOW_MORE, PostMenuShowMoreButton], ]); -function smallUserAttributes(user) { - return { - template: user.avatar_template, - username: user.username, - post_url: user.post_url, - url: userPath(user.username_lower), - unknown: user.unknown, - }; -} - const defaultDagOptions = { defaultPosition: { before: buttonKeys.SHOW_MORE }, throwErrorOnCycle: false, @@ -565,7 +556,7 @@ export default class PostMenu extends Component { post_action_type_id: LIKE_ACTION, }); - this.likedUsers = users.map(smallUserAttributes); + this.likedUsers = users.map(smallUserAttrs); this.totalLikedUsers = users.totalRows; this.isWhoLikedVisible = true; } @@ -575,7 +566,7 @@ export default class PostMenu extends Component { id: this.args.post.id, }); - this.readers = users.map(smallUserAttributes); + this.readers = users.map(smallUserAttrs); this.totalReaders = users.totalRows; this.isWhoReadVisible = true; } diff --git a/app/assets/javascripts/discourse/app/components/small-user-list.gjs b/app/assets/javascripts/discourse/app/components/small-user-list.gjs index 32cd180b62a..c228907d36c 100644 --- a/app/assets/javascripts/discourse/app/components/small-user-list.gjs +++ b/app/assets/javascripts/discourse/app/components/small-user-list.gjs @@ -1,12 +1,26 @@ import Component from "@glimmer/component"; -import { hash } from "@ember/helper"; import { service } from "@ember/service"; import PluginOutlet from "discourse/components/plugin-outlet"; import avatar from "discourse/helpers/bound-avatar-template"; import getURL from "discourse/lib/get-url"; -import { smallUserAttrs } from "discourse/lib/user-list-attrs"; +import { applyValueTransformer } from "discourse/lib/transformer"; +import { userPath } from "discourse/lib/url"; import { i18n } from "discourse-i18n"; +export function smallUserAttrs(user) { + const defaultAttrs = { + template: user.avatar_template, + username: user.username, + post_url: user.post_url, + url: userPath(user.username_lower), + unknown: user.unknown, + }; + + return applyValueTransformer("small-user-attrs", defaultAttrs, { + user, + }); +} + export default class SmallUserList extends Component { @service currentUser; @@ -30,10 +44,7 @@ export default class SmallUserList extends Component {