summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components/MkTutorialDialog.Note.vue
diff options
context:
space:
mode:
authorかっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>2023-11-03 15:35:07 +0900
committerGitHub <noreply@github.com>2023-11-03 15:35:07 +0900
commit24e629ca5c50789ff0aba31532ae66b51148d70f (patch)
tree513155452fd0644c6b69bf7e53e26ab6575977db /packages/frontend/src/components/MkTutorialDialog.Note.vue
parentenhance: アカウント登録時のメールアドレス認証に30分の有... (diff)
downloadsharkey-24e629ca5c50789ff0aba31532ae66b51148d70f.tar.gz
sharkey-24e629ca5c50789ff0aba31532ae66b51148d70f.tar.bz2
sharkey-24e629ca5c50789ff0aba31532ae66b51148d70f.zip
enhance: 初期設定とチュートリアルを統合 (#12141)
* better onboarding experience * enhance: iroiro * (add) title * (enhance) 戻る・次へボタンを全ページでstickyに * fix merging * (add) iroiro * remove unnecessary file * Update CHANGELOG.md * tweak texts * (fix) reactionViewer mock * change strings * Update MkTutorialDialog.Note.vue * Update ja-JP.yml * (fix) reactionViewer error * (fix) path * refactor * fix * Update MkPostForm.vue * Update ja-JP.yml * Update ja-JP.yml * tweak text * Update ja-JP.yml * Update ja-JP.yml * Update ja-JP.yml * (add) achivement * (add) もう一度見れますよメッセージを追加 * Revert "feat: レジストリAPIをサードパーティから利用可能に (#12229)" This reverts commit 79346272f8792d35955efd3aaaa1e42e0cd2a6e3. * Revert "(add) もう一度見れますよメッセージを追加" This reverts commit 6123b35215133f0d5e5db356bb43f4acbafab8fa. * Revert "Revert "feat: レジストリAPIをサードパーティから利用可能に (#12229)"" This reverts commit bae684e484ef99308d7ac816a822047117efe1c6. * tweak --------- Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
Diffstat (limited to 'packages/frontend/src/components/MkTutorialDialog.Note.vue')
-rw-r--r--packages/frontend/src/components/MkTutorialDialog.Note.vue117
1 files changed, 117 insertions, 0 deletions
diff --git a/packages/frontend/src/components/MkTutorialDialog.Note.vue b/packages/frontend/src/components/MkTutorialDialog.Note.vue
new file mode 100644
index 0000000000..c7df1a576e
--- /dev/null
+++ b/packages/frontend/src/components/MkTutorialDialog.Note.vue
@@ -0,0 +1,117 @@
+<!--
+SPDX-FileCopyrightText: syuilo and other misskey contributors
+SPDX-License-Identifier: AGPL-3.0-only
+-->
+
+<template>
+<div v-if="phase === 'aboutNote'" class="_gaps">
+ <div style="text-align: center; padding: 0 16px;">{{ i18n.ts._initialTutorial._note.description }}</div>
+ <MkNote :class="$style.exampleNoteRoot" style="pointer-events: none;" :note="exampleNote" :mock="true"/>
+ <div class="_gaps_s">
+ <div><i class="ti ti-arrow-back-up"></i> <b>{{ i18n.ts.reply }}</b> … {{ i18n.ts._initialTutorial._note.reply }}</div>
+ <div><i class="ti ti-repeat"></i> <b>{{ i18n.ts.renote }}</b> … {{ i18n.ts._initialTutorial._note.renote }}</div>
+ <div><i class="ti ti-plus"></i> <b>{{ i18n.ts.reaction }}</b> … {{ i18n.ts._initialTutorial._note.reaction }}</div>
+ <div><i class="ti ti-dots"></i> <b>{{ i18n.ts.menu }}</b> … {{ i18n.ts._initialTutorial._note.menu }}</div>
+ </div>
+</div>
+<div v-else-if="phase === 'howToReact'" class="_gaps">
+ <div style="text-align: center; padding: 0 16px;">{{ i18n.ts._initialTutorial._reaction.description }}</div>
+ <div>{{ i18n.ts._initialTutorial._reaction.letsTryReacting }}</div>
+ <MkNote :class="$style.exampleNoteRoot" :note="exampleNote" :mock="true" @reaction="addReaction" @removeReaction="removeReaction" @updateReaction="updateReaction"/>
+ <div v-if="onceReacted"><b style="color: var(--accent);"><i class="ti ti-check"></i> {{ i18n.ts._initialTutorial.wellDone }}</b> {{ i18n.ts._initialTutorial._reaction.reactNotification }}<br>{{ i18n.ts._initialTutorial._reaction.reactDone }}</div>
+</div>
+</template>
+
+<script setup lang="ts">
+import * as Misskey from 'misskey-js';
+import { ref, reactive } from 'vue';
+import { i18n } from '@/i18n.js';
+import { globalEvents } from '@/events.js';
+import { $i } from '@/account.js';
+import MkNote from '@/components/MkNote.vue';
+
+const props = defineProps<{
+ phase: 'aboutNote' | 'howToReact';
+}>();
+
+const emit = defineEmits<{
+ (ev: 'reacted'): void;
+}>();
+
+const exampleNote = reactive<Misskey.entities.Note>({
+ id: '0000000000',
+ createdAt: '2019-04-14T17:30:49.181Z',
+ userId: '0000000001',
+ user: {
+ id: '0000000001',
+ name: '藍',
+ username: 'ai',
+ host: null,
+ avatarDecorations: [],
+ avatarUrl: '/client-assets/tutorial/ai.webp',
+ avatarBlurhash: 'eiKmhHIByXxZ~qWXs:-pR*NbR*s:xuRjoL-oR*WCt6WWf6WVf6oeWB',
+ isBot: false,
+ isCat: true,
+ emojis: {},
+ onlineStatus: null,
+ badgeRoles: [],
+ },
+ text: 'just setting up my msky',
+ cw: null,
+ visibility: 'public',
+ localOnly: false,
+ reactionAcceptance: null,
+ renoteCount: 0,
+ repliesCount: 1,
+ reactions: {},
+ reactionEmojis: {},
+ fileIds: [],
+ files: [],
+ replyId: null,
+ renoteId: null,
+});
+const onceReacted = ref<boolean>(false);
+
+function addReaction(emoji) {
+ onceReacted.value = true;
+ emit('reacted');
+ exampleNote.reactions[emoji] = 1;
+ exampleNote.myReaction = emoji;
+ doNotification(emoji);
+}
+
+function doNotification(emoji: string): void {
+ if (!$i || !emoji) return;
+
+ const notification: Misskey.entities.Notification = {
+ id: Math.random().toString(),
+ createdAt: new Date().toUTCString(),
+ isRead: false,
+ type: 'reaction',
+ reaction: emoji,
+ user: $i,
+ userId: $i.id,
+ note: exampleNote,
+ };
+
+ globalEvents.emit('clientNotification', notification);
+}
+
+function removeReaction(emoji) {
+ delete exampleNote.reactions[emoji];
+ exampleNote.myReaction = undefined;
+}
+</script>
+
+<style lang="scss" module>
+.exampleNoteRoot {
+ border-radius: var(--radius);
+ border: var(--panelBorder);
+ background: var(--panel);
+}
+
+.divider {
+ height: 1px;
+ background: var(--divider);
+}
+</style>