Fixes
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
const Images = require('../modules/images');
|
const Images = require('../modules/images');
|
||||||
|
const Logger = require('../modules/logger');
|
||||||
const Messages = require('../models/message');
|
const Messages = require('../models/message');
|
||||||
const Mongoose = require('mongoose');
|
const Mongoose = require('mongoose');
|
||||||
|
|
||||||
@@ -28,10 +29,11 @@ const ProfileSchema = new Mongoose.Schema({
|
|||||||
});
|
});
|
||||||
|
|
||||||
ProfileSchema.pre('findOneAndUpdate', function (next) {
|
ProfileSchema.pre('findOneAndUpdate', function (next) {
|
||||||
var cnt = 0;
|
var cnt = 0
|
||||||
|
var pic;
|
||||||
|
|
||||||
if (this.details && this.details.pic) {
|
if (this.details && this.details.pic) {
|
||||||
var pic = this.details.pic
|
pic = this.details.pic;
|
||||||
cnt = cnt + (typeof pic.detail === 'object' ? 1 : 0) + (typeof pic.thumb === 'object' ? 1 : 0);
|
cnt = cnt + (typeof pic.detail === 'object' ? 1 : 0) + (typeof pic.thumb === 'object' ? 1 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,9 +72,10 @@ ProfileSchema.pre('findOneAndUpdate', function (next) {
|
|||||||
|
|
||||||
ProfileSchema.pre('save', function (next) {
|
ProfileSchema.pre('save', function (next) {
|
||||||
var cnt = 0;
|
var cnt = 0;
|
||||||
|
var pic;
|
||||||
|
|
||||||
if (this.details && this.details.pic) {
|
if (this.details && this.details.pic) {
|
||||||
var pic = this.details.pic
|
pic = this.details.pic
|
||||||
cnt = cnt + (typeof pic.detail === 'object' ? 1 : 0) + (typeof pic.thumb === 'object' ? 1 : 0);
|
cnt = cnt + (typeof pic.detail === 'object' ? 1 : 0) + (typeof pic.thumb === 'object' ? 1 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,7 +169,7 @@ module.exports = {
|
|||||||
allMessageImages: (e, profileId) => {
|
allMessageImages: (e, profileId) => {
|
||||||
const promise = new Promise((resolve, reject) => {
|
const promise = new Promise((resolve, reject) => {
|
||||||
ProfileModel
|
ProfileModel
|
||||||
.find({ _id: prodileId, 'messages.image': { $exists: true } })
|
.find({ _id: profileId, 'messages.image': { $exists: true } })
|
||||||
.select('image')
|
.select('image')
|
||||||
.exec((err, result) => {
|
.exec((err, result) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -252,12 +255,12 @@ module.exports = {
|
|||||||
|
|
||||||
deleteMessage: (e, profileId, messageId) => {
|
deleteMessage: (e, profileId, messageId) => {
|
||||||
const promise = new Promise((resolve, reject) => {
|
const promise = new Promise((resolve, reject) => {
|
||||||
ProfileModel.findById(prodileId, (err, profile) => {
|
ProfileModel.findById(profileId, (err, profile) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
reject(err);
|
reject(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result) {
|
if (profile) {
|
||||||
let message = profile.messages.id(messageId);
|
let message = profile.messages.id(messageId);
|
||||||
|
|
||||||
if (message) {
|
if (message) {
|
||||||
@@ -368,7 +371,7 @@ module.exports = {
|
|||||||
update: (e, id, profile) => {
|
update: (e, id, profile) => {
|
||||||
const promise = new Promise((resolve, reject) => {
|
const promise = new Promise((resolve, reject) => {
|
||||||
ProfileModel.findOneAndUpdate(
|
ProfileModel.findOneAndUpdate(
|
||||||
{ _id: profileId },
|
{ _id: id },
|
||||||
{ $set: profile },
|
{ $set: profile },
|
||||||
{ new: true },
|
{ new: true },
|
||||||
(err, result) => {
|
(err, result) => {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
const Logger = require('./logger');
|
||||||
const ShortId = require('shortid');
|
const ShortId = require('shortid');
|
||||||
|
|
||||||
const ATTACHMENT_STORE = '../images';
|
const ATTACHMENT_STORE = '../images';
|
||||||
@@ -10,34 +11,40 @@ const ATTACHMENT_SUFFIX_THUMBNAIL = '_thumbnail';
|
|||||||
function generateFilename (filename, type = 'detail') {
|
function generateFilename (filename, type = 'detail') {
|
||||||
var re = /(?:\.([^.]+))?$/;
|
var re = /(?:\.([^.]+))?$/;
|
||||||
var ext = re.exec(filename)[1];
|
var ext = re.exec(filename)[1];
|
||||||
return shortid.generate() + (type === 'thumbnail' ? ATTACHMENT_SUFFIX_THUMBNAIL : ATTACHMENT_SUFFIX_DETAIL) + "." + ext;
|
return '' + ShortId.generate() + (type === 'thumbnail' ? ATTACHMENT_SUFFIX_THUMBNAIL : ATTACHMENT_SUFFIX_DETAIL) + "." + ext;
|
||||||
}
|
}
|
||||||
|
|
||||||
function processImage (data, context, type, callback) {
|
function processImage (data, context, type, callback) {
|
||||||
var folder = ATTACHMENT_STORE + (context === 'profile' ? ATTACHMENT_STORE_PROFILE : ATTACHMENT_STORE_MESSAGE);
|
var folder = ATTACHMENT_STORE + (context === 'profile' ? ATTACHMENT_STORE_PROFILE : ATTACHMENT_STORE_MESSAGE);
|
||||||
var filename = generateFilename(data.imageFilename, type);
|
var filename = generateFilename(data.imageFilename, type);
|
||||||
|
|
||||||
var data_url = data.image;
|
var dataUrl = data.image;
|
||||||
var matches = data_url.match(/^data:.+\/(.+);base64,(.*)$/);
|
var matches = dataUrl.match(/^data:.+\/(.+);base64,(.*)$/);
|
||||||
var base64_data = matches[2];
|
var base64Data = matches[2];
|
||||||
var buffer = new Buffer(base64_data, 'base64');
|
var buffer = new Buffer(base64Data, 'base64');
|
||||||
|
|
||||||
saveImage(folder + '/' + filename, buffer, callback);
|
saveImage(folder + '/' + filename, buffer, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveImage (filename, data, callback = function(){}) {
|
function saveImage (filename, data, callback = noop) {
|
||||||
fs.writeFile(filename, data, function (err, stat) {
|
fs.writeFile(filename, data, function (err, stat) {
|
||||||
if (err) {
|
if (err) {
|
||||||
|
Logger.error('[Images.saveImage] Image save failure.', { err: err, stat: stat, filename: filename });
|
||||||
callback(err, null);
|
callback(err, null);
|
||||||
} else {
|
} else {
|
||||||
|
Logger.debug('[Images.saveImage] Image save successful.', { stat: stat, filename: filename });
|
||||||
callback(null, filename.substring(2));
|
callback(null, filename.substring(2));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function noop (err, result) {
|
||||||
|
Logger.debug('No callback function supplied.', { err: err, result: result });
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|
||||||
save: (data, filename, callback = function(){}) {
|
save: (data, filename, callback = noop) => {
|
||||||
saveImage(filename, data, callback);
|
saveImage(filename, data, callback);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -79,14 +79,14 @@ function updateMessage (req, res, next) {
|
|||||||
var messageId = req.params.messageId;
|
var messageId = req.params.messageId;
|
||||||
var data = req.body;
|
var data = req.body;
|
||||||
|
|
||||||
if (!id || !data) {
|
if (!profileId || !data) {
|
||||||
res.status(500).json({ message: 'No profile id or data specified.', err: err });
|
res.status(500).json({ message: 'No profile id or data specified.', err: err });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ProfileEvents.once('updateMessage', (err, result) => {
|
ProfileEvents.once('updateMessage', (err, result) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
res.status(500).json({message: 'Could not update profile id: ' + id, err: err});
|
res.status(500).json({message: 'Could not update profile id: ' + profileId + ' [' + err + ']', err: err});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result) {
|
if (result) {
|
||||||
|
|||||||
Reference in New Issue
Block a user