Files
habitica/website/server/controllers/api-v3/notifications.js
Matteo Pagliazzi f7be7205e7 Remove localstorage and add notifications (#7588)
* move remaining files frm /common/script/public to website/public

* remove localstorage

* add back noscript template and put all javascript in the footer

* fixes client side tests

* remove double quotes where possible

* simplify jade code and add tests for buildManifest

* loading page with logo and spinner

* better loading screen in landscape mode

* icon on top of text logo

* wip: user.notifications

* notifications: simpler and working code

* finish implementing notifications

* correct loading screen css and re-inline images

* add tests for user notifications

* split User model in multiple files

* remove old comment about missing .catch()

* correctly setup hooks and methods for User model. Cleanup localstorage

* include UserNotificationsService in static page js and split loading-screen css in its own file

* add cron notification and misc fixes

* remove console.log

* fix tests

* fix multiple notifications
2016-06-07 16:14:19 +02:00

48 lines
1.1 KiB
JavaScript

import { authWithHeaders } from '../../middlewares/api-v3/auth';
import _ from 'lodash';
import {
NotFound,
} from '../../libs/api-v3/errors';
let api = {};
/**
* @apiIgnore Not yet part of the public API
* @api {post} /api/v3/notifications/:notificationId/read Mark one notification as read
* @apiVersion 3.0.0
* @apiName ReadNotification
* @apiGroup Notification
*
* @apiParam {UUID} notificationId
*
* @apiSuccess {Object} data user.notifications
*/
api.readNotification = {
method: 'POST',
url: '/notifications/:notificationId/read',
middlewares: [authWithHeaders()],
async handler (req, res) {
let user = res.locals.user;
req.checkParams('notificationId', res.t('notificationIdRequired')).notEmpty();
let validationErrors = req.validationErrors();
if (validationErrors) throw validationErrors;
let index = _.findIndex(user.notifications, {
id: req.params.notificationId,
});
if (index === -1) {
throw new NotFound(res.t('messageNotificationNotFound'));
}
user.notifications.splice(index, 1);
await user.save();
res.respond(200, user.notifications);
},
};
module.exports = api;