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

38 lines
921 B

/* globals getAvatarSuggestionForUser */
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 ws = RocketChatFileAvatarInstance.createWriteStream(`${ user.username }.jpg`, contentType);
ws.on('end', Meteor.bindEnvironment(function() {
return RocketChat.models.Users.setAvatarOrigin(user._id, service);
}));
return rs.pipe(ws);
});
}
});