summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsyuilo <4439005+syuilo@users.noreply.github.com>2025-09-06 12:41:27 +0900
committersyuilo <4439005+syuilo@users.noreply.github.com>2025-09-06 12:41:27 +0900
commit5b994b3e03345c4d701e1d70eab6c30afe669d0e (patch)
tree00810487caeeec1d1421cb368a8e1e821b767779
parentenhance(frontend): クリップ/リスト/アンテナ/ロール追加系メ... (diff)
downloadmisskey-5b994b3e03345c4d701e1d70eab6c30afe669d0e.tar.gz
misskey-5b994b3e03345c4d701e1d70eab6c30afe669d0e.tar.bz2
misskey-5b994b3e03345c4d701e1d70eab6c30afe669d0e.zip
fix(frontend): プロファイルを復元後アカウントの切り替えができない問題を修正
Fix #16508
-rw-r--r--CHANGELOG.md1
-rw-r--r--packages/frontend/src/accounts.ts21
-rw-r--r--packages/frontend/src/components/MkSignin.input.vue4
-rw-r--r--packages/frontend/src/components/MkSignin.vue3
-rw-r--r--packages/frontend/src/components/MkSigninDialog.vue4
5 files changed, 29 insertions, 4 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6abe71ae73..d7df4a3465 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@
- Enhance: クリップ/リスト/アンテナ/ロール追加系メニュー項目において、表示件数を拡張
- Fix: プッシュ通知を有効にできない問題を修正
- Fix: RSSティッカーウィジェットが正しく動作しない問題を修正
+- Fix: プロファイルを復元後アカウントの切り替えができない問題を修正
- Fix: エラー画像が横に引き伸ばされてしまう問題に対応
### Server
diff --git a/packages/frontend/src/accounts.ts b/packages/frontend/src/accounts.ts
index afa2ecb911..60f7cd0b4b 100644
--- a/packages/frontend/src/accounts.ts
+++ b/packages/frontend/src/accounts.ts
@@ -251,13 +251,30 @@ export async function openAccountMenu(opts: {
}
},
};
- } else {
+ } else { // プロファイルを復元した場合などはアカウントのトークンや詳細情報はstoreにキャッシュされていない
return {
type: 'button' as const,
text: username,
active: opts.active != null ? opts.active === id : false,
action: async () => {
- // TODO
+ const { dispose } = popup(defineAsyncComponent(() => import('@/components/MkSigninDialog.vue')), {
+ initialUsername: username,
+ }, {
+ done: async (res: Misskey.entities.SigninFlowResponse & { finished: true }) => {
+ store.set('accountTokens', { ...store.s.accountTokens, [host + '/' + res.id]: res.i });
+
+ if (callback) {
+ fetchAccount(res.i, id).then(account => {
+ callback(account);
+ });
+ } else {
+ switchAccount(host, id);
+ }
+ },
+ closed: () => {
+ dispose();
+ },
+ });
},
};
}
diff --git a/packages/frontend/src/components/MkSignin.input.vue b/packages/frontend/src/components/MkSignin.input.vue
index aacd1eae2a..4c73eab3f5 100644
--- a/packages/frontend/src/components/MkSignin.input.vue
+++ b/packages/frontend/src/components/MkSignin.input.vue
@@ -69,9 +69,11 @@ import MkInfo from '@/components/MkInfo.vue';
const props = withDefaults(defineProps<{
message?: string,
openOnRemote?: OpenOnRemoteOptions,
+ initialUsername?: string;
}>(), {
message: '',
openOnRemote: undefined,
+ initialUsername: undefined,
});
const emit = defineEmits<{
@@ -81,7 +83,7 @@ const emit = defineEmits<{
const host = toUnicode(configHost);
-const username = ref('');
+const username = ref(props.initialUsername ?? '');
//#region Open on remote
function openRemote(options: OpenOnRemoteOptions, targetHost?: string): void {
diff --git a/packages/frontend/src/components/MkSignin.vue b/packages/frontend/src/components/MkSignin.vue
index b0fbe3c490..93a29b0b54 100644
--- a/packages/frontend/src/components/MkSignin.vue
+++ b/packages/frontend/src/components/MkSignin.vue
@@ -20,6 +20,7 @@ SPDX-License-Identifier: AGPL-3.0-only
key="input"
:message="message"
:openOnRemote="openOnRemote"
+ :initialUsername="initialUsername"
@usernameSubmitted="onUsernameSubmitted"
@passkeyClick="onPasskeyLogin"
@@ -89,10 +90,12 @@ const props = withDefaults(defineProps<{
autoSet?: boolean;
message?: string,
openOnRemote?: OpenOnRemoteOptions,
+ initialUsername?: string;
}>(), {
autoSet: false,
message: '',
openOnRemote: undefined,
+ initialUsername: undefined,
});
const page = ref<'input' | 'password' | 'totp' | 'passkey'>('input');
diff --git a/packages/frontend/src/components/MkSigninDialog.vue b/packages/frontend/src/components/MkSigninDialog.vue
index 60c99880cd..77141f1714 100644
--- a/packages/frontend/src/components/MkSigninDialog.vue
+++ b/packages/frontend/src/components/MkSigninDialog.vue
@@ -16,7 +16,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<button :class="$style.closeButton" class="_button" @click="onClose"><i class="ti ti-x"></i></button>
</div>
<div :class="$style.content">
- <MkSignin :autoSet="autoSet" :message="message" :openOnRemote="openOnRemote" @login="onLogin"/>
+ <MkSignin :autoSet="autoSet" :message="message" :openOnRemote="openOnRemote" :initialUsername="initialUsername" @login="onLogin"/>
</div>
</div>
</MkModal>
@@ -34,10 +34,12 @@ withDefaults(defineProps<{
autoSet?: boolean;
message?: string,
openOnRemote?: OpenOnRemoteOptions,
+ initialUsername?: string;
}>(), {
autoSet: false,
message: '',
openOnRemote: undefined,
+ initialUsername: undefined,
});
const emit = defineEmits<{