From e2f39596f048cb240ccd33f6bef663355f8ec535 Mon Sep 17 00:00:00 2001
From: Lim Chee Aun <cheeaun@gmail.com>
Date: Mon, 15 Apr 2024 19:58:59 +0800
Subject: [PATCH] Might as well add more supports

---
 src/components/account-info.jsx | 52 ++++++++++++++++++---------------
 src/utils/supports.js           |  3 +-
 2 files changed, 31 insertions(+), 24 deletions(-)

diff --git a/src/components/account-info.jsx b/src/components/account-info.jsx
index 35ea89ea..49cb4274 100644
--- a/src/components/account-info.jsx
+++ b/src/components/account-info.jsx
@@ -23,6 +23,7 @@ import showToast from '../utils/show-toast';
 import states, { hideAllModals } from '../utils/states';
 import store from '../utils/store';
 import { getCurrentAccountID, updateAccount } from '../utils/store-utils';
+import supports from '../utils/supports';
 
 import AccountBlock from './account-block';
 import Avatar from './avatar';
@@ -1091,16 +1092,18 @@ function RelatedActions({
                   <Icon icon="translate" />
                   <span>Translate bio</span>
                 </MenuItem>
-                <MenuItem
-                  onClick={() => {
-                    setShowPrivateNoteModal(true);
-                  }}
-                >
-                  <Icon icon="pencil" />
-                  <span>
-                    {privateNote ? 'Edit private note' : 'Add private note'}
-                  </span>
-                </MenuItem>
+                {supports('@mastodon/profile-private-note') && (
+                  <MenuItem
+                    onClick={() => {
+                      setShowPrivateNoteModal(true);
+                    }}
+                  >
+                    <Icon icon="pencil" />
+                    <span>
+                      {privateNote ? 'Edit private note' : 'Add private note'}
+                    </span>
+                  </MenuItem>
+                )}
                 {following && !!relationship && (
                   <>
                     <MenuItem
@@ -1449,19 +1452,22 @@ function RelatedActions({
                 </MenuItem>
               </>
             )}
-            {currentAuthenticated && isSelf && standalone && (
-              <>
-                <MenuDivider />
-                <MenuItem
-                  onClick={() => {
-                    setShowEditProfile(true);
-                  }}
-                >
-                  <Icon icon="pencil" />
-                  <span>Edit profile</span>
-                </MenuItem>
-              </>
-            )}
+            {currentAuthenticated &&
+              isSelf &&
+              standalone &&
+              supports('@mastodon/profile-edit') && (
+                <>
+                  <MenuDivider />
+                  <MenuItem
+                    onClick={() => {
+                      setShowEditProfile(true);
+                    }}
+                  >
+                    <Icon icon="pencil" />
+                    <span>Edit profile</span>
+                  </MenuItem>
+                </>
+              )}
             {import.meta.env.DEV && currentAuthenticated && isSelf && (
               <>
                 <MenuDivider />
diff --git a/src/utils/supports.js b/src/utils/supports.js
index 4733cd97..6b94126e 100644
--- a/src/utils/supports.js
+++ b/src/utils/supports.js
@@ -5,7 +5,6 @@ import features from '../data/features.json';
 import { getCurrentInstance } from './store-utils';
 
 // Non-semver(?) UA string detection
-// Can't put this inside features.json due to regex
 const containPixelfed = /pixelfed/i;
 const notContainPixelfed = /^(?!.*pixelfed).*$/i;
 const platformFeatures = {
@@ -16,6 +15,8 @@ const platformFeatures = {
   '@mastodon/trending-links': notContainPixelfed,
   '@mastodon/post-bookmark': notContainPixelfed,
   '@mastodon/post-edit': notContainPixelfed,
+  '@mastodon/profile-edit': notContainPixelfed,
+  '@mastodon/profile-private-note': notContainPixelfed,
   '@pixelfed/trending': containPixelfed,
 };
 const supportsCache = {};