summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2020-09-18 22:18:21 +0900
committerGitHub <noreply@github.com>2020-09-18 22:18:21 +0900
commitdf71dbb0242d763695ea8a33d0b2262c74b050d0 (patch)
tree804eddb878fbe86f181b76cb3ed814f00ef3433f /src
parentchore: better error text (diff)
downloadsharkey-df71dbb0242d763695ea8a33d0b2262c74b050d0.tar.gz
sharkey-df71dbb0242d763695ea8a33d0b2262c74b050d0.tar.bz2
sharkey-df71dbb0242d763695ea8a33d0b2262c74b050d0.zip
Resolve #6692 (#6703)
Diffstat (limited to 'src')
-rw-r--r--src/client/app.vue3
-rw-r--r--src/client/components/notifications.vue7
-rw-r--r--src/client/deck.vue3
-rw-r--r--src/client/pages/my-settings/index.vue8
-rw-r--r--src/models/entities/user-profile.ts4
-rw-r--r--src/models/repositories/user.ts2
-rw-r--r--src/server/api/endpoints/i/update.ts4
-rw-r--r--src/services/create-notification.ts2
8 files changed, 16 insertions, 17 deletions
diff --git a/src/client/app.vue b/src/client/app.vue
index c10ba9c9d9..3453baa280 100644
--- a/src/client/app.vue
+++ b/src/client/app.vue
@@ -328,8 +328,7 @@ export default Vue.extend({
},
async onNotification(notification) {
- const t = this.$store.state.i.includingNotificationTypes;
- if (!!t && !t.includes(notification.type)) {
+ if (this.$store.state.i.mutingNotificationTypes.includes(notification.type)) {
return;
}
if (document.visibilityState === 'visible') {
diff --git a/src/client/components/notifications.vue b/src/client/components/notifications.vue
index 07dee6354b..0e512e1967 100644
--- a/src/client/components/notifications.vue
+++ b/src/client/components/notifications.vue
@@ -58,7 +58,7 @@ export default Vue.extend({
computed: {
allIncludeTypes() {
- return this.includeTypes ?? this.$store.state.i.includingNotificationTypes;
+ return this.includeTypes ?? notificationTypes.filter(x => !this.$store.state.i.mutingNotificationTypes.includes(x));
}
},
@@ -66,7 +66,7 @@ export default Vue.extend({
includeTypes() {
this.reload();
},
- '$store.state.i.includingNotificationTypes'() {
+ '$store.state.i.mutingNotificationTypes'() {
if (this.includeTypes === null) {
this.reload();
}
@@ -84,8 +84,7 @@ export default Vue.extend({
methods: {
onNotification(notification) {
- //
- const isMuted = !!this.allIncludeTypes && !this.allIncludeTypes.includes(notification.type);
+ const isMuted = !this.allIncludeTypes.includes(notification.type);
if (isMuted || document.visibilityState === 'visible') {
this.$root.stream.send('readNotification', {
id: notification.id
diff --git a/src/client/deck.vue b/src/client/deck.vue
index dc662801f0..c383a1b15c 100644
--- a/src/client/deck.vue
+++ b/src/client/deck.vue
@@ -161,8 +161,7 @@ export default Vue.extend({
},
async onNotification(notification) {
- const t = this.$store.state.i.includingNotificationTypes;
- if (!!t && !t.includes(notification.type)) {
+ if (this.$store.state.i.mutingNotificationTypes.includes(notification.type)) {
return;
}
diff --git a/src/client/pages/my-settings/index.vue b/src/client/pages/my-settings/index.vue
index 7da9f24c75..ae4ad4dff5 100644
--- a/src/client/pages/my-settings/index.vue
+++ b/src/client/pages/my-settings/index.vue
@@ -58,6 +58,7 @@ import XIntegration from './integration.vue';
import XApi from './api.vue';
import MkButton from '../../components/ui/button.vue';
import MkSwitch from '../../components/ui/switch.vue';
+import { notificationTypes } from '../../../types';
export default Vue.extend({
metaInfo() {
@@ -114,14 +115,15 @@ export default Vue.extend({
},
async configure() {
+ const includingTypes = notificationTypes.filter(x => !this.$store.state.i.mutingNotificationTypes.includes(x));
this.$root.new(await import('../../components/notification-setting-window.vue').then(m => m.default), {
- includingTypes: this.$store.state.i.includingNotificationTypes,
+ includingTypes,
showGlobalToggle: false,
}).$on('ok', async ({ includingTypes: value }: any) => {
await this.$root.api('i/update', {
- includingNotificationTypes: value,
+ mutingNotificationTypes: notificationTypes.filter(x => !value.includes(x)),
}).then(i => {
- this.$store.state.i.includingNotificationTypes = i.includingNotificationTypes;
+ this.$store.state.i.mutingNotificationTypes = i.mutingNotificationTypes;
}).catch(err => {
this.$root.dialog({
type: 'error',
diff --git a/src/models/entities/user-profile.ts b/src/models/entities/user-profile.ts
index 0eeed1b40e..7195c20ffe 100644
--- a/src/models/entities/user-profile.ts
+++ b/src/models/entities/user-profile.ts
@@ -162,9 +162,9 @@ export class UserProfile {
@Column('enum', {
enum: notificationTypes,
array: true,
- nullable: true,
+ default: [],
})
- public includingNotificationTypes: typeof notificationTypes[number][] | null;
+ public mutingNotificationTypes: typeof notificationTypes[number][];
//#region Denormalized fields
@Index()
diff --git a/src/models/repositories/user.ts b/src/models/repositories/user.ts
index b1b084b740..7ea4d42bcb 100644
--- a/src/models/repositories/user.ts
+++ b/src/models/repositories/user.ts
@@ -248,7 +248,7 @@ export class UserRepository extends Repository<User> {
hasPendingReceivedFollowRequest: this.getHasPendingReceivedFollowRequest(user.id),
integrations: profile!.integrations,
mutedWords: profile!.mutedWords,
- includingNotificationTypes: profile?.includingNotificationTypes,
+ mutingNotificationTypes: profile?.mutingNotificationTypes,
} : {}),
...(opts.includeSecrets ? {
diff --git a/src/server/api/endpoints/i/update.ts b/src/server/api/endpoints/i/update.ts
index 327e303a66..2029f2b4b6 100644
--- a/src/server/api/endpoints/i/update.ts
+++ b/src/server/api/endpoints/i/update.ts
@@ -149,7 +149,7 @@ export const meta = {
validator: $.optional.arr($.arr($.str))
},
- includingNotificationTypes: {
+ mutingNotificationTypes: {
validator: $.optional.arr($.str.or(notificationTypes as unknown as string[]))
},
},
@@ -206,7 +206,7 @@ export default define(meta, async (ps, user, token) => {
profileUpdates.mutedWords = ps.mutedWords;
profileUpdates.enableWordMute = ps.mutedWords.length > 0;
}
- if (ps.includingNotificationTypes !== undefined) profileUpdates.includingNotificationTypes = ps.includingNotificationTypes as typeof notificationTypes[number][];
+ if (ps.mutingNotificationTypes !== undefined) profileUpdates.mutingNotificationTypes = ps.mutingNotificationTypes as typeof notificationTypes[number][];
if (typeof ps.isLocked === 'boolean') updates.isLocked = ps.isLocked;
if (typeof ps.isBot === 'boolean') updates.isBot = ps.isBot;
if (typeof ps.carefulBot === 'boolean') profileUpdates.carefulBot = ps.carefulBot;
diff --git a/src/services/create-notification.ts b/src/services/create-notification.ts
index 7471c349ee..5dddaa5727 100644
--- a/src/services/create-notification.ts
+++ b/src/services/create-notification.ts
@@ -16,7 +16,7 @@ export async function createNotification(
const profile = await UserProfiles.findOne({ userId: notifieeId });
- const isMuted = !(profile?.includingNotificationTypes == null || profile?.includingNotificationTypes.includes(type));
+ const isMuted = profile?.mutingNotificationTypes.includes(type);
// Create notification
const notification = await Notifications.save({