diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1924805849..b3655536b5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,7 @@
- Enhance: タイムラインのパフォーマンスを向上
- Fix: 一部のブラウザでアコーディオンメニューのアニメーションが動作しない問題を修正
- Fix: ダイアログのお知らせが画面からはみ出ることがある問題を修正
+- Fix: ユーザーポップアップでエラーが生じてもインジケーターが表示され続けてしまう問題を修正
### Server
- Enhance: 凍結されたユーザのノートが各種タイムラインで表示されないように `#15775`
diff --git a/packages/frontend/src/components/MkUserPopup.vue b/packages/frontend/src/components/MkUserPopup.vue
index 3bd2a2ffae..2a423bfa55 100644
--- a/packages/frontend/src/components/MkUserPopup.vue
+++ b/packages/frontend/src/components/MkUserPopup.vue
@@ -12,7 +12,8 @@ SPDX-License-Identifier: AGPL-3.0-only
appear @afterLeave="emit('closed')"
>
{ emit('mouseover'); }" @mouseleave="() => { emit('mouseleave'); }">
-
+
+
{{ i18n.ts.followsYou }}
@@ -85,6 +86,7 @@ const zIndex = os.claimZIndex('middle');
const user = ref
(null);
const top = ref(0);
const left = ref(0);
+const error = ref(false);
function showMenu(ev: MouseEvent) {
if (user.value == null) return;
@@ -92,19 +94,27 @@ function showMenu(ev: MouseEvent) {
os.popupMenu(menu, ev.currentTarget ?? ev.target).finally(cleanup);
}
-onMounted(() => {
+async function fetchUser() {
if (typeof props.q === 'object') {
user.value = props.q;
+ error.value = false;
} else {
- const query = props.q.startsWith('@') ?
+ const query: Omit = props.q.startsWith('@') ?
Misskey.acct.parse(props.q.substring(1)) :
{ userId: props.q };
misskeyApi('users/show', query).then(res => {
if (!props.showing) return;
user.value = res;
+ error.value = false;
+ }, () => {
+ error.value = true;
});
}
+}
+
+onMounted(() => {
+ fetchUser();
const rect = props.source.getBoundingClientRect();
const x = ((rect.left + (props.source.offsetWidth / 2)) - (300 / 2)) + window.scrollX;