import { authWithHeaders } from '../../middlewares/auth'; let api = {}; // @TODO export this const, cannot export it from here because only routes are exported from controllers const LAST_ANNOUNCEMENT_TITLE = 'SHIMMER AND RAINBOW HATCHING POTIONS; SPRING CLEANING GUILD SPOTLIGHT'; const worldDmg = { // @TODO bailey: false, }; /** * @api {get} /api/v3/news Get latest Bailey announcement * @apiName GetNews * @apiGroup News * * * @apiSuccess {Object} html Latest Bailey html * */ api.getNews = { method: 'GET', url: '/news', async handler (req, res) { const baileyClass = worldDmg.bailey ? 'npc_bailey_broken' : 'npc_bailey'; res.status(200).send({ html: `

${res.t('newStuff')}

3/13/2018 - ${LAST_ANNOUNCEMENT_TITLE}


Shimmer and Rainbow Hatching Potions

We've brought back Shimmer Potions, and added a brand-new Magic Hatching Potion: Rainbow! Between now and March 31st, you can buy these Hatching Potions from the Market and use them to hatch any standard pet egg. (Magic Hatching Potions do not work on Quest Pet eggs.) Magic Hatching Potion Pets aren't picky, so they'll happily eat any kind of food that you feed them!

After they're gone, it will be at least a year before the Shimmer or Rainbow Hatching Potions are available again, so be sure to get them now!

by Beffymaroo, Teto Forever, tricksy.fox, and SabreCat

Another One Fights the Dust: Guilds for Spring Cleaning

There's a new Guild Spotlight on the blog that highlights the Guilds that can help you with your Spring Cleaning! Check it out now to find Habitica's best communities for help and motivation with cleaning.

by Beffymaroo
`, }); }, }; /** * @api {post} /api/v3/news/tell-me-later Get latest Bailey announcement in a second moment * @apiName TellMeLaterNews * @apiGroup News * * * @apiSuccess {Object} data An empty Object * */ api.tellMeLaterNews = { method: 'POST', middlewares: [authWithHeaders()], url: '/news/tell-me-later', async handler (req, res) { const user = res.locals.user; user.flags.newStuff = false; const existingNotificationIndex = user.notifications.findIndex(n => { return n && n.type === 'NEW_STUFF'; }); if (existingNotificationIndex !== -1) user.notifications.splice(existingNotificationIndex, 1); user.addNotification('NEW_STUFF', { title: LAST_ANNOUNCEMENT_TITLE }, true); // seen by default await user.save(); res.respond(200, {}); }, }; module.exports = api;