summaryrefslogtreecommitdiff
path: root/packages/client/src/pages/settings
diff options
context:
space:
mode:
authorAndreas Nedbal <andreas.nedbal@in2code.de>2022-05-04 05:25:19 +0200
committerGitHub <noreply@github.com>2022-05-04 12:25:19 +0900
commit9230334a319c93d1604576778ed39c9de9d510ce (patch)
tree719e2da809600430c6f08f07196881290e4e11a0 /packages/client/src/pages/settings
parentRefactor account-info to use Composition API (#8568) (diff)
downloadmisskey-9230334a319c93d1604576778ed39c9de9d510ce.tar.gz
misskey-9230334a319c93d1604576778ed39c9de9d510ce.tar.bz2
misskey-9230334a319c93d1604576778ed39c9de9d510ce.zip
Refactor settings/notifications to use Composition API (#8587)
* refactor(client): refactor settings/notifications to use Composition API * fix(client): use async/await for API methods
Diffstat (limited to 'packages/client/src/pages/settings')
-rw-r--r--packages/client/src/pages/settings/notifications.vue86
1 files changed, 37 insertions, 49 deletions
diff --git a/packages/client/src/pages/settings/notifications.vue b/packages/client/src/pages/settings/notifications.vue
index 334216ff33..6fe2ac55a4 100644
--- a/packages/client/src/pages/settings/notifications.vue
+++ b/packages/client/src/pages/settings/notifications.vue
@@ -1,71 +1,59 @@
<template>
<div class="_formRoot">
- <FormLink class="_formBlock" @click="configure"><template #icon><i class="fas fa-cog"></i></template>{{ $ts.notificationSetting }}</FormLink>
+ <FormLink class="_formBlock" @click="configure"><template #icon><i class="fas fa-cog"></i></template>{{ i18n.ts.notificationSetting }}</FormLink>
<FormSection>
- <FormLink class="_formBlock" @click="readAllNotifications">{{ $ts.markAsReadAllNotifications }}</FormLink>
- <FormLink class="_formBlock" @click="readAllUnreadNotes">{{ $ts.markAsReadAllUnreadNotes }}</FormLink>
- <FormLink class="_formBlock" @click="readAllMessagingMessages">{{ $ts.markAsReadAllTalkMessages }}</FormLink>
+ <FormLink class="_formBlock" @click="readAllNotifications">{{ i18n.ts.markAsReadAllNotifications }}</FormLink>
+ <FormLink class="_formBlock" @click="readAllUnreadNotes">{{ i18n.ts.markAsReadAllUnreadNotes }}</FormLink>
+ <FormLink class="_formBlock" @click="readAllMessagingMessages">{{ i18n.ts.markAsReadAllTalkMessages }}</FormLink>
</FormSection>
</div>
</template>
<script lang="ts">
-import { defineAsyncComponent, defineComponent } from 'vue';
+import { defineAsyncComponent, defineExpose } from 'vue';
import FormButton from '@/components/ui/button.vue';
import FormLink from '@/components/form/link.vue';
import FormSection from '@/components/form/section.vue';
import { notificationTypes } from 'misskey-js';
import * as os from '@/os';
import * as symbols from '@/symbols';
+import { $i } from '@/account';
+import { i18n } from '@/i18n';
-export default defineComponent({
- components: {
- FormLink,
- FormButton,
- FormSection,
- },
+async function readAllUnreadNotes() {
+ await os.api('i/read-all-unread-notes');
+}
- emits: ['info'],
-
- data() {
- return {
- [symbols.PAGE_INFO]: {
- title: this.$ts.notifications,
- icon: 'fas fa-bell',
- bg: 'var(--bg)',
- },
- }
- },
-
- methods: {
- readAllUnreadNotes() {
- os.api('i/read-all-unread-notes');
- },
+async function readAllMessagingMessages() {
+ await os.api('i/read-all-messaging-messages');
+}
- readAllMessagingMessages() {
- os.api('i/read-all-messaging-messages');
- },
+async function readAllNotifications() {
+ await os.api('notifications/mark-all-as-read');
+}
- readAllNotifications() {
- os.api('notifications/mark-all-as-read');
- },
+function configure() {
+ const includingTypes = notificationTypes.filter(x => !$i!.mutingNotificationTypes.includes(x));
+ os.popup(defineAsyncComponent(() => import('@/components/notification-setting-window.vue')), {
+ includingTypes,
+ showGlobalToggle: false,
+ }, {
+ done: async (res) => {
+ const { includingTypes: value } = res;
+ await os.apiWithDialog('i/update', {
+ mutingNotificationTypes: notificationTypes.filter(x => !value.includes(x)),
+ }).then(i => {
+ $i!.mutingNotificationTypes = i.mutingNotificationTypes;
+ });
+ }
+ }, 'closed');
+}
- configure() {
- const includingTypes = notificationTypes.filter(x => !this.$i.mutingNotificationTypes.includes(x));
- os.popup(defineAsyncComponent(() => import('@/components/notification-setting-window.vue')), {
- includingTypes,
- showGlobalToggle: false,
- }, {
- done: async (res) => {
- const { includingTypes: value } = res;
- await os.apiWithDialog('i/update', {
- mutingNotificationTypes: notificationTypes.filter(x => !value.includes(x)),
- }).then(i => {
- this.$i.mutingNotificationTypes = i.mutingNotificationTypes;
- });
- }
- }, 'closed');
- },
+defineExpose({
+ [symbols.PAGE_INFO]: {
+ title: i18n.ts.notifications,
+ icon: 'fas fa-bell',
+ bg: 'var(--bg)',
}
});
</script>