diff --git a/packages/rocketchat-api/server/v1/emoji-custom.js b/packages/rocketchat-api/server/v1/emoji-custom.js index 94f427511ba59..10ebcb64bb278 100644 --- a/packages/rocketchat-api/server/v1/emoji-custom.js +++ b/packages/rocketchat-api/server/v1/emoji-custom.js @@ -16,35 +16,39 @@ RocketChat.API.v1.addRoute('emoji-custom.create', { authRequired: true }, { Meteor.runAsUser(this.userId, () => { const fields = {}; const busboy = new Busboy({ headers: this.request.headers }); + const emojiData = []; + let emojiMimetype = ''; Meteor.wrapAsync((callback) => { busboy.on('file', Meteor.bindEnvironment((fieldname, file, filename, encoding, mimetype) => { if (fieldname !== 'emoji') { return callback(new Meteor.Error('invalid-field')); } - const emojiData = []; + file.on('data', Meteor.bindEnvironment((data) => emojiData.push(data))); file.on('end', Meteor.bindEnvironment(() => { const extension = mimetype.split('/')[1]; + emojiMimetype = mimetype; fields.extension = extension; - fields.newFile = true; - fields.aliases = fields.aliases || ''; - try { - Meteor.call('insertOrUpdateEmoji', fields); - Meteor.call('uploadEmojiCustom', Buffer.concat(emojiData), mimetype, fields); - callback(); - } catch (error) { - return callback(error); - } })); })); busboy.on('field', (fieldname, val) => { fields[fieldname] = val; }); + busboy.on('finish', Meteor.bindEnvironment(() => { + fields.newFile = true; + fields.aliases = fields.aliases || ''; + try { + Meteor.call('insertOrUpdateEmoji', fields); + Meteor.call('uploadEmojiCustom', Buffer.concat(emojiData), emojiMimetype, fields); + callback(); + } catch (error) { + return callback(error); + } + })); this.request.pipe(busboy); })(); - }); }, }); diff --git a/tests/end-to-end/ui/11-admin.js b/tests/end-to-end/ui/11-admin.js index 4fe4746b9f6ef..da7aede7ed9c2 100644 --- a/tests/end-to-end/ui/11-admin.js +++ b/tests/end-to-end/ui/11-admin.js @@ -874,6 +874,7 @@ describe('[Administration]', () => { }); it('it should show the enter key behavior field', () => { + browser.scroll(0, 500); admin.accountsSendOnEnter.click(); admin.accountsSendOnEnter.isVisible().should.be.true; });