Просмотр исходного кода

Merge pull request #6008 from weseek/feat/96535-create-activity-when-a-page-is-viewed

feat: Create activity when a page is viewed
Shun Miyazawa 3 лет назад
Родитель
Сommit
7d911a6cf6

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

@@ -7,10 +7,11 @@ const MODEL_COMMENT = 'Comment';
 
 // Action
 const ACTION_UNSETTLED = 'UNSETTLED';
+const ACTION_REGISTRATION_SUCCESS = 'REGISTRATION_SUCCESS';
 const ACTION_LOGIN_SUCCESS = 'LOGIN_SUCCESS';
 const ACTION_LOGIN_FAILURE = 'LOGIN_FAILURE';
 const ACTION_LOGOUT = 'LOGOUT';
-const ACTION_REGISTRATION_SUCCESS = 'REGISTRATION_SUCCESS';
+const ACTION_PAGE_VIEW = 'PAGE_VIEW';
 const ACTION_PAGE_LIKE = 'PAGE_LIKE';
 const ACTION_PAGE_UNLIKE = 'PAGE_UNLIKE';
 const ACTION_PAGE_BOOKMARK = 'PAGE_BOOKMARK';
@@ -36,11 +37,12 @@ export const SUPPORTED_EVENT_MODEL_TYPE = {
 } as const;
 
 export const SUPPORTED_ACTION_TYPE = {
+  ACTION_UNSETTLED,
+  ACTION_REGISTRATION_SUCCESS,
   ACTION_LOGIN_SUCCESS,
   ACTION_LOGIN_FAILURE,
   ACTION_LOGOUT,
-  ACTION_REGISTRATION_SUCCESS,
-  ACTION_UNSETTLED,
+  ACTION_PAGE_VIEW,
   ACTION_PAGE_LIKE,
   ACTION_PAGE_UNLIKE,
   ACTION_PAGE_BOOKMARK,

+ 4 - 4
packages/app/src/server/routes/index.js

@@ -73,7 +73,7 @@ module.exports = function(crowi, app) {
   // API v3 for auth
   app.use('/_api/v3', apiV3AuthRouter);
 
-  app.get('/'                         , applicationInstalled, unavailableWhenMaintenanceMode, loginRequired, autoReconnectToSearch, injectUserUISettings, page.showTopPage);
+  app.get('/'                         , applicationInstalled, unavailableWhenMaintenanceMode, loginRequired, addActivity, autoReconnectToSearch, injectUserUISettings, page.showTopPage);
 
   app.get('/login/error/:reason'      , applicationInstalled, login.error);
   app.get('/login'                    , applicationInstalled, login.preLogin, login.login);
@@ -245,9 +245,9 @@ module.exports = function(crowi, app) {
 
   app.use('/ogp', express.Router().get('/:pageId([0-9a-z]{0,})', loginRequired, ogp.pageIdRequired, ogp.ogpValidator, ogp.renderOgp));
 
-  app.get('/:id([0-9a-z]{24})'       , loginRequired , injectUserUISettings, page.showPage);
+  app.get('/:id([0-9a-z]{24})'       , loginRequired , addActivity, injectUserUISettings, page.showPage);
 
-  app.get('/*/$'                   , loginRequired , injectUserUISettings, page.redirectorWithEndOfSlash);
-  app.get('/*'                     , loginRequired , autoReconnectToSearch, injectUserUISettings, page.redirector);
+  app.get('/*/$'                   , loginRequired , addActivity, injectUserUISettings, page.redirectorWithEndOfSlash);
+  app.get('/*'                     , loginRequired , addActivity, autoReconnectToSearch, injectUserUISettings, page.redirector);
 
 };

+ 14 - 0
packages/app/src/server/routes/page.js

@@ -408,6 +408,10 @@ module.exports = function(crowi, app) {
     await addRenderVarsForPageTree(renderVars, portalPath, req.user);
 
     await interceptorManager.process('beforeRenderPage', req, res, renderVars);
+
+    const parameters = { action: SUPPORTED_ACTION_TYPE.ACTION_PAGE_VIEW };
+    activityEvent.emit('update', res.locals.activity._id, parameters);
+
     return res.render(view, renderVars);
   }
 
@@ -470,6 +474,10 @@ module.exports = function(crowi, app) {
     await addRenderVarsForPageTree(renderVars, path, req.user);
 
     await interceptorManager.process('beforeRenderPage', req, res, renderVars);
+
+    const parameters = { action: SUPPORTED_ACTION_TYPE.ACTION_PAGE_VIEW };
+    activityEvent.emit('update', res.locals.activity._id, parameters);
+
     return res.render(view, renderVars);
   }
 
@@ -649,6 +657,9 @@ module.exports = function(crowi, app) {
   actions.redirector = async function(req, res, next) {
     const path = getPathFromRequest(req);
 
+    const parameters = { action: SUPPORTED_ACTION_TYPE.ACTION_PAGE_VIEW };
+    activityEvent.emit('update', res.locals.activity._id, parameters);
+
     return redirector(req, res, next, path);
   };
 
@@ -656,6 +667,9 @@ module.exports = function(crowi, app) {
     const _path = getPathFromRequest(req);
     const path = pathUtils.removeTrailingSlash(_path);
 
+    const parameters = { action: SUPPORTED_ACTION_TYPE.ACTION_PAGE_VIEW };
+    activityEvent.emit('update', res.locals.activity._id, parameters);
+
     return redirector(req, res, next, path);
   };