diff --git a/src/services/item/controller.ts b/src/services/item/controller.ts index 23e85ef7fa..4056cb74ca 100644 --- a/src/services/item/controller.ts +++ b/src/services/item/controller.ts @@ -198,23 +198,27 @@ const plugin: FastifyPluginAsync = async (fastify) => { repositories, resultOfToList(items), ); - if (member) { - websockets.publish( - memberItemsTopic, - member.id, - ItemOpFeedbackEvent('update', ids, items), - ); - } - }).catch((e: Error) => { - log.error(e); - if (member) { - websockets.publish( - memberItemsTopic, - member.id, - ItemOpFeedbackEvent('update', ids, { error: e }), - ); - } - }); + return items; + }) + .then((items) => { + if (member) { + websockets.publish( + memberItemsTopic, + member.id, + ItemOpFeedbackEvent('update', ids, items), + ); + } + }) + .catch((e: Error) => { + log.error(e); + if (member) { + websockets.publish( + memberItemsTopic, + member.id, + ItemOpFeedbackEvent('update', ids, { error: e }), + ); + } + }); reply.status(StatusCodes.ACCEPTED); return ids; }, @@ -236,26 +240,30 @@ const plugin: FastifyPluginAsync = async (fastify) => { const repositories = buildRepositories(manager); const items = await itemService.deleteMany(member, repositories, ids); await actionItemService.postManyDeleteAction(request, reply, repositories, items); - if (member) { - websockets.publish( - memberItemsTopic, - member.id, - ItemOpFeedbackEvent('delete', ids, { - data: Object.fromEntries(items.map((i) => [i.id, i])), - errors: [], - }), - ); - } - }).catch((e) => { - log.error(e); - if (member) { - websockets.publish( - memberItemsTopic, - member.id, - ItemOpFeedbackEvent('delete', ids, { error: e }), - ); - } - }); + return items; + }) + .then((items) => { + if (member) { + websockets.publish( + memberItemsTopic, + member.id, + ItemOpFeedbackEvent('delete', ids, { + data: Object.fromEntries(items.map((i) => [i.id, i])), + errors: [], + }), + ); + } + }) + .catch((e) => { + log.error(e); + if (member) { + websockets.publish( + memberItemsTopic, + member.id, + ItemOpFeedbackEvent('delete', ids, { error: e }), + ); + } + }); reply.status(StatusCodes.ACCEPTED); return ids; }, @@ -275,26 +283,30 @@ const plugin: FastifyPluginAsync = async (fastify) => { const repositories = buildRepositories(manager); const items = await itemService.moveMany(member, repositories, ids, parentId); await actionItemService.postManyMoveAction(request, reply, repositories, items); - if (member) { - websockets.publish( - memberItemsTopic, - member.id, - ItemOpFeedbackEvent('move', ids, { - data: Object.fromEntries(items.map((i) => [i.id, i])), - errors: [], - }), - ); - } - }).catch((e) => { - log.error(e); - if (member) { - websockets.publish( - memberItemsTopic, - member.id, - ItemOpFeedbackEvent('move', ids, { error: e }), - ); - } - }); + return items; + }) + .then((items) => { + if (member) { + websockets.publish( + memberItemsTopic, + member.id, + ItemOpFeedbackEvent('move', ids, { + data: Object.fromEntries(items.map((i) => [i.id, i])), + errors: [], + }), + ); + } + }) + .catch((e) => { + log.error(e); + if (member) { + websockets.publish( + memberItemsTopic, + member.id, + ItemOpFeedbackEvent('move', ids, { error: e }), + ); + } + }); reply.status(StatusCodes.ACCEPTED); return ids; }, @@ -319,26 +331,30 @@ const plugin: FastifyPluginAsync = async (fastify) => { parentId, }); await actionItemService.postManyCopyAction(request, reply, repositories, items); - if (member) { - websockets.publish( - memberItemsTopic, - member.id, - ItemOpFeedbackEvent('copy', ids, { - data: Object.fromEntries(items.map((i) => [i.id, i])), - errors: [], - }), - ); - } - }).catch((e) => { - log.error(e); - if (member) { - websockets.publish( - memberItemsTopic, - member.id, - ItemOpFeedbackEvent('copy', ids, { error: e }), - ); - } - }); + return items; + }) + .then((items) => { + if (member) { + websockets.publish( + memberItemsTopic, + member.id, + ItemOpFeedbackEvent('copy', ids, { + data: Object.fromEntries(items.map((i) => [i.id, i])), + errors: [], + }), + ); + } + }) + .catch((e) => { + log.error(e); + if (member) { + websockets.publish( + memberItemsTopic, + member.id, + ItemOpFeedbackEvent('copy', ids, { error: e }), + ); + } + }); reply.status(StatusCodes.ACCEPTED); return ids; }, diff --git a/src/services/item/plugins/action/index.ts b/src/services/item/plugins/action/index.ts index 7c11ce3c68..f4e1283c3f 100644 --- a/src/services/item/plugins/action/index.ts +++ b/src/services/item/plugins/action/index.ts @@ -161,24 +161,27 @@ const plugin: FastifyPluginAsync = async (fastify) => { } = request; db.transaction(async (manager) => { const repositories = buildRepositories(manager); - const item = await requestExportService.request(member, repositories, itemId); - if (member && item) { - websockets.publish( - memberItemsTopic, - member.id, - ItemOpFeedbackEvent('export', [itemId], { data: { [item.id]: item }, errors: [] }), - ); - } - }).catch((e: Error) => { - log.error(e); - if (member) { - websockets.publish( - memberItemsTopic, - member.id, - ItemOpFeedbackEvent('export', [itemId], { error: e }), - ); - } - }); + return await requestExportService.request(member, repositories, itemId); + }) + .then((item) => { + if (member && item) { + websockets.publish( + memberItemsTopic, + member.id, + ItemOpFeedbackEvent('export', [itemId], { data: { [item.id]: item }, errors: [] }), + ); + } + }) + .catch((e: Error) => { + log.error(e); + if (member) { + websockets.publish( + memberItemsTopic, + member.id, + ItemOpFeedbackEvent('export', [itemId], { error: e }), + ); + } + }); // reply no content and let the server create the archive and send the mail reply.status(StatusCodes.NO_CONTENT); diff --git a/src/services/item/plugins/recycled/index.ts b/src/services/item/plugins/recycled/index.ts index 7a1aca6a33..f3ea9a8095 100644 --- a/src/services/item/plugins/recycled/index.ts +++ b/src/services/item/plugins/recycled/index.ts @@ -73,25 +73,27 @@ const plugin: FastifyPluginAsync = async (fastify, opti log, } = request; db.transaction(async (manager) => { - const items = await recycleBinService.recycleMany(member, buildRepositories(manager), ids); - if (member) { - websockets.publish( - memberItemsTopic, - member.id, - ItemOpFeedbackEvent('recycle', ids, items), - ); - } - return items; - }).catch((e: Error) => { - log.error(e); - if (member) { - websockets.publish( - memberItemsTopic, - member.id, - ItemOpFeedbackEvent('recycle', ids, { error: e }), - ); - } - }); + return await recycleBinService.recycleMany(member, buildRepositories(manager), ids); + }) + .then((items) => { + if (member) { + websockets.publish( + memberItemsTopic, + member.id, + ItemOpFeedbackEvent('recycle', ids, items), + ); + } + }) + .catch((e: Error) => { + log.error(e); + if (member) { + websockets.publish( + memberItemsTopic, + member.id, + ItemOpFeedbackEvent('recycle', ids, { error: e }), + ); + } + }); reply.status(StatusCodes.ACCEPTED); return ids; @@ -124,24 +126,27 @@ const plugin: FastifyPluginAsync = async (fastify, opti log.info(`Restoring items ${ids}`); db.transaction(async (manager) => { - const items = await recycleBinService.restoreMany(member, buildRepositories(manager), ids); - if (member) { - websockets.publish( - memberItemsTopic, - member.id, - ItemOpFeedbackEvent('restore', ids, items), - ); - } - }).catch((e: Error) => { - log.error(e); - if (member) { - websockets.publish( - memberItemsTopic, - member.id, - ItemOpFeedbackEvent('restore', ids, { error: e }), - ); - } - }); + return await recycleBinService.restoreMany(member, buildRepositories(manager), ids); + }) + .then((items) => { + if (member) { + websockets.publish( + memberItemsTopic, + member.id, + ItemOpFeedbackEvent('restore', ids, items), + ); + } + }) + .catch((e: Error) => { + log.error(e); + if (member) { + websockets.publish( + memberItemsTopic, + member.id, + ItemOpFeedbackEvent('restore', ids, { error: e }), + ); + } + }); reply.status(StatusCodes.ACCEPTED); return ids; }, diff --git a/src/services/item/plugins/validation/index.ts b/src/services/item/plugins/validation/index.ts index d117a72bf2..ab1bb91ee4 100644 --- a/src/services/item/plugins/validation/index.ts +++ b/src/services/item/plugins/validation/index.ts @@ -82,26 +82,28 @@ const plugin: FastifyPluginAsync = async (fastify throw new UnauthorizedMember(); } const repositories = buildRepositories(manager); - const item = await validationService.post(member, repositories, itemId); - - // the process could take long time, so let the process run in the background and return the itemId instead - if (member) { - websockets.publish( - memberItemsTopic, - member.id, - ItemOpFeedbackEvent('validate', [itemId], { data: { [item.id]: item }, errors: [] }), - ); - } - }).catch((e: Error) => { - log.error(e); - if (member) { - websockets.publish( - memberItemsTopic, - member.id, - ItemOpFeedbackEvent('validate', [itemId], { error: e }), - ); - } - }); + return await validationService.post(member, repositories, itemId); + }) + .then((item) => { + // the process could take long time, so let the process run in the background and return the itemId instead + if (member) { + websockets.publish( + memberItemsTopic, + member.id, + ItemOpFeedbackEvent('validate', [itemId], { data: { [item.id]: item }, errors: [] }), + ); + } + }) + .catch((e: Error) => { + log.error(e); + if (member) { + websockets.publish( + memberItemsTopic, + member.id, + ItemOpFeedbackEvent('validate', [itemId], { error: e }), + ); + } + }); reply.status(StatusCodes.ACCEPTED); return itemId; },