Jelajahi Sumber

Page, hackmd notification worked

Taichi Masuyama 4 tahun lalu
induk
melakukan
ed1d105bb8

+ 2 - 3
packages/app/src/server/routes/hackmd.js

@@ -341,12 +341,11 @@ module.exports = function(crowi, app) {
    * @param {object} res
    * @param {object} res
    */
    */
   const saveOnHackmd = async function(req, res) {
   const saveOnHackmd = async function(req, res) {
-    // TODO: check if i can get user from this req. im sure i can though TAICHI
-    const page = req.page;
+    const { page, user } = req;
 
 
     try {
     try {
       await Page.updateHasDraftOnHackmd(page, true);
       await Page.updateHasDraftOnHackmd(page, true);
-      pageEvent.emit('saveOnHackmd', page);
+      pageEvent.emit('saveOnHackmd', page, user);
       return res.json(ApiResponse.success());
       return res.json(ApiResponse.success());
     }
     }
     catch (err) {
     catch (err) {

+ 2 - 5
packages/app/src/server/service/socket-io.js

@@ -130,16 +130,13 @@ class SocketIoService {
 
 
   setupDefaultSocketJoinRoomsEventHandler() {
   setupDefaultSocketJoinRoomsEventHandler() {
     this.io.on('connection', (socket) => {
     this.io.on('connection', (socket) => {
-      // TODO: check if i can get page information here and use or not TAICHI
-      // TODO: join page rooms here if possible TAICHI
       const user = socket.request.user;
       const user = socket.request.user;
       if (user == null) {
       if (user == null) {
         logger.debug('Socket io: An anonymous user has connected');
         logger.debug('Socket io: An anonymous user has connected');
         return;
         return;
       }
       }
-      // make a room for each user. it leaves automatically
-      // TODO: avoid hard coding by using a utility function TAICHI
-      socket.join(`user:${user._id}`);
+      // make a room for each user. the user will leave automatically
+      socket.join(getRoomNameWithId(RoomPrefix.USER, user._id));
 
 
       socket.on('join:page', ({ pageId }) => {
       socket.on('join:page', ({ pageId }) => {
         socket.join(getRoomNameWithId(RoomPrefix.PAGE, pageId));
         socket.join(getRoomNameWithId(RoomPrefix.PAGE, pageId));

+ 2 - 2
packages/app/src/server/service/system-events/sync-page-status.ts

@@ -125,13 +125,13 @@ class SyncPageStatusService implements S2sMessageHandlable {
 
 
       this.publishToOtherServers('page:delete', { s2cMessagePageUpdated });
       this.publishToOtherServers('page:delete', { s2cMessagePageUpdated });
     });
     });
-    // TODO: get user TAICHI
-    this.emitter.on('saveOnHackmd', (page) => {
+    this.emitter.on('saveOnHackmd', (page, user) => {
       const s2cMessagePageUpdated = new S2cMessagePageUpdated(page);
       const s2cMessagePageUpdated = new S2cMessagePageUpdated(page);
 
 
       // emit to the room for each page
       // emit to the room for each page
       socketIoService.getDefaultSocket()
       socketIoService.getDefaultSocket()
         .in(getRoomNameWithId(RoomPrefix.PAGE, page._id))
         .in(getRoomNameWithId(RoomPrefix.PAGE, page._id))
+        .except(getRoomNameWithId(RoomPrefix.USER, user._id))
         .emit('page:editingWithHackmd', { s2cMessagePageUpdated });
         .emit('page:editingWithHackmd', { s2cMessagePageUpdated });
 
 
       this.publishToOtherServers('page:editingWithHackmd', { s2cMessagePageUpdated });
       this.publishToOtherServers('page:editingWithHackmd', { s2cMessagePageUpdated });