なんかもうめっちゃ変えた
This commit is contained in:
		| @@ -1,5 +1,6 @@ | ||||
| import { createNotification } from '@/services/create-notification.js'; | ||||
| import define from '../../define.js'; | ||||
| import { Inject, Injectable } from '@nestjs/common'; | ||||
| import { Endpoint } from '@/server/api/endpoint-base.js'; | ||||
| import { CreateNotificationService } from '@/core/CreateNotificationService.js'; | ||||
|  | ||||
| export const meta = { | ||||
| 	tags: ['notifications'], | ||||
| @@ -23,11 +24,18 @@ export const paramDef = { | ||||
| } as const; | ||||
|  | ||||
| // eslint-disable-next-line import/no-default-export | ||||
| export default define(meta, paramDef, async (ps, user, token) => { | ||||
| 	createNotification(user.id, 'app', { | ||||
| 		appAccessTokenId: token ? token.id : null, | ||||
| 		customBody: ps.body, | ||||
| 		customHeader: ps.header, | ||||
| 		customIcon: ps.icon, | ||||
| 	}); | ||||
| }); | ||||
| @Injectable() | ||||
| export default class extends Endpoint<typeof meta, typeof paramDef> { | ||||
| 	constructor( | ||||
| 		private createNotificationService: CreateNotificationService, | ||||
| 	) { | ||||
| 		super(meta, paramDef, async (ps, user, token) => { | ||||
| 			this.createNotificationService.createNotification(user.id, 'app', { | ||||
| 				appAccessTokenId: token ? token.id : null, | ||||
| 				customBody: ps.body, | ||||
| 				customHeader: ps.header, | ||||
| 				customIcon: ps.icon, | ||||
| 			}); | ||||
| 		}); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -1,7 +1,9 @@ | ||||
| import { publishMainStream } from '@/services/stream.js'; | ||||
| import { pushNotification } from '@/services/push-notification.js'; | ||||
| import { Notifications } from '@/models/index.js'; | ||||
| import define from '../../define.js'; | ||||
| import { Inject, Injectable } from '@nestjs/common'; | ||||
| import { NotificationsRepository } from '@/models/index.js'; | ||||
| import { Endpoint } from '@/server/api/endpoint-base.js'; | ||||
| import { GlobalEventService } from '@/core/GlobalEventService.js'; | ||||
| import { PushNotificationService } from '@/core/PushNotificationService.js'; | ||||
| import { DI } from '@/di-symbols.js'; | ||||
|  | ||||
| export const meta = { | ||||
| 	tags: ['notifications', 'account'], | ||||
| @@ -18,16 +20,27 @@ export const paramDef = { | ||||
| } as const; | ||||
|  | ||||
| // eslint-disable-next-line import/no-default-export | ||||
| export default define(meta, paramDef, async (ps, user) => { | ||||
| 	// Update documents | ||||
| 	await Notifications.update({ | ||||
| 		notifieeId: user.id, | ||||
| 		isRead: false, | ||||
| 	}, { | ||||
| 		isRead: true, | ||||
| 	}); | ||||
| @Injectable() | ||||
| export default class extends Endpoint<typeof meta, typeof paramDef> { | ||||
| 	constructor( | ||||
| 		@Inject(DI.notificationsRepository) | ||||
| 		private notificationsRepository: NotificationsRepository, | ||||
|  | ||||
| 	// 全ての通知を読みましたよというイベントを発行 | ||||
| 	publishMainStream(user.id, 'readAllNotifications'); | ||||
| 	pushNotification(user.id, 'readAllNotifications', undefined); | ||||
| }); | ||||
| 		private globalEventService: GlobalEventService, | ||||
| 		private pushNotificationService: PushNotificationService, | ||||
| 	) { | ||||
| 		super(meta, paramDef, async (ps, me) => { | ||||
| 			// Update documents | ||||
| 			await this.notificationsRepository.update({ | ||||
| 				notifieeId: me.id, | ||||
| 				isRead: false, | ||||
| 			}, { | ||||
| 				isRead: true, | ||||
| 			}); | ||||
|  | ||||
| 			// 全ての通知を読みましたよというイベントを発行 | ||||
| 			this.globalEventService.publishMainStream(me.id, 'readAllNotifications'); | ||||
| 			this.pushNotificationService.pushNotification(me.id, 'readAllNotifications', undefined); | ||||
| 		}); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -1,5 +1,6 @@ | ||||
| import define from '../../define.js'; | ||||
| import { readNotification } from '../../common/read-notification.js'; | ||||
| import { Inject, Injectable } from '@nestjs/common'; | ||||
| import { Endpoint } from '@/server/api/endpoint-base.js'; | ||||
| import { NotificationService } from '@/core/NotificationService.js'; | ||||
|  | ||||
| export const meta = { | ||||
| 	tags: ['notifications', 'account'], | ||||
| @@ -43,7 +44,14 @@ export const paramDef = { | ||||
| } as const; | ||||
|  | ||||
| // eslint-disable-next-line import/no-default-export | ||||
| export default define(meta, paramDef, async (ps, user) => { | ||||
| 	if ('notificationId' in ps) return readNotification(user.id, [ps.notificationId]); | ||||
| 	return readNotification(user.id, ps.notificationIds); | ||||
| }); | ||||
| @Injectable() | ||||
| export default class extends Endpoint<typeof meta, typeof paramDef> { | ||||
| 	constructor( | ||||
| 		private notificationService: NotificationService, | ||||
| 	) { | ||||
| 		super(meta, paramDef, async (ps, me) => { | ||||
| 			if ('notificationId' in ps) return this.notificationService.readNotification(me.id, [ps.notificationId]); | ||||
| 			return this.notificationService.readNotification(me.id, ps.notificationIds); | ||||
| 		}); | ||||
| 	} | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 syuilo
					syuilo