From ce4a20e3d8a9c4c7630042aea5dc23bfa5270cb1 Mon Sep 17 00:00:00 2001 From: Kalista Payne Date: Tue, 16 Dec 2025 14:56:50 -0600 Subject: [PATCH] WIP(delete): remove business logic from controller --- website/server/controllers/api-v3/user.js | 27 ++++++----------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/website/server/controllers/api-v3/user.js b/website/server/controllers/api-v3/user.js index ddc1f81ed0..ec1b370e7a 100644 --- a/website/server/controllers/api-v3/user.js +++ b/website/server/controllers/api-v3/user.js @@ -23,6 +23,7 @@ import { getUserInfo, sendTxn, } from '../../libs/email'; +import sendJob from '../../libs/worker'; import * as inboxLib from '../../libs/inbox'; import * as userLib from '../../libs/user'; import { model as UserHistory } from '../../models/userHistory'; @@ -299,21 +300,6 @@ api.deleteUser = { throw new NotAuthorized(res.t('cannotDeleteActiveAccount')); } - const types = ['party', 'guilds']; - const groupFields = basicGroupFields.concat(' leader memberCount purchased'); - - const groupsUserIsMemberOf = await Group.getGroups({ user, types, groupFields }); - - const groupLeavePromises = groupsUserIsMemberOf.map(group => group.leave(user, 'remove-all')); - - await Promise.all(groupLeavePromises); - - await Tasks.Task.deleteMany({ - userId: user._id, - }).exec(); - - await user.deleteOne(); - if (feedback) { sendTxn({ email: TECH_ASSISTANCE_EMAIL }, 'admin-feedback', [ { name: 'PROFILE_NAME', content: user.profile.name }, @@ -325,11 +311,12 @@ api.deleteUser = { ]); } - res.analytics.track('account delete', { - user: pick(user, ['preferences', 'registeredThrough']), - uuid: user._id, - hitType: 'event', - category: 'behavior', + sendJob('delete-user', { + data: { + userId: user._id, + deleteAccount: true, + deleteAmplitude: true, + }, }); res.respond(200, {});