package Ġorg . ire ader . domain . use _ cases . remote Ċ Ċ import Ġorg . ire ader . common _ extensions . async . with IO Context Ċ import Ġorg . ire ader . common _ models . entities . Catalog Local Ċ import Ġorg . ire ader . common _ models . entities . Chapter Ċ import Ġorg . ire ader . common _ models . entities . to Chapter Info Ċ import Ġorg . ire ader . common _ resources . Ui Text Ċ import Ġorg . ire ader . core . exceptions . Source NotFoundException Ċ import Ġorg . ire ader . core _ api . source . model . Command List Ċ import Ġorg . ire ader . core _ api . source . model . Text Ċ import Ġorg . ire ader . core _ ui . exception Handler Ċ import Ġorg . ire ader . domain . R Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠGet Remote Reading Content Ġ@ Inject Ġconstructor () Ġ{ ĊĠĠĠ Ġsuspend Ġoperator Ġfun Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġchapter : ĠChapter , ĊĠĠĠĠĠĠĠ Ġcatalog : ĠCatalog Local ?, ĊĠĠĠĠĠĠĠ ĠonError : Ġsuspend Ġ( message : ĠUi Text ?) Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠ ĠonSuccess : Ġsuspend Ġ( chapter : ĠChapter ) Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠ Ġcommands : Command List Ġ= Ġempty List () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsource Ġ= Ġcatalog ?. source Ġ?: Ġthrow ĠSource NotFoundException () ĊĠĠĠĠĠĠĠ Ġwith IO Context Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkotlin . run Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorg . ire ader . core _ api . log . Log . debug (" Tim ber : ĠGet Remote Reading Content UseCase Ġwas ĠCalled ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġval Ġpage Ġ= Ġsource . getPage List ( chapter . to Chapter Info ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġsource . getPage List ( chapter . to Chapter Info (), commands ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠText Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent . add ( it . text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( content . join ToString (). isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError ( Ui Text . String Resource ( R . string . cant _ get _ content )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorg . ire ader . core _ api . log . Log . debug (" Tim ber : ĠGet Remote Reading Content UseCase Ġwas ĠFinished ĠSuccessfully ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess ( chapter . copy ( content Ġ= Ġcontent . filter Ġ{ Ġit . isNotBlank () Ġ}, Ġdate Fetch Ġ= Ġorg . ire ader . common _ extensions . currentTime To Long ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError ( exception Handler ( e )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. getOrElse Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError ( exception Handler ( e )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ