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