package Ġd roid ka igi . github . io . challenge 2 0 1 9 . flux . action creator Ċ Ċ import Ġd roid ka igi . github . io . challenge 2 0 1 9 . H acker News Repository Ċ import Ġd roid ka igi . github . io . challenge 2 0 1 9 . data . api . H acker News Api Result Ċ import Ġd roid ka igi . github . io . challenge 2 0 1 9 . data . api . response . Item Ċ import Ġd roid ka igi . github . io . challenge 2 0 1 9 . flux . action . Main Action Ċ import Ġd roid ka igi . github . io . challenge 2 0 1 9 . flux . dispatcher . Dispatcher Ċ import Ġkotlinx . coroutines .* Ċ import Ġkotlin . coroutines . Coroutine Context Ċ Ċ class ĠMain Action Creator ( ĊĠĠĠ Ġprivate Ġval Ġhack er News Repository : ĠH acker News Repository , ĊĠĠĠ Ġprivate Ġval Ġdispatcher : ĠDispatcher ) Ġ: ĠCor outine Scope Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġjob Ġ= ĠJob () ĊĠĠĠ Ġoverride Ġval Ġcoroutine Context : ĠCor outine Context ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠCor outine Scope ( Dispatch ers . IO Ġ+ Ġjob ). coroutine Context ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTop St ories ãĤĴåıĸå¾Ĺ ãģĻãĤĭ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġload Top St ories () Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġresult Ġ= Ġhack er News Repository . fetch Top St ories ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠH acker News Api Result . Success < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher . dispatch ( Main Action . Refresh Top St ories ( result . data Ġas ĠList < Item ?> )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠH acker News Api Result . Failed Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher . dispatch ( Main Action . Failed Fetch Story ( result . throwable )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çī¹å®ļ ãģ® ãĤ¢ ãĤ¤ ãĥĨ ãĥł ãĤĴåıĸå¾Ĺ ãģĻãĤĭ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetItem ( id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġresult Ġ= Ġhack er News Repository . getItem ( id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠH acker News Api Result . Success < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher . dispatch ( Main Action . Fetch Story ( result . data Ġas ĠItem )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠH acker News Api Result . Failed Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher . dispatch ( Main Action . Failed Fetch Story ( result . throwable )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å®Łè¡Į ãģķãĤĮãģ¦ãģĦãĤĭ ãĥª ãĤ¯ ãĤ¨ ãĤ¹ãĥĪ ãĤĴ ãĤŃ ãĥ£ ãĥ³ ãĤ» ãĥ« ãģĻãĤĭ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcancel () Ġ{ ĊĠĠĠĠĠĠĠ Ġjob . cancel () ĊĠĠĠĠĠĠĠ Ġjob Ġ= ĠJob () ĊĠĠĠ Ġ} Ċ }