mirror of
https://github.com/overleaf/overleaf.git
synced 2024-12-25 09:42:34 +00:00
decaffeinate: Convert ContactManager.coffee and 3 other files to JS
This commit is contained in:
parent
683b9a7cb3
commit
af36ed629b
4 changed files with 135 additions and 93 deletions
|
@ -1,38 +1,54 @@
|
|||
{db, ObjectId} = require "./mongojs"
|
||||
logger = require('logger-sharelatex')
|
||||
metrics = require('metrics-sharelatex')
|
||||
/*
|
||||
* decaffeinate suggestions:
|
||||
* DS102: Remove unnecessary code created because of implicit returns
|
||||
* DS207: Consider shorter variations of null checks
|
||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
||||
*/
|
||||
let ContactManager;
|
||||
const {db, ObjectId} = require("./mongojs");
|
||||
const logger = require('logger-sharelatex');
|
||||
const metrics = require('metrics-sharelatex');
|
||||
|
||||
module.exports = ContactManager =
|
||||
touchContact: (user_id, contact_id, callback = (error) ->) ->
|
||||
try
|
||||
user_id = ObjectId(user_id.toString())
|
||||
catch error
|
||||
return callback error
|
||||
module.exports = (ContactManager = {
|
||||
touchContact(user_id, contact_id, callback) {
|
||||
if (callback == null) { callback = function(error) {}; }
|
||||
try {
|
||||
user_id = ObjectId(user_id.toString());
|
||||
} catch (error1) {
|
||||
const error = error1;
|
||||
return callback(error);
|
||||
}
|
||||
|
||||
update = { $set: {}, $inc: {} }
|
||||
update.$inc["contacts.#{contact_id}.n"] = 1
|
||||
update.$set["contacts.#{contact_id}.ts"] = new Date()
|
||||
const update = { $set: {}, $inc: {} };
|
||||
update.$inc[`contacts.${contact_id}.n`] = 1;
|
||||
update.$set[`contacts.${contact_id}.ts`] = new Date();
|
||||
|
||||
db.contacts.update({
|
||||
user_id: user_id
|
||||
return db.contacts.update({
|
||||
user_id
|
||||
}, update, {
|
||||
upsert: true
|
||||
}, callback)
|
||||
}, callback);
|
||||
},
|
||||
|
||||
getContacts: (user_id, callback = (error) ->) ->
|
||||
try
|
||||
user_id = ObjectId(user_id.toString())
|
||||
catch error
|
||||
return callback error
|
||||
getContacts(user_id, callback) {
|
||||
if (callback == null) { callback = function(error) {}; }
|
||||
try {
|
||||
user_id = ObjectId(user_id.toString());
|
||||
} catch (error1) {
|
||||
const error = error1;
|
||||
return callback(error);
|
||||
}
|
||||
|
||||
db.contacts.findOne {
|
||||
user_id: user_id
|
||||
}, (error, user) ->
|
||||
return callback(error) if error?
|
||||
callback null, user?.contacts
|
||||
return db.contacts.findOne({
|
||||
user_id
|
||||
}, function(error, user) {
|
||||
if (error != null) { return callback(error); }
|
||||
return callback(null, user != null ? user.contacts : undefined);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
[
|
||||
'touchContact',
|
||||
'getContacts',
|
||||
].map (method) ->
|
||||
metrics.timeAsyncMethod(ContactManager, method, 'mongo.ContactManager', logger)
|
||||
].map(method => metrics.timeAsyncMethod(ContactManager, method, 'mongo.ContactManager', logger));
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
NotFoundError = (message) ->
|
||||
error = new Error(message)
|
||||
error.name = "NotFoundError"
|
||||
error.__proto__ = NotFoundError.prototype
|
||||
return error
|
||||
NotFoundError.prototype.__proto__ = Error.prototype
|
||||
let Errors;
|
||||
var NotFoundError = function(message) {
|
||||
const error = new Error(message);
|
||||
error.name = "NotFoundError";
|
||||
error.__proto__ = NotFoundError.prototype;
|
||||
return error;
|
||||
};
|
||||
NotFoundError.prototype.__proto__ = Error.prototype;
|
||||
|
||||
module.exports = Errors =
|
||||
NotFoundError: NotFoundError
|
||||
module.exports = (Errors =
|
||||
{NotFoundError});
|
||||
|
||||
|
|
|
@ -1,66 +1,89 @@
|
|||
ContactManager = require "./ContactManager"
|
||||
logger = require "logger-sharelatex"
|
||||
/*
|
||||
* decaffeinate suggestions:
|
||||
* DS102: Remove unnecessary code created because of implicit returns
|
||||
* DS207: Consider shorter variations of null checks
|
||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
||||
*/
|
||||
let HttpController;
|
||||
const ContactManager = require("./ContactManager");
|
||||
const logger = require("logger-sharelatex");
|
||||
|
||||
module.exports = HttpController =
|
||||
addContact: (req, res, next) ->
|
||||
{user_id} = req.params
|
||||
{contact_id} = req.body
|
||||
module.exports = (HttpController = {
|
||||
addContact(req, res, next) {
|
||||
const {user_id} = req.params;
|
||||
const {contact_id} = req.body;
|
||||
|
||||
if !contact_id? or contact_id == ""
|
||||
res.status(400).send("contact_id should be a non-blank string")
|
||||
return
|
||||
if ((contact_id == null) || (contact_id === "")) {
|
||||
res.status(400).send("contact_id should be a non-blank string");
|
||||
return;
|
||||
}
|
||||
|
||||
logger.log {user_id, contact_id}, "adding contact"
|
||||
logger.log({user_id, contact_id}, "adding contact");
|
||||
|
||||
ContactManager.touchContact user_id, contact_id, (error) ->
|
||||
return next(error) if error?
|
||||
ContactManager.touchContact contact_id, user_id, (error) ->
|
||||
return next(error) if error?
|
||||
res.status(204).end()
|
||||
return ContactManager.touchContact(user_id, contact_id, function(error) {
|
||||
if (error != null) { return next(error); }
|
||||
return ContactManager.touchContact(contact_id, user_id, function(error) {
|
||||
if (error != null) { return next(error); }
|
||||
return res.status(204).end();
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
CONTACT_LIMIT: 50
|
||||
getContacts: (req, res, next) ->
|
||||
{user_id} = req.params
|
||||
CONTACT_LIMIT: 50,
|
||||
getContacts(req, res, next) {
|
||||
let limit;
|
||||
let {user_id} = req.params;
|
||||
|
||||
if req.query?.limit?
|
||||
limit = parseInt(req.query.limit, 10)
|
||||
else
|
||||
limit = HttpController.CONTACT_LIMIT
|
||||
limit = Math.min(limit, HttpController.CONTACT_LIMIT)
|
||||
if ((req.query != null ? req.query.limit : undefined) != null) {
|
||||
limit = parseInt(req.query.limit, 10);
|
||||
} else {
|
||||
limit = HttpController.CONTACT_LIMIT;
|
||||
}
|
||||
limit = Math.min(limit, HttpController.CONTACT_LIMIT);
|
||||
|
||||
logger.log {user_id}, "getting contacts"
|
||||
logger.log({user_id}, "getting contacts");
|
||||
|
||||
ContactManager.getContacts user_id, (error, contact_dict) ->
|
||||
return next(error) if error?
|
||||
return ContactManager.getContacts(user_id, function(error, contact_dict) {
|
||||
if (error != null) { return next(error); }
|
||||
|
||||
contacts = []
|
||||
for user_id, data of (contact_dict or {})
|
||||
contacts.push {
|
||||
user_id: user_id
|
||||
n: data.n
|
||||
let contacts = [];
|
||||
const object = contact_dict || {};
|
||||
for (user_id in object) {
|
||||
const data = object[user_id];
|
||||
contacts.push({
|
||||
user_id,
|
||||
n: data.n,
|
||||
ts: data.ts
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
HttpController._sortContacts contacts
|
||||
contacts = contacts.slice(0, limit)
|
||||
contact_ids = contacts.map (contact) -> contact.user_id
|
||||
HttpController._sortContacts(contacts);
|
||||
contacts = contacts.slice(0, limit);
|
||||
const contact_ids = contacts.map(contact => contact.user_id);
|
||||
|
||||
res.status(200).send({
|
||||
contact_ids: contact_ids
|
||||
})
|
||||
return res.status(200).send({
|
||||
contact_ids
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
_sortContacts: (contacts) ->
|
||||
contacts.sort (a, b) ->
|
||||
# Sort by decreasing count, descreasing timestamp.
|
||||
# I.e. biggest count, and most recent at front.
|
||||
if a.n > b.n
|
||||
return -1
|
||||
else if a.n < b.n
|
||||
return 1
|
||||
else
|
||||
if a.ts > b.ts
|
||||
return -1
|
||||
else if a.ts < b.ts
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
_sortContacts(contacts) {
|
||||
return contacts.sort(function(a, b) {
|
||||
// Sort by decreasing count, descreasing timestamp.
|
||||
// I.e. biggest count, and most recent at front.
|
||||
if (a.n > b.n) {
|
||||
return -1;
|
||||
} else if (a.n < b.n) {
|
||||
return 1;
|
||||
} else {
|
||||
if (a.ts > b.ts) {
|
||||
return -1;
|
||||
} else if (a.ts < b.ts) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
Settings = require "settings-sharelatex"
|
||||
mongojs = require "mongojs"
|
||||
db = mongojs(Settings.mongo.url, ["contacts"])
|
||||
module.exports =
|
||||
db: db
|
||||
const Settings = require("settings-sharelatex");
|
||||
const mongojs = require("mongojs");
|
||||
const db = mongojs(Settings.mongo.url, ["contacts"]);
|
||||
module.exports = {
|
||||
db,
|
||||
ObjectId: mongojs.ObjectId
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue