The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Rocket.Chat/server/startup/migrations/v002.js

42 lines
1009 B

import { RocketChatFile } from 'meteor/rocketchat:file';
Convert rocketchat-file-upload to main module structure (#13094) * Move rocketchat settings to specific package * WIP: Move models from rocketchat-lib to a specific package (server) * Move function from rocketchat:lib to rocketchat:utils to use it in rocketchat:models * Move client models from rocketchat:lib to rocketchat:models * Fix lint * Move rocketchat.info from lib to utils * Remove directly dependency between lib and migrations * Move statistics Model to rocketchat:models * Create rocketchat:metrics to be able to depacking rocketchat callbacks * Move callbacks to specific package * Remove unused dependency * Move rocketchat-notifications to a specific package * Move rocketchat-promises to a specific package * remove directly dependency from metrics and models * Move CachedCollection from lib to models * Move ui models/collections from ui to models * Move authorization client/ui models to rocketchat:models to be able to remove lib dependency * Creation of rocketchat:ui-utils to help decouple rocketchat:lib and rocketchat:authz * Move some common functions to rocketchat:utils * Change imports to dynamic imports to avoid directly dependency between some packages * Move authz models to rocketchat:models * Remove directly dependency between rocketchat:authz and rocketchat:lib * Move some functions from rocketchat:lib to rocketchat:utils * Add functions to settings package * Convert rocketchat:file-upload to main module structure * Import FileUpload where it is being used * Remove FileUpload and fileUploadHandler from globals eslintrc * Merge branch 'develop' into globals/move-rocketchat-callbacks * Fix missed export * Fix canBeDeleted and canBeCreated function, remove async
7 years ago
import { FileUpload } from 'meteor/rocketchat:file-upload';
RocketChat.Migrations.add({
version: 2,
up() {
return RocketChat.models.Users.find({
avatarOrigin: {
$exists: false,
},
username: {
$exists: true,
},
}).forEach((user) => {
const avatars = getAvatarSuggestionForUser(user);
const services = Object.keys(avatars);
if (services.length === 0) {
return;
}
const service = services[0];
console.log(user.username, '->', service);
const dataURI = avatars[service].blob;
const { image, contentType } = RocketChatFile.dataURIParse(dataURI);
const rs = RocketChatFile.bufferToStream(new Buffer(image, 'base64'));
const fileStore = FileUpload.getStore('Avatars');
fileStore.deleteByName(user.username);
const file = {
userId: user._id,
type: contentType,
};
fileStore.insert(file, rs, () => RocketChat.models.Users.setAvatarOrigin(user._id, service));
});
},
});