enhance: iroiro
This commit is contained in:
parent
9f306cc493
commit
360db2c78b
2
locales/index.d.ts
vendored
2
locales/index.d.ts
vendored
|
@ -1180,6 +1180,7 @@ export interface Locale {
|
||||||
"laterAreYouSure": string;
|
"laterAreYouSure": string;
|
||||||
};
|
};
|
||||||
"_initialTutorial": {
|
"_initialTutorial": {
|
||||||
|
"launchTutorial": string;
|
||||||
"title": string;
|
"title": string;
|
||||||
"wellDone": string;
|
"wellDone": string;
|
||||||
"_note": {
|
"_note": {
|
||||||
|
@ -1193,6 +1194,7 @@ export interface Locale {
|
||||||
"_reaction": {
|
"_reaction": {
|
||||||
"description": string;
|
"description": string;
|
||||||
"letsTryReacting": string;
|
"letsTryReacting": string;
|
||||||
|
"reactToContinue": string;
|
||||||
"reactDone": string;
|
"reactDone": string;
|
||||||
};
|
};
|
||||||
"_timeline": {
|
"_timeline": {
|
||||||
|
|
|
@ -1178,6 +1178,7 @@ _initialAccountSetting:
|
||||||
laterAreYouSure: "初期設定をあとでやり直しますか?"
|
laterAreYouSure: "初期設定をあとでやり直しますか?"
|
||||||
|
|
||||||
_initialTutorial:
|
_initialTutorial:
|
||||||
|
launchTutorial: "チュートリアルを見る"
|
||||||
title: "チュートリアル"
|
title: "チュートリアル"
|
||||||
wellDone: "お見事!"
|
wellDone: "お見事!"
|
||||||
_note:
|
_note:
|
||||||
|
@ -1186,10 +1187,11 @@ _initialTutorial:
|
||||||
reply: "このボタンから返信できます。もちろん返信に返信することもできるので、気が済むまで会話を続けることができます。"
|
reply: "このボタンから返信できます。もちろん返信に返信することもできるので、気が済むまで会話を続けることができます。"
|
||||||
renote: "このボタンを押すと、このノートを自分のタイムラインに投稿することができます。引用リノートも可能です。"
|
renote: "このボタンを押すと、このノートを自分のタイムラインに投稿することができます。引用リノートも可能です。"
|
||||||
reaction: "リアクションをつけることができます。詳しくは次のページで解説します。"
|
reaction: "リアクションをつけることができます。詳しくは次のページで解説します。"
|
||||||
howToNote: "ノートは、下のようなボタンから簡単に行なえます。チュートリアルが終わったら早速やってみてくださいね!"
|
howToNote: "ノートは、下のようなボタンから簡単にできます。チュートリアルが終わったら、早速「Misskey始めました」などと投稿してみましょう!"
|
||||||
_reaction:
|
_reaction:
|
||||||
description: "ノートには「リアクション」をつけることができます。「いいね」では伝わらないニュアンスも、リアクションで簡単・気軽に表現できます。"
|
description: "ノートには「リアクション」をつけることができます。「いいね」では伝わらないニュアンスも、リアクションで簡単・気軽に表現できます。"
|
||||||
letsTryReacting: "リアクションは、ノートの「+」ボタンをクリックするとつけられます。試しにこのノートに好きなリアクションをつけてみましょう!"
|
letsTryReacting: "リアクションは、ノートの「+」ボタンをクリックするとつけられます。試しにこのノートに好きなリアクションをつけてみましょう!"
|
||||||
|
reactToContinue: "リアクションをつけると先に進めるようになります。"
|
||||||
reactDone: "リアクションを外すときは、「ー」ボタンを押します。実際に試してみてくださいね。"
|
reactDone: "リアクションを外すときは、「ー」ボタンを押します。実際に試してみてくださいね。"
|
||||||
_timeline:
|
_timeline:
|
||||||
description1: "Misskeyには、使い方に応じて複数のタイムラインが用意されています(サーバーによってはいずれかが無効になっていることがあります)。"
|
description1: "Misskeyには、使い方に応じて複数のタイムラインが用意されています(サーバーによってはいずれかが無効になっていることがあります)。"
|
||||||
|
|
|
@ -41,6 +41,10 @@ const props = defineProps<{
|
||||||
phase: 'aboutNote' | 'howToReact';
|
phase: 'aboutNote' | 'howToReact';
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
|
const emit = defineEmits<{
|
||||||
|
(ev: 'reacted'): void;
|
||||||
|
}>();
|
||||||
|
|
||||||
const exampleNote = reactive<Misskey.entities.Note>({
|
const exampleNote = reactive<Misskey.entities.Note>({
|
||||||
id: '0000000000',
|
id: '0000000000',
|
||||||
createdAt: '2019-04-14T17:30:49.181Z',
|
createdAt: '2019-04-14T17:30:49.181Z',
|
||||||
|
@ -77,6 +81,7 @@ const onceReacted = ref<boolean>(false);
|
||||||
|
|
||||||
function addReaction(emoji) {
|
function addReaction(emoji) {
|
||||||
onceReacted.value = true;
|
onceReacted.value = true;
|
||||||
|
emit('reacted');
|
||||||
exampleNote.reactions[emoji] = 1;
|
exampleNote.reactions[emoji] = 1;
|
||||||
exampleNote.myReaction = emoji;
|
exampleNote.myReaction = emoji;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</div>
|
</div>
|
||||||
<I18n :src="i18n.ts._initialTutorial._timeline.description2" tag="div" style="padding: 0 16px;">
|
<I18n :src="i18n.ts._initialTutorial._timeline.description2" tag="div" style="padding: 0 16px;">
|
||||||
<template #link>
|
<template #link>
|
||||||
<a href="https://misskey-hub.net/help.html" target="_blank" class="_link">{{ i18n.ts.help }}</a>
|
<a href="https://misskey-hub.net/docs/features/timeline.html" target="_blank" class="_link">{{ i18n.ts.help }}</a>
|
||||||
</template>
|
</template>
|
||||||
</I18n>
|
</I18n>
|
||||||
|
|
||||||
|
|
|
@ -122,8 +122,8 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</MkSpacer>
|
</MkSpacer>
|
||||||
<div :class="$style.pageFooter">
|
<div :class="$style.pageFooter">
|
||||||
<div class="_buttonsCenter">
|
<div class="_buttonsCenter">
|
||||||
<MkButton rounded data-cy-user-setup-back @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton>
|
<MkButton v-if="!onlyTutorial" rounded data-cy-user-setup-back @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton>
|
||||||
<MkButton primary rounded gradate style="" data-cy-user-setup-continue @click="page++">{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton>
|
<MkButton primary rounded gradate data-cy-user-setup-continue @click="page++">{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -131,12 +131,15 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<template v-else-if="page === 7">
|
<template v-else-if="page === 7">
|
||||||
<div style="height: 100cqh; overflow: auto;">
|
<div style="height: 100cqh; overflow: auto;">
|
||||||
<MkSpacer :marginMin="20" :marginMax="28">
|
<MkSpacer :marginMin="20" :marginMax="28">
|
||||||
<XTutorialNote phase="howToReact"/>
|
<div class="_gaps">
|
||||||
|
<XTutorialNote phase="howToReact" @reacted="isReactionTutorialPushed = true"/>
|
||||||
|
<div v-if="!isReactionTutorialPushed">{{ i18n.ts._initialTutorial._reaction.reactToContinue }}</div>
|
||||||
|
</div>
|
||||||
</MkSpacer>
|
</MkSpacer>
|
||||||
<div :class="$style.pageFooter">
|
<div :class="$style.pageFooter">
|
||||||
<div class="_buttonsCenter">
|
<div class="_buttonsCenter">
|
||||||
<MkButton rounded data-cy-user-setup-back @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton>
|
<MkButton rounded data-cy-user-setup-back @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton>
|
||||||
<MkButton primary rounded gradate style="" data-cy-user-setup-continue @click="page++">{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton>
|
<MkButton primary rounded gradate :disabled="!isReactionTutorialPushed" data-cy-user-setup-continue @click="page++">{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -149,7 +152,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<div :class="$style.pageFooter">
|
<div :class="$style.pageFooter">
|
||||||
<div class="_buttonsCenter">
|
<div class="_buttonsCenter">
|
||||||
<MkButton rounded data-cy-user-setup-back @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton>
|
<MkButton rounded data-cy-user-setup-back @click="page--"><i class="ti ti-arrow-left"></i> {{ i18n.ts.goBack }}</MkButton>
|
||||||
<MkButton primary rounded gradate style="" data-cy-user-setup-continue @click="page++">{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton>
|
<MkButton primary rounded gradate data-cy-user-setup-continue @click="page++">{{ i18n.ts.continue }} <i class="ti ti-arrow-right"></i></MkButton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -197,22 +200,29 @@ import MkPushNotificationAllowButton from '@/components/MkPushNotificationAllowB
|
||||||
import { defaultStore } from '@/store.js';
|
import { defaultStore } from '@/store.js';
|
||||||
import * as os from '@/os.js';
|
import * as os from '@/os.js';
|
||||||
|
|
||||||
|
const props = defineProps<{
|
||||||
|
onlyTutorial?: boolean;
|
||||||
|
}>();
|
||||||
|
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
(ev: 'closed'): void;
|
(ev: 'closed'): void;
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
const dialog = shallowRef<InstanceType<typeof MkModalWindow>>();
|
const dialog = shallowRef<InstanceType<typeof MkModalWindow>>();
|
||||||
|
|
||||||
const page = ref(defaultStore.state.accountSetupWizard);
|
// eslint-disable-next-line vue/no-setup-props-destructure
|
||||||
|
const page = ref(props.onlyTutorial ? 6 : defaultStore.state.accountSetupWizard);
|
||||||
|
|
||||||
|
const isReactionTutorialPushed = ref<boolean>(false);
|
||||||
|
|
||||||
watch(page, () => {
|
watch(page, () => {
|
||||||
if (page.value <= 5) {
|
if (page.value <= 5 && !props.onlyTutorial) {
|
||||||
defaultStore.set('accountSetupWizard', page.value);
|
defaultStore.set('accountSetupWizard', page.value);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
async function close(skip: boolean) {
|
async function close(skip: boolean) {
|
||||||
if (skip) {
|
if (skip && !props.onlyTutorial) {
|
||||||
const { canceled } = await os.confirm({
|
const { canceled } = await os.confirm({
|
||||||
type: 'warning',
|
type: 'warning',
|
||||||
text: i18n.ts._initialAccountSetting.skipAreYouSure,
|
text: i18n.ts._initialAccountSetting.skipAreYouSure,
|
||||||
|
@ -220,9 +230,11 @@ async function close(skip: boolean) {
|
||||||
if (canceled) return;
|
if (canceled) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
dialog.value.close();
|
dialog.value?.close();
|
||||||
|
if (!props.onlyTutorial) {
|
||||||
defaultStore.set('accountSetupWizard', -1);
|
defaultStore.set('accountSetupWizard', -1);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function setupComplete() {
|
function setupComplete() {
|
||||||
defaultStore.set('accountSetupWizard', -1);
|
defaultStore.set('accountSetupWizard', -1);
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
* SPDX-License-Identifier: AGPL-3.0-only
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import { defineAsyncComponent } from 'vue';
|
||||||
import * as os from '@/os.js';
|
import * as os from '@/os.js';
|
||||||
import { instance } from '@/instance.js';
|
import { instance } from '@/instance.js';
|
||||||
import { host } from '@/config.js';
|
import { host } from '@/config.js';
|
||||||
|
@ -92,7 +93,15 @@ export function openInstanceMenu(ev: MouseEvent) {
|
||||||
action: () => {
|
action: () => {
|
||||||
window.open('https://misskey-hub.net/help.html', '_blank');
|
window.open('https://misskey-hub.net/help.html', '_blank');
|
||||||
},
|
},
|
||||||
}, {
|
}, ($i) ? {
|
||||||
|
text: i18n.ts._initialTutorial.launchTutorial,
|
||||||
|
icon: 'ti ti-presentation',
|
||||||
|
action: () => {
|
||||||
|
os.popup(defineAsyncComponent(() => import('@/components/MkUserSetupDialog.vue')), {
|
||||||
|
onlyTutorial: true,
|
||||||
|
}, {}, 'closed');
|
||||||
|
},
|
||||||
|
} : undefined, {
|
||||||
type: 'link',
|
type: 'link',
|
||||||
text: i18n.ts.aboutMisskey,
|
text: i18n.ts.aboutMisskey,
|
||||||
to: '/about-misskey',
|
to: '/about-misskey',
|
||||||
|
|
Loading…
Reference in a new issue