Răsfoiți Sursa

apply types

kaori 4 ani în urmă
părinte
comite
88dc7aa82d

+ 3 - 0
packages/app/src/interfaces/has-object-id.ts

@@ -0,0 +1,3 @@
+export type HasObjectId = {
+  _id: string,
+};

+ 1 - 1
packages/app/src/server/routes/apiv3/in-app-notification.ts

@@ -89,7 +89,7 @@ module.exports = (crowi) => {
     const id = req.body.id;
     const id = req.body.id;
 
 
     try {
     try {
-      const notification = await InAppNotification.open(user, id);
+      const notification = await inAppNotificationService.open(user, id);
       const result = { notification };
       const result = { notification };
       return res.apiv3(result);
       return res.apiv3(result);
     }
     }

+ 13 - 1
packages/app/src/server/service/in-app-notification.ts

@@ -2,8 +2,11 @@ import { Types } from 'mongoose';
 import { subDays } from 'date-fns';
 import { subDays } from 'date-fns';
 import Crowi from '../crowi';
 import Crowi from '../crowi';
 import {
 import {
-  InAppNotification, InAppNotificationDocument, STATUS_UNREAD, STATUS_UNOPENED,
+  InAppNotification, InAppNotificationDocument, STATUS_UNREAD, STATUS_UNOPENED, STATUS_OPENED,
 } from '~/server/models/in-app-notification';
 } from '~/server/models/in-app-notification';
+
+import { IUser } from '~/interfaces/user';
+import { HasObjectId } from '~/interfaces/has-object-id';
 import { ActivityDocument } from '~/server/models/activity';
 import { ActivityDocument } from '~/server/models/activity';
 
 
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
@@ -110,6 +113,15 @@ export default class InAppNotificationService {
     return;
     return;
   };
   };
 
 
+  open = async function(user: IUser & HasObjectId, id: Types.ObjectId): Promise<void> {
+    const query = { _id: id, user: user._id };
+    const parameters = { status: STATUS_OPENED };
+    const options = { new: true };
+
+    await InAppNotification.findOneAndUpdate(query, parameters, options);
+    return;
+  }
+
   getUnreadCountByUser = async function(user: Types.ObjectId): Promise<number| undefined> {
   getUnreadCountByUser = async function(user: Types.ObjectId): Promise<number| undefined> {
     const query = { user, status: STATUS_UNREAD };
     const query = { user, status: STATUS_UNREAD };