diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2021-10-09 12:44:19 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2021-10-09 12:44:19 +0900 |
| commit | ec05c073217a0c754032ac92de9d91fe03808dd0 (patch) | |
| tree | 76449b8661fc73f696dbad12cb9f4669b4f6e37e /src/client | |
| parent | tweak ui (diff) | |
| download | misskey-ec05c073217a0c754032ac92de9d91fe03808dd0.tar.gz misskey-ec05c073217a0c754032ac92de9d91fe03808dd0.tar.bz2 misskey-ec05c073217a0c754032ac92de9d91fe03808dd0.zip | |
feat: 未読の通知のみ表示する機能
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/components/notifications.vue | 11 | ||||
| -rw-r--r-- | src/client/pages/notifications.vue | 22 |
2 files changed, 27 insertions, 6 deletions
diff --git a/src/client/components/notifications.vue b/src/client/components/notifications.vue index e91f18a693..8be1e191b9 100644 --- a/src/client/components/notifications.vue +++ b/src/client/components/notifications.vue @@ -48,6 +48,11 @@ export default defineComponent({ required: false, default: null, }, + unreadOnly: { + type: Boolean, + required: false, + default: false, + }, }, data() { @@ -58,6 +63,7 @@ export default defineComponent({ limit: 10, params: () => ({ includeTypes: this.allIncludeTypes || undefined, + unreadOnly: this.unreadOnly, }) }, }; @@ -76,6 +82,11 @@ export default defineComponent({ }, deep: true }, + unreadOnly: { + handler() { + this.reload(); + }, + }, // TODO: vue/vuexのバグか仕様かは不明なものの、プロフィール更新するなどして $i が更新されると、 // mutingNotificationTypes に変化が無くてもこのハンドラーが呼び出され無駄なリロードが発生するのを直す '$i.mutingNotificationTypes': { diff --git a/src/client/pages/notifications.vue b/src/client/pages/notifications.vue index 6cbcc9b8e5..9728b87bf1 100644 --- a/src/client/pages/notifications.vue +++ b/src/client/pages/notifications.vue @@ -2,13 +2,13 @@ <div> <MkHeader :info="header"/> <div class="clupoqwt" v-size="{ min: [800] }"> - <XNotifications class="notifications" @before="before" @after="after" page/> + <XNotifications class="notifications" @before="before" @after="after" :unread-only="tab === 'unread'"/> </div> </div> </template> <script lang="ts"> -import { defineComponent } from 'vue'; +import { computed, defineComponent } from 'vue'; import Progress from '@client/scripts/loading'; import XNotifications from '@client/components/notifications.vue'; import * as os from '@client/os'; @@ -26,7 +26,8 @@ export default defineComponent({ icon: 'fas fa-bell', bg: 'var(--bg)', }, - header: { + tab: 'all', + header: computed(() => ({ title: this.$ts.notifications, icon: 'fas fa-bell', bg: 'var(--bg)', @@ -35,9 +36,18 @@ export default defineComponent({ icon: 'fas fa-check', handler: () => { os.apiWithDialog('notifications/mark-all-as-read'); - } - }] - }, + }, + }], + tabs: [{ + active: this.tab === 'all', + title: this.$ts.all, + onClick: () => { this.tab = 'all'; }, + }, { + active: this.tab === 'unread', + title: this.$ts.unread, + onClick: () => { this.tab = 'unread'; }, + },] + })), }; }, |