@@ -276,7 +276,7 @@ const getAnnouncements = (limit) => {
276276 } ) ;
277277}
278278
279- const getMessageByID = ( auth , id ) => {
279+ const getMessageByID = ( auth , id , autoUnread ) => {
280280 return new Promise ( ( resolve , reject ) => {
281281
282282 if ( Object . keys ( announcements . messages ) . includes ( id ) ) return resolve ( [ announcements . messages [ id ] ] ) ;
@@ -299,8 +299,48 @@ const getMessageByID = (auth, id) => {
299299 . then ( ( ) => {
300300 try {
301301 const content = JSON . parse ( response . body ) ;
302- const parsed = parseMessageContent ( content . messages ) ;
303- return resolve ( parsed ) ;
302+ const parsed = parseMessageContent ( content . messages , autoUnread ) ;
303+
304+ if ( autoUnread ) {
305+ markMessageUnread ( auth , id )
306+ . then ( ( ) => {
307+ return resolve ( parsed ) ;
308+ } )
309+ . catch ( err => {
310+ return reject ( err ) ;
311+ } )
312+ } else {
313+ return resolve ( parsed ) ;
314+ }
315+ } catch ( err ) {
316+ console . log ( err ) ;
317+ return reject ( { err : 'Failed to parse message content' , message : err , status : 500 } )
318+ }
319+ } )
320+ . catch ( err => {
321+ return reject ( err ) ;
322+ } ) ;
323+ } ) ;
324+ } ) ;
325+ }
326+
327+ const markMessageUnread = ( auth , id ) => {
328+ return new Promise ( ( resolve , reject ) => {
329+ const options = {
330+ 'method' : 'GET' ,
331+ 'url' : `https://espoo.inschool.fi/messages/markunread?mid=${ id } ` ,
332+ 'headers' : {
333+ 'Cookie' : `Wilma2SID=${ auth . Wilma2SID } ` ,
334+ 'Content-Type' : 'application/x-www-form-urlencoded'
335+ } ,
336+ 'followRedirect' : false ,
337+ } ;
338+
339+ request ( options , function ( error , response ) {
340+ messages . validateMessageUnread ( response )
341+ . then ( ( ) => {
342+ try {
343+ return resolve ( { success : true } ) ;
304344
305345 } catch ( err ) {
306346 console . log ( err ) ;
@@ -384,9 +424,10 @@ const parseAppointmentList = (raw, limit) => {
384424}
385425
386426
387- const parseMessageContent = ( raw ) => {
427+ const parseMessageContent = ( raw , autoUnread ) => {
388428 return raw . map ( message => {
389429 return {
430+ autoUnread,
390431 fromWilma : true ,
391432 id : message . Id ,
392433 subject : message . Subject ,
@@ -414,5 +455,6 @@ module.exports = {
414455 getMessageOutbox,
415456 getAppointments,
416457 getAnnouncements,
417- getMessageByID
458+ getMessageByID,
459+ markMessageUnread
418460}
0 commit comments