From e6eff9940d0c493687ef642000d89fdc4770830c Mon Sep 17 00:00:00 2001 From: KernelDeimos Date: Fri, 5 Sep 2025 12:52:45 -0400 Subject: [PATCH] dev(backend): emit rename through EventService While previously the /rename endpoint sent only a websocket message to the client, move didn't fire a rename event if the name of the file had changed. This commit adds a more generalized rename event that can be reliably used to update a UI whenever the name of a file changes. --- .../src/modules/puterfs/lib/PuterFSProvider.js | 9 +++++++-- src/backend/src/routers/filesystem_api/rename.js | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/backend/src/modules/puterfs/lib/PuterFSProvider.js b/src/backend/src/modules/puterfs/lib/PuterFSProvider.js index c5d381438..16c376c81 100644 --- a/src/backend/src/modules/puterfs/lib/PuterFSProvider.js +++ b/src/backend/src/modules/puterfs/lib/PuterFSProvider.js @@ -246,11 +246,16 @@ class PuterFSProvider extends putility.AdvancedBase { const svc_event = services.get('event'); - await svc_event.emit('fs.move.file', { + const promises = []; + promises.push(svc_event.emit('fs.move.file', { context, moved: node, old_path, - }); + })); + promises.push(svc_event.emit('fs.rename', { + uid: await node.get('uid'), + new_name, + })); return node; } diff --git a/src/backend/src/routers/filesystem_api/rename.js b/src/backend/src/routers/filesystem_api/rename.js index 6b7cf5fa7..690b1e31d 100644 --- a/src/backend/src/routers/filesystem_api/rename.js +++ b/src/backend/src/routers/filesystem_api/rename.js @@ -176,6 +176,21 @@ module.exports = eggspress('/rename', { // send realtime success msg to client const svc_socketio = req.services.get('socketio'); svc_socketio.send({ room: req.user.id }, 'item.renamed', return_obj); + + (async () => { try { + const svc_event = req.services.get('event'); + await svc_event.emit('fs.rename', { + uid: fsentry.uuid, + new_name: req.body.new_name, + }) + } catch (e) { + const log = req.services.get('log-service').create('rename-endpoint'); + const errors = req.services.get('error-service').create(log); + errors.report('emit.rename', { + alarm: true, + source: e, + }); + }})(); return res.send(return_obj); });