summaryrefslogtreecommitdiff
path: root/src/client/app/common/views/deck
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/app/common/views/deck')
-rw-r--r--src/client/app/common/views/deck/deck.notifications-column.vue39
-rw-r--r--src/client/app/common/views/deck/deck.notifications.vue16
2 files changed, 53 insertions, 2 deletions
diff --git a/src/client/app/common/views/deck/deck.notifications-column.vue b/src/client/app/common/views/deck/deck.notifications-column.vue
index c81c8b7733..b4361b054a 100644
--- a/src/client/app/common/views/deck/deck.notifications-column.vue
+++ b/src/client/app/common/views/deck/deck.notifications-column.vue
@@ -1,8 +1,8 @@
<template>
-<x-column :name="name" :column="column" :is-stacked="isStacked">
+<x-column :name="name" :column="column" :is-stacked="isStacked" :menu="menu">
<template #header><fa :icon="['far', 'bell']"/>{{ name }}</template>
- <x-notifications/>
+ <x-notifications :type="column.notificationType === 'all' ? null : column.notificationType"/>
</x-column>
</template>
@@ -30,11 +30,46 @@ export default Vue.extend({
}
},
+ data() {
+ return {
+ menu: null,
+ }
+ },
+
computed: {
name(): string {
if (this.column.name) return this.column.name;
return this.$t('@deck.notifications');
}
},
+
+ created() {
+ if (this.column.notificationType == null) {
+ this.column.notificationType = 'all';
+ this.$store.commit('updateDeckColumn', this.column);
+ }
+
+ this.menu = [{
+ icon: 'cog',
+ text: this.$t('@.notification-type'),
+ action: () => {
+ this.$root.dialog({
+ title: this.$t('@.notification-type'),
+ type: null,
+ select: {
+ items: ['all', 'follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'pollVote', 'receiveFollowRequest'].map(x => ({
+ value: x, text: this.$t('@.notification-types.' + x)
+ }))
+ default: this.column.notificationType,
+ },
+ showCancelButton: true
+ }).then(({ canceled, result: type }) => {
+ if (canceled) return;
+ this.column.notificationType = type;
+ this.$store.commit('updateDeckColumn', this.column);
+ });
+ }
+ }];
+ },
});
</script>
diff --git a/src/client/app/common/views/deck/deck.notifications.vue b/src/client/app/common/views/deck/deck.notifications.vue
index e01d0023f6..aed2af64e9 100644
--- a/src/client/app/common/views/deck/deck.notifications.vue
+++ b/src/client/app/common/views/deck/deck.notifications.vue
@@ -47,12 +47,22 @@ export default Vue.extend({
}),
],
+ props: {
+ type: {
+ type: String,
+ required: false
+ }
+ },
+
data() {
return {
connection: null,
pagination: {
endpoint: 'i/notifications',
limit: 20,
+ params: () => ({
+ includeTypes: this.type ? [this.type] : undefined
+ })
}
};
},
@@ -69,6 +79,12 @@ export default Vue.extend({
}
},
+ watch: {
+ type() {
+ this.reload();
+ }
+ },
+
mounted() {
this.connection = this.$root.stream.useSharedConnection('main');
this.connection.on('notification', this.onNotification);