2018-01-31 10:55:39 +00:00
import { authWithHeaders } from '../../middlewares/auth' ;
let api = { } ;
// @TODO export this const, cannot export it from here because only routes are exported from controllers
2018-08-16 19:40:09 +00:00
const LAST _ANNOUNCEMENT _TITLE = 'NEW PET QUEST: KANGAROOS! PLUS SPOTLIGHT ON HABITICA COMMUNITY INVOLVEMENT' ;
2018-01-31 10:55:39 +00:00
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 : `
< div class = "bailey" >
2018-06-19 23:24:40 +00:00
< div class = "media align-items-center" >
2018-07-10 17:18:41 +00:00
< div class = "mr-3 ${baileyClass}" > < / d i v >
2018-06-19 23:24:40 +00:00
< div class = "media-body" >
2018-07-10 17:18:41 +00:00
< h1 class = "align-self-center" > $ { res . t ( 'newStuff' ) } < / h 1 >
2018-08-16 19:40:09 +00:00
< h2 > 8 / 16 / 2018 - $ { LAST _ANNOUNCEMENT _TITLE } < / h 2 >
2018-06-29 00:18:13 +00:00
< / d i v >
2018-06-19 23:24:40 +00:00
< / d i v >
2018-07-10 17:18:41 +00:00
< hr / >
2018-07-12 19:05:40 +00:00
< div class = "media align-items-center" >
< div class = "media-body" >
2018-08-16 19:40:09 +00:00
< h3 > New Pet Quest : Kangaroo Catastrophe ! < / h 3 >
< p > Ever feel like you 've dodged a dreaded task, but it just comes back around to brain you like a whirling boomerang? Get the latest pet quest, "Kangaroo Catastrophe," from the <a href=' / shops / quests ' target=' _blank ' > Quest Shop < / a > a n d e a r n s o m e k e e n k a n g a r o o p e t s b y c o m p l e t i n g t h o s e r e a l - l i f e t a s k s ! < / p >
< div class = "small" > Art by stefalupagus , mewrose , LilithofAlfheim , ChrisSpatzerl , Willow the Witty , tricksy . fox , and Beffymaroo < / d i v >
< div class = "small mb-3" > Writing by summra and SabreCat < / d i v >
2018-07-19 19:00:53 +00:00
< / d i v >
2018-08-16 19:40:09 +00:00
< div class = "promo_kangaroo ml-3 mb-3" > < / d i v >
2018-07-31 19:08:56 +00:00
< / d i v >
2018-08-16 19:40:09 +00:00
< div class = "media align-items-center" >
< div class = "scene_tavern mr-3" > < / d i v >
< div class = "media-body" >
< h3 > Use Case Spotlight and Guild Spotlight on Getting Involved with Habitica ' s Community < / h 3 >
< p > We 've got new posts on the blog all about ways to get involved with Habitica' s community ! First , there 's a <a href=' https : //habitica.wordpress.com/2018/08/16/getting-involved-in-habitica-guilds-for-contributing/' target='_blank'>Guild Spotlight</a> that highlights the Guilds that can help you earn a place as an esteemed Habitica contributor. We've also posted a <a href='https://habitica.wordpress.com/2018/08/16/use-case-spotlight-get-involved-in-the-habitica-community/' target='_blank'>Use Case Spotlight</a> featuring a number of great suggestions for other ways to get involved with contributing or simply getting social on the site and apps! These suggestions were submitted by Habiticans in the <a href='/groups/guild/1d3a10bf-60aa-4806-a38b-82d1084a59e6' target='_blank'>Use Case Spotlights Guild</a>.</p>
< / d i v >
< / d i v >
< p > Plus , we ' re collecting user submissions for the next Use Case Spotlight ! How do you use Habitica as you learn practical and hands - on skills ? We ’ ll be featuring player - submitted examples in Use Case Spotlights on the Habitica Blog next month , so post your suggestions in the Use Case Spotlight Guild now . We look forward to learning more about how you use Habitica to improve your life and get things done ! < / p >
< div class = "small mb-3" > by shanaqui < / d i v >
2018-01-31 10:55:39 +00:00
< / d i v >
` ,
} ) ;
} ,
} ;
/ * *
* @ 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' ,
2018-04-30 15:36:41 +00:00
middlewares : [ authWithHeaders ( {
userFieldsToExclude : [ 'inbox' ] ,
} ) ] ,
2018-01-31 10:55:39 +00:00
url : '/news/tell-me-later' ,
async handler ( req , res ) {
const user = res . locals . user ;
user . flags . newStuff = false ;
const existingNotificationIndex = user . notifications . findIndex ( n => {
2018-02-04 12:28:05 +00:00
return n && n . type === 'NEW_STUFF' ;
2018-01-31 10:55:39 +00:00
} ) ;
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 , { } ) ;
} ,
} ;
2018-02-02 00:31:38 +00:00
module . exports = api ;