enhance: iroiro

This commit is contained in:
kakkokari-gtyih 2023-10-25 16:04:01 +09:00
parent 9f306cc493
commit 360db2c78b
6 changed files with 43 additions and 13 deletions

2
locales/index.d.ts vendored
View file

@ -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": {

View file

@ -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には、使い方に応じて複数のタイムラインが用意されていますサーバーによってはいずれかが無効になっていることがあります。"

View file

@ -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;
} }

View file

@ -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>

View file

@ -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,8 +230,10 @@ async function close(skip: boolean) {
if (canceled) return; if (canceled) return;
} }
dialog.value.close(); dialog.value?.close();
defaultStore.set('accountSetupWizard', -1); if (!props.onlyTutorial) {
defaultStore.set('accountSetupWizard', -1);
}
} }
function setupComplete() { function setupComplete() {

View file

@ -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',