RocketChat.Migrations.add({
	version: 42,
	up() {
		const files = RocketChat.__migration_assets_files = new Mongo.Collection('assets.files');
		const chunks = RocketChat.__migration_assets_chunks = new Mongo.Collection('assets.chunks');
		const list = {
			'favicon.ico': 'favicon_ico',
			'favicon.svg': 'favicon',
			'favicon_64.png': 'favicon_64',
			'favicon_96.png': 'favicon_96',
			'favicon_128.png': 'favicon_128',
			'favicon_192.png': 'favicon_192',
			'favicon_256.png': 'favicon_256',
		};

		for (const from of Object.keys(list)) {
			const to = list[from];

			const query = {
				_id: to,
			};

			if (!files.findOne(query)) {
				const oldFile = files.findOne({
					_id: from,
				});

				if (oldFile) {
					const extension = RocketChat.Assets.mime.extension(oldFile.contentType);
					RocketChat.settings.removeById(`Assets_${ from }`);
					RocketChat.settings.updateById(`Assets_${ to }`, {
						url: `/assets/${ to }.${ extension }`,
						defaultUrl: RocketChat.Assets.assets[to].defaultUrl,
					});

					oldFile._id = to;
					oldFile.filename = to;
					files.insert(oldFile);
					files.remove({
						_id: from,
					});

					chunks.update({
						files_id: from,
					}, {
						$set: {
							files_id: to,
						},
					}, {
						multi: true,
					});
				}
			}
		}
	},
});
