/* eslint-disable camelcase, max-len, no-unused-vars, */ // TODO: This file was created by bulk-decaffeinate. // Fix any style issues and re-enable lint. /* * 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 */ const settings = require('settings-sharelatex') const request = require('request') const logger = require('logger-sharelatex') const oneSecond = 1000 const makeRequest = function(opts, callback) { if ( (settings.apis.notifications != null ? settings.apis.notifications.url : undefined) == null ) { return callback(null, { statusCode: 200 }) } else { return request(opts, callback) } } module.exports = { getUserNotifications(user_id, callback) { const opts = { uri: `${ settings.apis.notifications != null ? settings.apis.notifications.url : undefined }/user/${user_id}`, json: true, timeout: oneSecond, method: 'GET' } return makeRequest(opts, function(err, res, unreadNotifications) { const statusCode = res != null ? res.statusCode : 500 if (err != null || statusCode !== 200) { const e = new Error( `something went wrong getting notifications, ${err}, ${statusCode}` ) logger.err({ err }, 'something went wrong getting notifications') return callback(null, []) } else { if (unreadNotifications == null) { unreadNotifications = [] } return callback(null, unreadNotifications) } }) }, createNotification( user_id, key, templateKey, messageOpts, expiryDateTime, forceCreate, callback ) { if (!callback) { callback = forceCreate forceCreate = true } const payload = { key, messageOpts, templateKey, forceCreate } if (expiryDateTime != null) { payload.expires = expiryDateTime } const opts = { uri: `${ settings.apis.notifications != null ? settings.apis.notifications.url : undefined }/user/${user_id}`, timeout: oneSecond, method: 'POST', json: payload } return makeRequest(opts, callback) }, markAsReadWithKey(user_id, key, callback) { const opts = { uri: `${ settings.apis.notifications != null ? settings.apis.notifications.url : undefined }/user/${user_id}`, method: 'DELETE', timeout: oneSecond, json: { key } } return makeRequest(opts, callback) }, markAsRead(user_id, notification_id, callback) { const opts = { method: 'DELETE', uri: `${ settings.apis.notifications != null ? settings.apis.notifications.url : undefined }/user/${user_id}/notification/${notification_id}`, timeout: oneSecond } return makeRequest(opts, callback) }, // removes notification by key, without regard for user_id, // should not be exposed to user via ui/router markAsReadByKeyOnly(key, callback) { const opts = { uri: `${ settings.apis.notifications != null ? settings.apis.notifications.url : undefined }/key/${key}`, method: 'DELETE', timeout: oneSecond } return makeRequest(opts, callback) } }