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