summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-07-18 19:50:23 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-07-18 19:50:23 +0900
commit269cd560c7cf8139e9bb3bcdd9e92c776ae73dce (patch)
tree94dc3ffa6454e3355ea1ad07c07a530ff938c33d
parentfeat(frontend): Renote時に公開範囲のデフォルト設定が適用さ... (diff)
downloadsharkey-269cd560c7cf8139e9bb3bcdd9e92c776ae73dce.tar.gz
sharkey-269cd560c7cf8139e9bb3bcdd9e92c776ae73dce.tar.bz2
sharkey-269cd560c7cf8139e9bb3bcdd9e92c776ae73dce.zip
enhance(frontend): フォロー/フォロワー非公開時の表示を改善
Close #10934 Resolve #10887
-rw-r--r--CHANGELOG.md1
-rw-r--r--packages/frontend/src/components/MkUserInfo.vue5
-rw-r--r--packages/frontend/src/components/MkUserPopup.vue5
-rw-r--r--packages/frontend/src/pages/user/home.vue7
-rw-r--r--packages/frontend/src/scripts/isFfVisibleForMe.ts11
5 files changed, 22 insertions, 7 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ec816817c0..a225fa9694 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -40,6 +40,7 @@
- Deckで非ルートページにアクセスした際に簡易UIで表示しない設定を追加
- ロール設定画面でロールIDを確認できるように
- コンテキストメニュー表示時のパフォーマンスを改善
+- フォロー/フォロワー非公開時の表示を改善
- Fix: サーバーメトリクスが90度傾いている
- Fix: 非ログイン時にクレデンシャルが必要なページに行くとエラーが出る問題を修正
- Fix: sparkle内にリンクを入れるとクリック不能になる問題の修正
diff --git a/packages/frontend/src/components/MkUserInfo.vue b/packages/frontend/src/components/MkUserInfo.vue
index 172b517511..81c9d3ec4f 100644
--- a/packages/frontend/src/components/MkUserInfo.vue
+++ b/packages/frontend/src/components/MkUserInfo.vue
@@ -17,10 +17,10 @@
<div :class="$style.statusItem">
<p :class="$style.statusItemLabel">{{ i18n.ts.notes }}</p><span :class="$style.statusItemValue">{{ user.notesCount }}</span>
</div>
- <div :class="$style.statusItem">
+ <div v-if="isFfVisibleForMe(user)" :class="$style.statusItem">
<p :class="$style.statusItemLabel">{{ i18n.ts.following }}</p><span :class="$style.statusItemValue">{{ user.followingCount }}</span>
</div>
- <div :class="$style.statusItem">
+ <div v-if="isFfVisibleForMe(user)" :class="$style.statusItem">
<p :class="$style.statusItemLabel">{{ i18n.ts.followers }}</p><span :class="$style.statusItemValue">{{ user.followersCount }}</span>
</div>
</div>
@@ -34,6 +34,7 @@ import MkFollowButton from '@/components/MkFollowButton.vue';
import { userPage } from '@/filters/user';
import { i18n } from '@/i18n';
import { $i } from '@/account';
+import { isFfVisibleForMe } from '@/scripts/isFfVisibleForMe';
defineProps<{
user: misskey.entities.UserDetailed;
diff --git a/packages/frontend/src/components/MkUserPopup.vue b/packages/frontend/src/components/MkUserPopup.vue
index 3b6e348e0b..04331ceb50 100644
--- a/packages/frontend/src/components/MkUserPopup.vue
+++ b/packages/frontend/src/components/MkUserPopup.vue
@@ -30,11 +30,11 @@
<div :class="$style.statusItemLabel">{{ i18n.ts.notes }}</div>
<div>{{ number(user.notesCount) }}</div>
</div>
- <div :class="$style.statusItem">
+ <div v-if="isFfVisibleForMe(user)" :class="$style.statusItem">
<div :class="$style.statusItemLabel">{{ i18n.ts.following }}</div>
<div>{{ number(user.followingCount) }}</div>
</div>
- <div :class="$style.statusItem">
+ <div v-if="isFfVisibleForMe(user)" :class="$style.statusItem">
<div :class="$style.statusItemLabel">{{ i18n.ts.followers }}</div>
<div>{{ number(user.followersCount) }}</div>
</div>
@@ -61,6 +61,7 @@ import number from '@/filters/number';
import { i18n } from '@/i18n';
import { defaultStore } from '@/store';
import { $i } from '@/account';
+import { isFfVisibleForMe } from '@/scripts/isFfVisibleForMe';
const props = defineProps<{
showing: boolean;
diff --git a/packages/frontend/src/pages/user/home.vue b/packages/frontend/src/pages/user/home.vue
index 23588763bc..b0d42463a0 100644
--- a/packages/frontend/src/pages/user/home.vue
+++ b/packages/frontend/src/pages/user/home.vue
@@ -100,15 +100,15 @@
</dl>
</div>
<div class="status">
- <MkA v-click-anime :to="userPage(user)">
+ <MkA :to="userPage(user)">
<b>{{ number(user.notesCount) }}</b>
<span>{{ i18n.ts.notes }}</span>
</MkA>
- <MkA v-click-anime :to="userPage(user, 'following')">
+ <MkA v-if="isFfVisibleForMe(user)" :to="userPage(user, 'following')">
<b>{{ number(user.followingCount) }}</b>
<span>{{ i18n.ts.following }}</span>
</MkA>
- <MkA v-click-anime :to="userPage(user, 'followers')">
+ <MkA v-if="isFfVisibleForMe(user)" :to="userPage(user, 'followers')">
<b>{{ number(user.followersCount) }}</b>
<span>{{ i18n.ts.followers }}</span>
</MkA>
@@ -160,6 +160,7 @@ import { dateString } from '@/filters/date';
import { confetti } from '@/scripts/confetti';
import MkNotes from '@/components/MkNotes.vue';
import { api } from '@/os';
+import { isFfVisibleForMe } from '@/scripts/isFfVisibleForMe';
const XPhotos = defineAsyncComponent(() => import('./index.photos.vue'));
const XActivity = defineAsyncComponent(() => import('./index.activity.vue'));
diff --git a/packages/frontend/src/scripts/isFfVisibleForMe.ts b/packages/frontend/src/scripts/isFfVisibleForMe.ts
new file mode 100644
index 0000000000..0ddd3f377d
--- /dev/null
+++ b/packages/frontend/src/scripts/isFfVisibleForMe.ts
@@ -0,0 +1,11 @@
+import * as misskey from 'misskey-js';
+import { $i } from '@/account';
+
+export function isFfVisibleForMe(user: misskey.entities.UserDetailed): boolean {
+ if ($i && $i.id === user.id) return true;
+
+ if (user.ffVisibility === 'private') return false;
+ if (user.ffVisibility === 'followers' && !user.isFollowing) return false;
+
+ return true;
+}