/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 Ġli z ha ot ail ang Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . mark ton y . zhi h ud aily . details Ċ Ċ import Ġcom . mark ton y . zhi h ud aily . R Ċ import Ġcom . mark ton y . zhi h ud aily . data . ContentType Ċ import Ġcom . mark ton y . zhi h ud aily . data . source . Result Ċ import Ġcom . mark ton y . zhi h ud aily . data . source . repository .* Ċ import Ġcom . mark ton y . zhi h ud aily . util . launch Sil ent Ċ import Ġkotlinx . coroutines . experimental . android . UI Ċ import Ġkotlin . coroutines . experimental . Coroutine Context Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġli z ha ot ail ang Ġon Ġ 2 0 1 7 / 5 / 2 4 . Ċ Ġ* Ċ Ġ* ĠListen Ġto Ġuser Ġactions Ġfrom Ġthe ĠUI Ġ([ Details Fragment ]), Ċ Ġ* Ġretrieves Ġthe Ġdata Ġand Ġupdates Ġthe ĠUI Ġas Ġrequired . Ċ Ġ*/ Ċ Ċ class ĠDetails Presenter Ġ: ĠDetails Contract . Presenter Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm View : ĠDetails Contract . View ĊĠĠĠ Ġprivate Ġval Ġui Context : ĠCor outine Context Ġ= ĠUI ĊĊĠĠĠ Ġprivate Ġvar Ġm Do ub an News Repository : ĠDo ub an Moment News Repository ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Do ub an Content Repository : ĠDo ub an Moment Content Repository ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm Z hi hu News Repository : ĠZ hi hu Daily News Repository ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Z hi hu Content Repository : ĠZ hi hu Daily Content Repository ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm Gu ok r News Repository : ĠGu ok r Hand pick News Repository ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Gu ok r Content Repository : ĠGu ok r Hand pick Content Repository ? Ġ= Ġnull ĊĊĠĠĠ Ġconstructor ( view : ĠDetails Contract . View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdoub an News Repository : ĠDo ub an Moment News Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdoub an Content Repository : ĠDo ub an Moment Content Repository ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm View Ġ= Ġview ĊĠĠĠĠĠĠĠ Ġm View . m Presenter Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġm Do ub an Content Repository Ġ= Ġdoub an Content Repository ĊĠĠĠĠĠĠĠ Ġm Do ub an News Repository Ġ= Ġdoub an News Repository ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( view : ĠDetails Contract . View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġz hi hu News Repository : ĠZ hi hu Daily News Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġz hi hu Content Repository : ĠZ hi hu Daily Content Repository ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm View Ġ= Ġview ĊĠĠĠĠĠĠĠ Ġm View . m Presenter Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġm Z hi hu News Repository Ġ= Ġz hi hu News Repository ĊĠĠĠĠĠĠĠ Ġm Z hi hu Content Repository Ġ= Ġz hi hu Content Repository ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( view : ĠDetails Contract . View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgu ok r News Repository : ĠGu ok r Hand pick News Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgu ok r Content Repository : ĠGu ok r Hand pick Content Repository ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm View Ġ= Ġview ĊĠĠĠĠĠĠĠ Ġm View . m Presenter Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġm Gu ok r News Repository Ġ= Ġgu ok r News Repository ĊĠĠĠĠĠĠĠ Ġm Gu ok r Content Repository Ġ= Ġgu ok r Content Repository ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfavorite ( type : ĠContentType , Ġid : ĠInt , Ġfavorite : ĠBoolean ) Ġ= Ġlaunch Sil ent ( ui Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ=== ĠContentType . TYPE _ Z HI HU _ DA IL Y Ġ-> Ġm Z hi hu News Repository ?. favorite Item ( id , Ġfavorite ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ=== ĠContentType . TYPE _ DO UB AN _ MO MENT Ġ-> Ġm Do ub an News Repository ?. favorite Item ( id , Ġfavorite ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġm Gu ok r News Repository ?. favorite Item ( id , Ġfavorite ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Do ub an Content ( id : ĠInt ) Ġ= Ġlaunch Sil ent ( ui Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġm Do ub an Content Repository ?. get Do ub an Moment Content ( id ) ĊĠĠĠĠĠĠĠ Ġval Ġnews Result Ġ= Ġm Do ub an News Repository ?. getItem ( id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( m View . isActive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġnews Result Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġresult Ġis ĠResult . Success ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġnews Result Ġis ĠResult . Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . show Do ub an Moment Content ( result . data , Ġnews Result . data . thumbs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . showMessage ( R . string . something _ wrong ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Z hi hu Daily Content ( id : ĠInt ) Ġ= Ġlaunch Sil ent ( ui Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġm Z hi hu Content Repository ?. getZ hi hu Daily Content ( id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( m View . isActive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull Ġ&& Ġresult Ġis ĠResult . Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . show Z hi hu Daily Content ( result . data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . showMessage ( R . string . something _ wrong ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Gu ok r Hand pick Content ( id : ĠInt ) Ġ= Ġlaunch Sil ent ( ui Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġm Gu ok r Content Repository ?. get Gu ok r Hand pick Content ( id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( m View . isActive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull Ġ&& Ġresult Ġis ĠResult . Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . show Gu ok r Hand pick Content ( result . data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . showMessage ( R . string . something _ wrong ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Link ( type : ĠContentType , Ġrequest Code : ĠInt , Ġid : ĠInt ) Ġ= Ġlaunch Sil ent ( ui Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContentType . TYPE _ Z HI HU _ DA IL Y Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġm Z hi hu Content Repository ?. getZ hi hu Daily Content ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m View . isActive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull Ġ&& Ġresult Ġis ĠResult . Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġresult . data . share Url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠDetails Fragment . REQUEST _ SHARE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . share ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( request Code Ġ== ĠDetails Fragment . REQUEST _ COPY _ LINK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . copy Link ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( request Code Ġ== ĠDetails Fragment . REQUEST _ OPEN _ WITH _ BROWSER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . open With Browser ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . showMessage ( R . string . share _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContentType . TYPE _ DO UB AN _ MO MENT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġm Do ub an Content Repository ?. get Do ub an Moment Content ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m View . isActive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull Ġ&& Ġresult Ġis ĠResult . Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġresult . data . url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠDetails Fragment . REQUEST _ SHARE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . share ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( request Code Ġ== ĠDetails Fragment . REQUEST _ COPY _ LINK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . copy Link ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( request Code Ġ== ĠDetails Fragment . REQUEST _ OPEN _ WITH _ BROWSER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . open With Browser ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . showMessage ( R . string . share _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContentType . TYPE _ GU OK R _ HAND P ICK Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġm Gu ok r Content Repository ?. get Gu ok r Hand pick Content ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m View . isActive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull Ġ&& Ġresult Ġis ĠResult . Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġresult . data . url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠDetails Fragment . REQUEST _ SHARE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . share ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( request Code Ġ== ĠDetails Fragment . REQUEST _ COPY _ LINK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . copy Link ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( request Code Ġ== ĠDetails Fragment . REQUEST _ OPEN _ WITH _ BROWSER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . open With Browser ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View . showMessage ( R . string . share _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ