package Ġcom . example . news feed app Ċ Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . example . news feed app . Adapter . ViewHolder . List Source Adapter Ċ import Ġcom . example . news feed app . Common . API Service Ċ import Ġcom . example . news feed app . Interface . News Service Ċ import Ġcom . example . news feed app . Model . Web Site Ċ import Ġcom . google . gson . Gson Ċ import Ġd max . dialog . Sp ots Dialog Ċ import Ġio . paper db . Paper Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Response Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġlayout Manager : ĠLinearLayoutManager ; ĊĠĠĠ Ġlateinit Ġvar Ġm Service : ĠNews Service ĊĠĠĠ Ġlateinit Ġvar Ġadapter : ĠList Source Adapter ĊĠĠĠ Ġlateinit Ġvar Ġdialog : ĠAlertDialog ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ ĠPaper . init ( this ) ĊĠĠĠĠĠĠĠ Ġm Service Ġ= ĠAPI Service . news Service ĊĠĠĠĠĠĠĠ Ġswipe _ to _ refresh . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Web Site Source ( true ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġre cycler _ view _ source _ news . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġre cycler _ view _ source _ news . layout Manager Ġ= Ġlayout Manager ; ĊĠĠĠĠĠĠĠ Ġdialog Ġ= ĠSp ots Dialog . Builder (). set Context ( this ). build () ĊĠĠĠĠĠĠĠ Ġload Web Site Source ( false ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Web Site Source ( is Refresh : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Refresh ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcache Ġ= ĠPaper . book (). read < String >(" cache "); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cache Ġ!= Ġnull Ġ&& Ġ! cache . isBlank () Ġ&& Ġcache Ġ!= Ġ" null ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweb Site Ġ= ĠGson (). fromJson < Web Site >( cache , ĠWeb Site :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠList Source Adapter ( base Context , Ġweb Site ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler _ view _ source _ news . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Service . sources . enqueue ( object Ġ: Ġretrofit 2 . Callback < Web Site > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Web Site > ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( base Context , Ġ" Failed ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < Web Site > ?, Ġresponse : ĠResponse < Web Site > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠList Source Adapter ( base Context , Ġresponse !!. body () !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler _ view _ source _ news . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPaper . book (). write (" cache ", ĠGson (). toJson ( response . body () !! )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe _ to _ refresh . is Refresh ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Service . sources . enqueue ( object Ġ: Ġretrofit 2 . Callback < Web Site > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Web Site > ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( base Context , Ġ" Failed ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < Web Site > ?, Ġresponse : ĠResponse < Web Site > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠList Source Adapter ( base Context , Ġresponse !!. body () !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler _ view _ source _ news . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPaper . book (). write (" cache ", ĠGson (). toJson ( response . body () !! )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe _ to _ refresh . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ } Ċ