瀏覽代碼

Support "in-app-notification/all-statuses-open"

Shun Miyazawa 3 年之前
父節點
當前提交
3f8f604220
共有 2 個文件被更改,包括 16 次插入1 次删除
  1. 3 0
      packages/app/src/interfaces/activity.ts
  2. 13 1
      packages/app/src/server/routes/apiv3/in-app-notification.ts

+ 3 - 0
packages/app/src/interfaces/activity.ts

@@ -37,6 +37,7 @@ const ACTION_PAGE_SUBSCRIBE = 'PAGE_SUBSCRIBE';
 const ACTION_PAGE_UNSUBSCRIBE = 'PAGE_UNSUBSCRIBE';
 const ACTION_PAGE_EXPORT = 'PAGE_EXPORT';
 const ACTION_TAG_UPDATE = 'TAG_UPDATE';
+const ACTION_IN_APP_NOTIFICATION_ALL_STATUSES_OPEN = 'IN_APP_NOTIFICATION_ALL_STATUSES_OPEN';
 const ACTION_COMMENT_CREATE = 'COMMENT_CREATE';
 const ACTION_COMMENT_UPDATE = 'COMMENT_UPDATE';
 const ACTION_COMMENT_REMOVE = 'COMMENT_REMOVE';
@@ -109,6 +110,7 @@ export const SupportedAction = {
   ACTION_PAGE_UNSUBSCRIBE,
   ACTION_PAGE_EXPORT,
   ACTION_TAG_UPDATE,
+  ACTION_IN_APP_NOTIFICATION_ALL_STATUSES_OPEN,
   ACTION_COMMENT_CREATE,
   ACTION_COMMENT_UPDATE,
   ACTION_COMMENT_REMOVE,
@@ -196,6 +198,7 @@ export const MediumActionGroup = {
   ACTION_PAGE_UNSUBSCRIBE,
   ACTION_PAGE_EXPORT,
   ACTION_TAG_UPDATE,
+  ACTION_IN_APP_NOTIFICATION_ALL_STATUSES_OPEN,
   ACTION_COMMENT_CREATE,
   ACTION_COMMENT_UPDATE,
   ACTION_COMMENT_REMOVE,

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

@@ -1,6 +1,10 @@
+import { SupportedAction } from '~/interfaces/activity';
+import { generateAddActivityMiddleware } from '~/server/middlewares/add-activity';
+
 import { IInAppNotification } from '../../../interfaces/in-app-notification';
 
 const express = require('express');
+
 const { serializeUserSecurely } = require('../../models/serializers/user-serializer');
 
 const router = express.Router();
@@ -10,9 +14,14 @@ module.exports = (crowi) => {
   const accessTokenParser = require('../../middlewares/access-token-parser')(crowi);
   const loginRequiredStrictly = require('../../middlewares/login-required')(crowi);
   const csrf = require('../../middlewares/csrf')(crowi);
+  const addActivity = generateAddActivityMiddleware(crowi);
+
   const inAppNotificationService = crowi.inAppNotificationService;
+
   const User = crowi.model('User');
 
+  const activityEvent = crowi.event('activity');
+
   router.get('/list', accessTokenParser, loginRequiredStrictly, async(req, res) => {
     const user = req.user;
 
@@ -101,11 +110,14 @@ module.exports = (crowi) => {
     }
   });
 
-  router.put('/all-statuses-open', accessTokenParser, loginRequiredStrictly, csrf, async(req, res) => {
+  router.put('/all-statuses-open', accessTokenParser, loginRequiredStrictly, csrf, addActivity, async(req, res) => {
     const user = req.user;
 
     try {
       await inAppNotificationService.updateAllNotificationsAsOpened(user);
+
+      activityEvent.emit('update', res.locals.activity._id, { action: SupportedAction.ACTION_IN_APP_NOTIFICATION_ALL_STATUSES_OPEN });
+
       return res.apiv3();
     }
     catch (err) {