diff --git a/apps/meteor/server/lib/dataExport/processDataDownloads.ts b/apps/meteor/server/lib/dataExport/processDataDownloads.ts index 7fe734803e9..2f2b987901f 100644 --- a/apps/meteor/server/lib/dataExport/processDataDownloads.ts +++ b/apps/meteor/server/lib/dataExport/processDataDownloads.ts @@ -1,5 +1,4 @@ import { createWriteStream } from 'fs'; -import { promisify } from 'util'; import { access, mkdir, rm, writeFile } from 'fs/promises'; import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; @@ -72,26 +71,31 @@ const generateUserFile = async (exportOperation: IExportOperation, userData?: IU return; } - const stream = createWriteStream(fileName, { encoding: 'utf8' }); + return new Promise((resolve, reject) => { + const stream = createWriteStream(fileName, { encoding: 'utf8' }); - stream.write('\n'); - stream.write('\n'); - for (const [key, value] of Object.entries(dataToSave)) { - stream.write(`

${key}:`); - if (typeof value === 'string') { - stream.write(value); - } else if (Array.isArray(value)) { - stream.write('
'); + stream.on('finish', resolve); + stream.on('error', reject); - for (const item of value) { - stream.write(`${item}
`); + stream.write('\n'); + stream.write('\n'); + for (const [key, value] of Object.entries(dataToSave)) { + stream.write(`

${key}:`); + if (typeof value === 'string') { + stream.write(value); + } else if (Array.isArray(value)) { + stream.write('
'); + + for (const item of value) { + stream.write(`${item}
`); + } } - } - stream.write('

\n'); - } + stream.write('

\n'); + } - await promisify(stream.close)(); + stream.end(); + }); }; const generateUserAvatarFile = async (exportOperation: IExportOperation, userData?: IUser) => {