package Ġcom . ep ig ram . android . data . managers Ċ Ċ import Ġcom . ep ig ram . android . Build Config Ċ import Ġcom . ep ig ram . android . data . api . ep ig ram . Ep ig ram Service Ċ import Ġcom . ep ig ram . android . data . arch . Preference Module Ċ import Ġcom . ep ig ram . android . data . model . Post Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . rx kotlin . addTo Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ Ċ class ĠPost ManagerImpl Ġ( val Ġservice : ĠEp ig ram Service ) Ġ: ĠPost Manager { ĊĊĠĠĠ Ġprivate Ġval ĠKEY Ġ= ĠBuild Config . API _ KEY ĊĠĠĠ Ġprivate Ġval Ġpersonal isation Id Ġ= ĠPreference Module . advanced For You . get () ĊĊĠĠĠ Ġoverride Ġfun Ġget Posts ( page : ĠInt , Ġfilter : ĠString ?): ĠSingle < List < Post >> Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtag Filter : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( filter Ġ!= Ġnull Ġ&& Ġfilter . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtag Filter Ġ= Ġ" tag :$ filter " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġservice ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Posts Filter ( KEY , Ġ" tags , authors ", Ġtag Filter , Ġ" 2 0 ", Ġpage , Ġ" published _ at Ġdesc "). map Ġ{ Ġbody Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposts Ġ= ĠArrayList < Post >() ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( post Ġin Ġbody . posts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPost . from Template ( post )?. let Ġ{ Ġposts . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposts ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Posts Break ing (): ĠSingle < List < Post >> Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġservice ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Posts Break ( KEY , Ġ" tags , authors ", Ġ" tag : breaking - news ", Ġ" 5 ", Ġ" published _ at Ġdesc "). map Ġ{ Ġbody Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposts Ġ= ĠArrayList < Post >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( post Ġin Ġbody . posts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPost . from Template ( post )?. let Ġ{ Ġposts . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposts ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Posts Related ( filter : ĠString ?): ĠSingle < List < Post >> Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtag Filter : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( filter Ġ!= Ġnull Ġ&& Ġfilter . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtag Filter Ġ= Ġ" tag :$ filter " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġservice ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Posts Break ( KEY , Ġ" tags , authors ", Ġtag Filter , Ġ" 1 0 ", Ġ" published _ at Ġdesc "). map Ġ{ Ġbody Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposts Ġ= ĠArrayList < Post >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( post Ġin Ġbody . posts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPost . from Template ( post )?. let Ġ{ Ġposts . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposts ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Posts Author ( page : ĠInt , Ġauthor : ĠString ?): ĠSingle < List < Post >> Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġauthor Filter : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( author Ġ!= Ġnull Ġ&& Ġauthor . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauthor Filter Ġ= Ġ" author :$ author " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġservice ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Posts Filter ( KEY , Ġ" tags , authors ", Ġauthor Filter , Ġ" 2 0 ", Ġpage , Ġ" published _ at Ġdesc "). map Ġ{ Ġbody Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposts Ġ= ĠArrayList < Post >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( post Ġin Ġbody . posts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPost . from Template ( post )?. let Ġ{ Ġposts . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposts ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Post Titles ( page : ĠInt , Ġsearch Term : ĠString ): ĠSingle < Pair < String , ĠList < Post >>> Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġservice Ġ Ġ// Ġif Ġyou Ġdont Ġget Ġall Ġt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Search IDs ( KEY , Ġ" authors ", Ġ" 2 0 0 ", Ġ" title , id , primary _ author ", page Ġ, Ġ" published _ at Ġdesc "). map Ġ{ Ġbody Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody . posts . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . title . contains ( search Term , Ġtrue ) Ġ|| Ġit . primary _ author . name . contains ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Term , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. map Ġ{ Ġit . id Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. flatMap Ġ{ Ġids Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( ids . isEmpty ()) Ġreturn @ flatMap ĠSingle . just ( search Term Ġto Ġempty List < Post >()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Posts Filter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKEY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" tags , authors ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id :[ ${ ids . join ToString (", ")} ]", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġ 0 , Ġ" published _ at Ġdesc ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġbody Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposts Ġ= ĠArrayList < Post >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( post Ġin Ġbody . posts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPost . from Template ( post )?. let Ġ{ Ġposts . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Term Ġto Ġposts ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Search Total ( search Term : ĠString ): ĠSingle < Int >{ ĊĠĠĠĠĠĠĠ Ġreturn Ġservice ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Search IDs ( KEY , Ġ" authors ", Ġ" all ", Ġ" title , id , primary _ author ", 1 Ġ, Ġ" published _ at Ġdesc "). map Ġ{ Ġbody Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody . posts . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . title . contains ( search Term , Ġtrue ) Ġ|| Ġit . primary _ author . name . contains ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Term , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Posts ById ( page : ĠInt , Ġids : ĠList < String >): ĠSingle < List < Post >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġservice ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Posts Filter ( KEY , Ġ" tags , authors ", Ġ" id :[ ${ ids . join ToString (", ")} ]", Ġ" 2 0 ", Ġpage , Ġ" published _ at Ġdesc "). map Ġ{ Ġbody Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposts Ġ= ĠArrayList < Post >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( post Ġin Ġbody . posts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPost . from Template ( post )?. let Ġ{ Ġposts . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposts ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Posts Lik ed ( page : ĠInt , Ġtags : ĠList < String >, Ġauthors : ĠList < String >, Ġkeywords : ĠList < String >): ĠSingle < List < Post >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġservice ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Search IDs ( KEY , Ġ" authors ", Ġ" 2 0 0 ", Ġ" title , id , primary _ author , tag ", page Ġ, Ġ" published _ at Ġdesc "). map Ġ{ Ġbody Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody . posts . filter Ġ{ Ġpost Ġ-> Ġkeywords . any Ġ{ Ġpost . title . toLowerCase (). split (" Ġ"). contains ( it ) Ġ} Ġ}. map Ġ{ Ġit . id Ġ} Ġ// && Ġtags . any Ġ{ Ġtag Ġ-> Ġif ( post . tags . isNull OrEmpty ()) Ġempty List < String >(). contains ( tag ) Ġelse Ġpost . tags . map Ġ{ Ġit . name Ġ}. contains ( tag ) Ġ} Ġ}. map Ġ{ Ġit . id Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. flatMap Ġ{ Ġids Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( ids . isEmpty () Ġ|| Ġpersonal isation Id Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Posts Filter ( KEY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" tags , authors ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" tag :[ ${ tags . join ToString (",") }], author :[ ${ authors . join ToString (", ")} ]", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" published _ at Ġdesc ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġbody Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposts Ġ= ĠArrayList < Post >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( post Ġin Ġbody . posts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPost . from Template ( post )?. let Ġ{ Ġposts . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposts ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingle . just ( emptyList < Post >()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Posts Filter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKEY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" tags , authors ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id :[ ${ ids . join ToString (", ")} ]", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġ 0 , Ġ" published _ at Ġdesc ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġbody Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposts Ġ= ĠArrayList < Post >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( post Ġin Ġbody . posts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPost . from Template ( post )?. let Ġ{ Ġposts . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpost Map Ġ= Ġposts . map Ġ{ Ġit . id Ġ}. associate With Ġ{ Ġ 0 Ġ}. to Mutable Map () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposts . forEach Ġ{ Ġpost Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( post . authors . second . or Empty (). any Ġ{ Ġauthors . contains ( it ) Ġ} Ġ&& Ġpost . tags . second . or Empty (). all Ġ{ Ġtags . contains ( it ) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Map [ post . id ] Ġ= Ġpost Map [ post . id ] !! Ġ+ Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( post . authors . second . or Empty (). any Ġ{ Ġauthors . contains ( it ) Ġ} Ġ&& Ġpost . tags . second . or Empty (). any Ġ{ Ġtags . contains ( it ) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Map [ post . id ] Ġ= Ġpost Map [ post . id ] !! Ġ+ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( post . authors . second . or Empty (). any Ġ{ Ġauthors . contains ( it ) Ġ} Ġ|| Ġpost . tags . second . or Empty (). any Ġ{ Ġtags . contains ( it ) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Map [ post . id ] Ġ= Ġpost Map [ post . id ] !! Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġordered Ids Ġ= Ġpost Map . toList (). sorted By Descending Ġ{ Ġ(_, Ġv ) Ġ-> Ġv Ġ}. toMap (). keys . toList (). with Index (). associate Ġ{ Ġit . value Ġto Ġit . index Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposts . sorted By Ġ{ Ġordered Ids [ it . id ] Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposts ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Article ( id : ĠString ): ĠSingle < Post > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġservice ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getPost From Notification ( id , ĠKEY , Ġ" tags , authors "). map Ġ{ Ġit . posts . first () Ġ}. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPost . from Template ( it ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ