diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 0caec7bad6..47c04bd18b 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1002,8 +1002,10 @@ noteIdOrUrl: "ノートIDまたはURL" video: "動画" videos: "動画" dataSaver: "データセーバー" -accountMigration: "アカウントの引っ越し" -accountMoved: "このユーザーは新しいアカウントに引っ越しました:" +accountMigration: "アカウントの移行" +accountMoved: "このユーザーは新しいアカウントに移行しました:" +accountMovedShort: "アカウントは移行されています" +forbiddenBecauseYouAreMigrated: "このアカウントは移行されたため、この操作を行うことはできません。" forceShowAds: "常に広告を表示する" addMemo: "メモを追加" editMemo: "メモを編集" @@ -1025,14 +1027,20 @@ _serverRules: description: "新規登録前に表示する、サーバーの簡潔なルールを設定します。内容は利用規約の要約とすることを推奨します。" _accountMigration: - moveTo: "このアカウントを新しいアカウントに引っ越す" - moveToLabel: "引っ越し先のアカウント:" - moveAccountDescription: "この操作は取り消せません。まずは引っ越し先のアカウントでこのアカウントに対しエイリアスを作成したことを確認してください。\nエイリアス作成後、引っ越し先のアカウントをこのように入力してください:@person@instance.com" - moveFrom: "別のアカウントからこのアカウントへ引っ越す" + moveFrom: "別のアカウントからこのアカウントに移行" moveFromSub: "別のアカウントへエイリアスを作成" - moveFromLabel: "引っ越し元のアカウント #{n}" - moveFromDescription: "別のアカウントからこのアカウントにフォロワーを引き継いで引っ越したい場合、ここでエイリアスを作成しておく必要があります。必ず引っ越しを実行する前に作成してください!\n引っ越し元のアカウントをこのように入力してください:@person@instance.com\n削除するには、入力欄を空にして保存します(非推奨)。" - migrationConfirm: "本当にこのアカウントを {account} に引っ越しますか?一度引っ越しを行うと取り消せず、二度とこのアカウントを元の状態で使用できなくなります。\nまた、引っ越し先のアカウントでエイリアスを作成したことを確認してください。" + moveFromLabel: "移行元のアカウント #{n}" + moveFromDescription: "別のアカウントからこのアカウントに移行したい場合、ここでエイリアスを作成しておく必要があります。\n移行元のアカウントをこのように入力してください: @username@instance.example.com\n削除するには、入力欄を空にして保存します(非推奨)。" + moveTo: "このアカウントを新しいアカウントへ移行" + moveToLabel: "移行先のアカウント:" + moveCannotBeUndone: "アカウントを移行すると、取り消すことはできません。" + moveAccountDescription: "新しいアカウントへ移行します。\n ・フォロワーが新しいアカウントを自動でフォローします(フォロワーのサーバーが対応している場合)。\n ・このアカウントからのフォローは全て解除されます。\n ・このアカウントではノートの作成などができなくなります。" + moveAccountHowTo: "アカウントの移行には、まずは移行先のアカウントでこのアカウントに対しエイリアスを作成します。\nエイリアス作成後、移行先のアカウントをこのように入力してください: @username@instance.example.com" + startMigration: "移行する" + migrationConfirm: "本当にこのアカウントを {account} に移行しますか?一度移行すると取り消せず、二度とこのアカウントを元の状態で使用できなくなります。" + postMigrationNote: "フォロー解除は、移行操作をしてから1日後に行われます。" + movedAndCannotBeUndone: "\nアカウントは移行されています。\n移行を取り消すことはできません。" + movedTo: "移行先のアカウント:" _achievements: earnedAt: "獲得日時" diff --git a/packages/frontend/src/os.ts b/packages/frontend/src/os.ts index 157aa79064..bc62225c98 100644 --- a/packages/frontend/src/os.ts +++ b/packages/frontend/src/os.ts @@ -18,6 +18,7 @@ import MkPopupMenu from '@/components/MkPopupMenu.vue'; import MkContextMenu from '@/components/MkContextMenu.vue'; import { MenuItem } from '@/types/menu'; import copyToClipboard from './scripts/copy-to-clipboard'; +import { $i } from './account'; export const openingWindowsCount = ref(0); @@ -578,6 +579,14 @@ export function contextMenu(items: MenuItem[] | Ref, ev: MouseEvent) } export function post(props: Record = {}): Promise { + if ($i && $i.movedTo) { + return alert({ + type: 'error', + title: i18n.ts.accountMovedShort, + text: i18n.ts.forbiddenBecauseYouAreMigrated, + }); + } + return new Promise((resolve, reject) => { // NOTE: MkPostFormDialogをdynamic importするとiOSでテキストエリアに自動フォーカスできない // NOTE: ただ、dynamic importしない場合、MkPostFormDialogインスタンスが使いまわされ、 diff --git a/packages/frontend/src/pages/settings/migration.vue b/packages/frontend/src/pages/settings/migration.vue index 36a3557147..f18e452bd0 100644 --- a/packages/frontend/src/pages/settings/migration.vue +++ b/packages/frontend/src/pages/settings/migration.vue @@ -27,16 +27,26 @@
- {{ i18n.ts._accountMigration.moveAccountDescription }} -
- + {{ i18n.ts._accountMigration.moveAccountDescription }} + + +
@@ -48,20 +58,22 @@ import FormInfo from '@/components/MkInfo.vue'; import MkInput from '@/components/MkInput.vue'; import MkButton from '@/components/MkButton.vue'; import MkFolder from '@/components/MkFolder.vue'; +import MkUserInfo from '@/components/MkUserInfo.vue'; import * as os from '@/os'; import { i18n } from '@/i18n'; import { definePageMetadata } from '@/scripts/page-metadata'; import { $i } from '@/account'; import { toString } from 'misskey-js/built/acct'; +import { UserDetailed } from 'misskey-js/built/entities'; import { unisonReload } from '@/scripts/unison-reload'; const moveToAccount = ref(''); +const movedTo = ref(); const accountAliases = ref(['']); async function init() { if ($i?.movedTo) { - const movedTo = await os.api('users/show', { userId: $i.movedTo }); - moveToAccount.value = movedTo ? toString(movedTo) : ''; + movedTo.value = await os.api('users/show', { userId: $i.movedTo }); } else { moveToAccount.value = ''; }