Follow-up from "Custom role UI enhancements"
The following discussion from !141887 (merged) should be addressed:
-
@dftian started a discussion: (+1 comment) The backend data only provides the role name, but not the role description:
So we need this computed property to search through the access level options and pull the description from the matching entry.
Instead, can we add the description to the member data so that we can skip the search and access the description directly? backend would return this data:
which we can read directly. Here's a patch for how that might work:
Patch
Subject: [PATCH] r --- Index: app/serializers/member_entity.rb IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/app/serializers/member_entity.rb b/app/serializers/member_entity.rb --- a/app/serializers/member_entity.rb (revision 1d8ab78c4cb1a9e473075ce982897e963047cc79) +++ b/app/serializers/member_entity.rb (date 1706228964881) @@ -33,6 +33,7 @@ expose :human_access, as: :string_value expose :access_level, as: :integer_value expose :member_role_id + expose :role_description, as: :description end expose :custom_permissions Index: app/assets/javascripts/members/components/table/max_role.vue IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/app/assets/javascripts/members/components/table/max_role.vue b/app/assets/javascripts/members/components/table/max_role.vue --- a/app/assets/javascripts/members/components/table/max_role.vue (revision 1d8ab78c4cb1a9e473075ce982897e963047cc79) +++ b/app/assets/javascripts/members/components/table/max_role.vue (date 1706229103585) @@ -45,11 +45,6 @@ disabled() { return this.permissions.canOverride && !this.member.isOverridden; }, - memberRoleDescription() { - if (!this.memberRoleId) return null; - return this.accessLevelOptions.flatten.find((item) => item.value === this.selectedRole) - .description; - }, }, mounted() { this.isDesktop = bp.isDesktop(); @@ -138,7 +133,7 @@ </template> </gl-collapsible-listbox> - <div v-else v-gl-tooltip="memberRoleDescription" data-testid="role-text"> + <div v-else v-gl-tooltip="member.accessLevel.description" data-testid="role-text"> {{ member.accessLevel.stringValue }} </div> Index: ee/app/presenters/ee/member_presenter.rb IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/ee/app/presenters/ee/member_presenter.rb b/ee/app/presenters/ee/member_presenter.rb --- a/ee/app/presenters/ee/member_presenter.rb (revision 1d8ab78c4cb1a9e473075ce982897e963047cc79) +++ b/ee/app/presenters/ee/member_presenter.rb (date 1706228762685) @@ -21,6 +21,10 @@ super end + def role_description + member_role.description if member_role + end + delegator_override :valid_member_roles def valid_member_roles root_group = member.source&.root_ancestor