/* Ċ Copyright Ġ 2 0 2 1 ĠMat he us ĠM ene zes Ċ Ċ 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 Ġbr . com . math sem ilio . simple ap od browser . ui . screens . ap od list Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġbr . com . math sem ilio . simple ap od browser . R Ċ import Ġbr . com . math sem ilio . simple ap od browser . common . DEFAULT _ DATE _ RANGE _ LAST _ SE VEN _ DAYS Ċ import Ġbr . com . math sem ilio . simple ap od browser . common . event bus . EventListener Ċ import Ġbr . com . math sem ilio . simple ap od browser . common . event bus . Event Subscriber Ċ import Ġbr . com . math sem ilio . simple ap od browser . data . manager . Preferences Manager Ċ import Ġbr . com . math sem ilio . simple ap od browser . domain . model . Ap od Ċ import Ġbr . com . math sem ilio . simple ap od browser . domain . use case . ap od . Fetch Ap od Based On Date UseCase Ċ import Ġbr . com . math sem ilio . simple ap od browser . domain . use case . ap od . Fetch Ap od Based On Date UseCase . Fetch Ap od Based On Date Result Ċ import Ġbr . com . math sem ilio . simple ap od browser . domain . use case . ap od . Fetch Ap ods UseCase Ċ import Ġbr . com . math sem ilio . simple ap od browser . domain . use case . ap od . Fetch Ap ods UseCase . Fetch Ap ods Result Ċ import Ġbr . com . math sem ilio . simple ap od browser . domain . use case . ap od . Fetch Random Ap od UseCase Ċ import Ġbr . com . math sem ilio . simple ap od browser . domain . use case . ap od . Fetch Random Ap od UseCase . Fetch Random Ap od Result Ċ import Ġbr . com . math sem ilio . simple ap od browser . ui . common . Base Fragment Ċ import Ġbr . com . math sem ilio . simple ap od browser . ui . common . manager . Dialog Manager Ċ import Ġbr . com . math sem ilio . simple ap od browser . ui . common . manager . Messages Manager Ċ import Ġbr . com . math sem ilio . simple ap od browser . ui . common . navigation . Scre ens Navigator Ċ import Ġbr . com . math sem ilio . simple ap od browser . ui . dialog . datepicker . Date Set Event Ċ import Ġbr . com . math sem ilio . simple ap od browser . ui . screens . ap od list . view . Ap od List Screen View Ċ import Ġbr . com . math sem ilio . simple ap od browser . ui . screens . ap od list . view . Ap od List Screen View Impl Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . cancel Children Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠAp od List Fragment Ġ: ĠBase Fragment (), ĠAp od List Screen View . Listener , ĠEvent Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview : ĠAp od List Screen View ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpreferences Manager : ĠPreferences Manager ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġscreens Navigator : ĠS cre ens Navigator ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmessages Manager : ĠMessages Manager ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcoroutine Scope : ĠCor outine Scope ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdialog Manager : ĠDialog Manager ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġevent Subscriber : ĠEvent Subscriber ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfetch Ap ods UseCase : ĠFetch Ap ods UseCase ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfetch Random Ap od UseCase : ĠFetch Random Ap od UseCase ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfetch Ap od Based On Date UseCase : ĠFetch Ap od Based On Date UseCase ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĊĠĠĠĠĠĠĠ Ġpreferences Manager Ġ= Ġcomposition Root . preferences Manager ĊĠĠĠĠĠĠĠ Ġscreens Navigator Ġ= ĠS cre ens Navigator ( find Nav Controller ()) ĊĠĠĠĠĠĠĠ Ġmessages Manager Ġ= Ġcomposition Root . messages Manager ĊĠĠĠĠĠĠĠ Ġcoroutine Scope Ġ= Ġcomposition Root . coroutine Scope Provider . UI Bound Scope ĊĠĠĠĠĠĠĠ Ġdialog Manager Ġ= Ġcomposition Root . dialog Manager ĊĊĠĠĠĠĠĠĠ Ġevent Subscriber Ġ= Ġcomposition Root . event Subscriber ĊĊĠĠĠĠĠĠĠ Ġfetch Ap ods UseCase Ġ= Ġcomposition Root . fetch Ap od UseCase ĊĠĠĠĠĠĠĠ Ġfetch Random Ap od UseCase Ġ= Ġcomposition Root . fetch Random Ap od UseCase ĊĠĠĠĠĠĠĠ Ġfetch Ap od Based On Date UseCase Ġ= Ġcomposition Root . fetch Ap od Based On Date UseCase ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġview Ġ= ĠAp od List Screen View Impl ( in flater , Ġcontainer ) ĊĠĠĠĠĠĠĠ Ġreturn Ġview . root View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Ap od Clicked ( ap od : ĠAp od ) Ġ= Ġscreens Navigator . to Ap od Details Screen ( ap od ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Screen Sw ip ed To Refresh () Ġ= Ġfetch Ap ods () ĊĊĠĠĠ Ġprivate Ġfun Ġfetch Ap ods () Ġ{ ĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Progress Indicator () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġfetch Ap ods UseCase . fetch Ap ods Based On ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences Manager . default DateRange Ġ?: ĠDEFAULT _ DATE _ RANGE _ LAST _ SE VEN _ DAYS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Fetch Ap ods Result ( result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Fetch Ap ods Result ( result : ĠFetch Ap ods Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFetch Ap ods Result . Completed Ġ-> Ġon Fetch Ap ods Completed ( result . apods ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFetch Ap ods Result . Failed Ġ-> Ġon Fetch Ap ods Failed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Fetch Ap ods Completed ( apods : ĠList < Ap od > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . hide Progress Indicator () ĊĠĠĠĠĠĠĠ Ġview . hide Network Request Error State () ĊĊĠĠĠĠĠĠĠ Ġap ods ?. let Ġ{ Ġview . bind ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Fetch Ap ods Failed () Ġ{ ĊĠĠĠĠĠĠĠ Ġview . hide Progress Indicator () ĊĠĠĠĠĠĠĠ Ġview . show Network Request Error State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Event ( event : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDate Set Event Ġ-> Ġon Ap od Date Set Event ( event ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Ap od Date Set Event ( event : ĠDate Set Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDate Set Event . Date Set Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġfetch Ap od Based On Date UseCase . fetch Ap od Based On Date ( event . date In Millis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Fetch Ap od Based On Date Result ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Fetch Ap od Based On Date Result ( result : ĠFetch Ap od Based On Date Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFetch Ap od Based On Date Result . Completed Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . ap od ?. let Ġ{ Ġap od Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscreens Navigator . to Ap od Details Screen ( ap od ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFetch Ap od Based On Date Result . Failed Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessages Manager . show Check Your Connection Message () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . toolbar _ ap od _ list , Ġmenu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . toolbar _ action _ pick _ date Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Manager . show DatePicker Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . toolbar _ action _ get _ random _ ap od Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfetch Random Ap od () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . toolbar _ action _ settings Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscreens Navigator . to Settings Screen () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfetch Random Ap od () Ġ{ ĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġfetch Random Ap od UseCase . fetch Random Ap od () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Fetch Random Ap od UseCase Result ( result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Fetch Random Ap od UseCase Result ( result : ĠFetch Random Ap od Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFetch Random Ap od Result . Completed Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . random Ap od ?. let Ġ{ Ġrandom Ap od Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscreens Navigator . to Ap od Details Screen ( random Ap od ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFetch Random Ap od Result . Failed Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessages Manager . show Check Your Connection Message () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġview . addListener ( this ) ĊĠĠĠĠĠĠĠ Ġevent Subscriber . subscribe ( this ) ĊĠĠĠĠĠĠĠ Ġfetch Ap ods () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġview . remove Listener ( this ) ĊĠĠĠĠĠĠĠ Ġevent Subscriber . unsubscribe ( this ) ĊĠĠĠĠĠĠĠ Ġcoroutine Scope . coroutine Context . cancel Children () ĊĠĠĠ Ġ} Ċ } Ċ