From 4803fb07c85914fd0c9756a1d399e9803f48b8c7 Mon Sep 17 00:00:00 2001
From: Alexander Tumin <iamtakingiteasy@eientei.org>
Date: Mon, 8 Aug 2022 23:42:22 +0300
Subject: [PATCH 1/2] Allow opening profile when clicking an avatar inside of
 user popover

---
 src/components/settings_modal/tabs/general_tab.js  |  5 +++++
 src/components/settings_modal/tabs/general_tab.vue | 11 +++++++----
 src/components/user_popover/user_popover.js        |  4 ++--
 src/components/user_popover/user_popover.vue       |  2 +-
 src/i18n/en.json                                   |  5 ++++-
 src/modules/config.js                              |  2 +-
 6 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/src/components/settings_modal/tabs/general_tab.js b/src/components/settings_modal/tabs/general_tab.js
index 1e11b9e0bc..d94a3be91f 100644
--- a/src/components/settings_modal/tabs/general_tab.js
+++ b/src/components/settings_modal/tabs/general_tab.js
@@ -43,6 +43,11 @@ const GeneralTab = {
         value: mode,
         label: this.$t(`settings.third_column_mode_${mode}`)
       })),
+      userPopoverAvatarActionOptions: ['close', 'zoom', 'open'].map(mode => ({
+        key: mode,
+        value: mode,
+        label: this.$t(`settings.user_popover_avatar_action_${mode}`)
+      })),
       loopSilentAvailable:
       // Firefox
       Object.getOwnPropertyDescriptor(HTMLVideoElement.prototype, 'mozHasAudio') ||
diff --git a/src/components/settings_modal/tabs/general_tab.vue b/src/components/settings_modal/tabs/general_tab.vue
index a260920024..7ac61b2ef8 100644
--- a/src/components/settings_modal/tabs/general_tab.vue
+++ b/src/components/settings_modal/tabs/general_tab.vue
@@ -75,12 +75,15 @@
           </BooleanSetting>
         </li>
         <li>
-          <BooleanSetting
-            path="userPopoverZoom"
+          <ChoiceSetting
+            v-if="user"
+            id="userPopoverAvatarAction"
+            path="userPopoverAvatarAction"
+            :options="userPopoverAvatarActionOptions"
             expert="1"
           >
-            {{ $t('settings.user_popover_avatar_zoom') }}
-          </BooleanSetting>
+            {{ $t('settings.user_popover_avatar_action') }}
+          </ChoiceSetting>
         </li>
         <li>
           <BooleanSetting
diff --git a/src/components/user_popover/user_popover.js b/src/components/user_popover/user_popover.js
index 69b2538391..3b12aa1e8d 100644
--- a/src/components/user_popover/user_popover.js
+++ b/src/components/user_popover/user_popover.js
@@ -11,8 +11,8 @@ const UserPopover = {
     Popover: defineAsyncComponent(() => import('../popover/popover.vue'))
   },
   computed: {
-    userPopoverZoom () {
-      return this.$store.getters.mergedConfig.userPopoverZoom
+    userPopoverAvatarAction () {
+      return this.$store.getters.mergedConfig.userPopoverAvatarAction
     },
     userPopoverOverlay () {
       return this.$store.getters.mergedConfig.userPopoverOverlay
diff --git a/src/components/user_popover/user_popover.vue b/src/components/user_popover/user_popover.vue
index 4e99967272..53d51fc4db 100644
--- a/src/components/user_popover/user_popover.vue
+++ b/src/components/user_popover/user_popover.vue
@@ -14,7 +14,7 @@
         class="user-popover"
         :user-id="userId"
         :hide-bio="true"
-        :avatar-action="userPopoverZoom ? 'zoom' : close"
+        :avatar-action="userPopoverAvatarAction == 'close' ? close : userPopoverAvatarAction"
         :on-close="close"
       />
     </template>
diff --git a/src/i18n/en.json b/src/i18n/en.json
index c54d475017..140e569d66 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -556,7 +556,10 @@
     "mention_link_show_avatar_quick": "Show user avatar next to mentions",
     "mention_link_fade_domain": "Fade domains (e.g. {'@'}example.org in {'@'}foo{'@'}example.org)",
     "mention_link_bolden_you": "Highlight mention of you when you are mentioned",
-    "user_popover_avatar_zoom": "Clicking on user avatar in popover zooms it instead of closing the popover",
+    "user_popover_avatar_action": "Popover avatar click action",
+    "user_popover_avatar_action_zoom": "Zoom the avatar",
+    "user_popover_avatar_action_close": "Close the popover",
+    "user_popover_avatar_action_open": "Open profile",
     "user_popover_avatar_overlay": "Show user popover over user avatar",
     "fun": "Fun",
     "greentext": "Meme arrows",
diff --git a/src/modules/config.js b/src/modules/config.js
index eaf67a911d..e1e0bdd741 100644
--- a/src/modules/config.js
+++ b/src/modules/config.js
@@ -81,7 +81,7 @@ export const defaultState = {
   useContainFit: true,
   disableStickyHeaders: false,
   showScrollbars: false,
-  userPopoverZoom: false,
+  userPopoverAvatarAction: 'close',
   userPopoverOverlay: true,
   greentext: undefined, // instance default
   useAtIcon: undefined, // instance default
-- 
GitLab


From a403f93b478eec67d779400b1fcfdc006bb787da Mon Sep 17 00:00:00 2001
From: Alexander Tumin <iamtakingiteasy@eientei.org>
Date: Tue, 9 Aug 2022 10:44:20 +0300
Subject: [PATCH 2/2] Allow opening profile: multiChoiceProprties record,
 anonymous access

---
 src/components/settings_modal/tabs/general_tab.vue | 1 -
 src/modules/config.js                              | 3 ++-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/components/settings_modal/tabs/general_tab.vue b/src/components/settings_modal/tabs/general_tab.vue
index 7ac61b2ef8..c212a81a28 100644
--- a/src/components/settings_modal/tabs/general_tab.vue
+++ b/src/components/settings_modal/tabs/general_tab.vue
@@ -76,7 +76,6 @@
         </li>
         <li>
           <ChoiceSetting
-            v-if="user"
             id="userPopoverAvatarAction"
             path="userPopoverAvatarAction"
             :options="userPopoverAvatarActionOptions"
diff --git a/src/modules/config.js b/src/modules/config.js
index e1e0bdd741..eaf48fa196 100644
--- a/src/modules/config.js
+++ b/src/modules/config.js
@@ -17,7 +17,8 @@ export const multiChoiceProperties = [
   'subjectLineBehavior',
   'conversationDisplay', // tree | linear
   'conversationOtherRepliesButton', // below | inside
-  'mentionLinkDisplay' // short | full_for_remote | full
+  'mentionLinkDisplay', // short | full_for_remote | full
+  'userPopoverAvatarAction' // close | zoom | open
 ]
 
 export const defaultState = {
-- 
GitLab