/* globals FileUpload:true */
/* exported FileUpload */

import filesize from 'filesize';

let maxFileSize = 0;

FileUpload = {
	validateFileUpload(file) {
		if (!Match.test(file.rid, String)) {
			return false;
		}

		const user = Meteor.user();
		const room = RocketChat.models.Rooms.findOneById(file.rid);
		const directMessageAllow = RocketChat.settings.get('FileUpload_Enabled_Direct');
		const fileUploadAllowed = RocketChat.settings.get('FileUpload_Enabled');

		if (RocketChat.authz.canAccessRoom(room, user) !== true) {
			return false;
		}

		if (!fileUploadAllowed) {
			const reason = TAPi18n.__('FileUpload_Disabled', user.language);
			throw new Meteor.Error('error-file-upload-disabled', reason);
		}

		if (!directMessageAllow && room.t === 'd') {
			const reason = TAPi18n.__('File_not_allowed_direct_messages', user.language);
			throw new Meteor.Error('error-direct-message-file-upload-not-allowed', reason);
		}

		// -1 maxFileSize means there is no limit
		if (maxFileSize >= -1 && file.size > maxFileSize) {
			const reason = TAPi18n.__('File_exceeds_allowed_size_of_bytes', {
				size: filesize(maxFileSize)
			}, user.language);
			throw new Meteor.Error('error-file-too-large', reason);
		}

		if (maxFileSize > 0) {
			if (file.size > maxFileSize) {
				const reason = TAPi18n.__('File_exceeds_allowed_size_of_bytes', {
					size: filesize(maxFileSize)
				}, user.language);
				throw new Meteor.Error('error-file-too-large', reason);
			}
		}

		if (!RocketChat.fileUploadIsValidContentType(file.type)) {
			const reason = TAPi18n.__('File_type_is_not_accepted', user.language);
			throw new Meteor.Error('error-invalid-file-type', reason);
		}

		return true;
	}
};

RocketChat.settings.get('FileUpload_MaxFileSize', function(key, value) {
	try {
		maxFileSize = parseInt(value);
	} catch (e) {
		maxFileSize = 2097152; // the default value
	}
});

@@ -1838,37 +1838,86 @@
 e = 
-2097152; // the default v
+RocketChat.models.Settings.findOneById('FileUpload_MaxFileSize').packageV
 alue
+;
 %0A%09%7D%0A

Use the package value if failure to parse an int happens on fileupload maxsize change