package Ġio . github . g math i . no vel library . fragment Ċ Ċ import ĠCloud Fl are By Pass er Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . webkit . Cookie Manager Ċ import Ġandroid . webkit . WebView Ċ import Ġandroid . webkit . WebView Client Ċ import Ġandroid . widget . Toast Ċ import Ġco . metal ab . async await . async Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġio . github . g math i . no vel library . R Ċ import Ġio . github . g math i . no vel library . activity . Reader DB Pager Activity Ċ import Ġio . github . g math i . no vel library . clean er . Html Helper Ċ import Ġio . github . g math i . no vel library . data Center Ċ import Ġio . github . g math i . no vel library . database . get Web Page Ċ import Ġio . github . g math i . no vel library . database . get Web Page Settings Ċ import Ġio . github . g math i . no vel library . database . get Web Pages Count Ċ import Ġio . github . g math i . no vel library . database . update Web Page Settings Ċ import Ġio . github . g math i . no vel library . db Helper Ċ import Ġio . github . g math i . no vel library . model . Reader Settings Event Ċ import Ġio . github . g math i . no vel library . model . Web Page Ċ import Ġio . github . g math i . no vel library . model . Web Page Settings Ċ import Ġio . github . g math i . no vel library . network . Host Names Ċ import Ġio . github . g math i . no vel library . network . No vel Api Ċ import Ġio . github . g math i . no vel library . util . Constants Ċ import Ġio . github . g math i . no vel library . util . Constants . FILE _ PROTOCOL Ċ import Ġio . github . g math i . no vel library . util . Logs Ċ import Ġio . github . g math i . no vel library . util . Utils Ċ import Ġkotlinx . android . synt hetic . main . activity _ reader _ pager .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ reader .* Ċ import Ġokhttp 3 . Http Url Ċ import Ġorg . green robot . event bus . EventBus Ċ import Ġorg . green robot . event bus . Subscribe Ċ import Ġorg . green robot . event bus . Thread Mode Ċ import Ġorg . js oup . J soup Ċ import Ġokhttp 3 . Http Url . Companion . to Http Url OrNull Ċ import Ġorg . js oup . nodes . Document Ċ import Ġjava . io . File ĊĊ Ċ class ĠWeb Page DB Fragment Ġ: ĠBase Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġweb Page : ĠWeb Page ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġweb Page Settings : ĠWeb Page Settings ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġdoc : ĠDocument ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġhistory : ĠArrayList < Web Page Settings > Ġ= ĠArrayList () ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠNO VEL _ ID Ġ= Ġ" no vel Id " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSOURCE _ ID Ġ= Ġ" source Id " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠOFFSET Ġ= Ġ" offset " ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( no vel Id : ĠLong , Ġsource Id : ĠLong , Ġoffset : ĠInt ): ĠWeb Page DB Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠWeb Page DB Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . put Long ( NO VEL _ ID , Ġnovel Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . put Long ( SOURCE _ ID , Ġsource Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs . put Int ( OFFSET , Ġoffset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater . inflate ( R . layout . fragment _ reader , Ġcontainer , Ġfalse ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). register ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity Ġas ? ĠReader DB Pager Activity Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġ// ĠShow Ġthe Ġmenu Ġbutton Ġon Ġscroll ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M Ġ&& Ġdata Center . is Reader Mode Button Visible ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreader WebView . setOn Scroll ChangeListener Ġ{ Ġ_, Ġ_, Ġscroll Y , Ġ_, Ġold Scroll Y Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( scroll Y Ġ> Ġold Scroll Y Ġ&& Ġscroll Y Ġ> Ġ 0 ) Ġactivity . menu Nav . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old Scroll Y Ġ- Ġscroll Y Ġ> ĠConstants . SCROLL _ LENGTH ) Ġactivity . menu Nav . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset WebView () ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġdata Ġfrom Ġargs Ġor Ġsaved Instance Ġin Ġcase Ġof Ġdevice Ġrotation ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ!= Ġnull Ġ&& ĠsavedInstanceState . containsKey (" web Page ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb Page Ġ= ĠsavedInstanceState . get Serializable (" web Page ") Ġas ĠWeb Page ĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb Page Settings Ġ= ĠsavedInstanceState . get Serializable (" web Page Settings ") Ġas ĠWeb Page Settings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhistory Ġ= ĠsavedInstanceState . get Serializable (" history ") Ġas ĠArrayList < Web Page Settings > ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnovel Id Ġ= Ġarguments !!. getLong ( NO VEL _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Id Ġ= Ġarguments !!. getLong ( SOURCE _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= Ġif Ġ( data Center . j ap Swipe ) Ġdb Helper . get Web Pages Count ( no vel Id , Ġsource Id ) Ġ- Ġarguments !!. getInt ( OFFSET ) Ġ- Ġ 1 Ġelse Ġarguments !!. getInt ( OFFSET ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Web Page Ġ= Ġdb Helper . get Web Page ( no vel Id , Ġsource Id , Ġoffset ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( intent Web Page Ġ== Ġnull ) Ġactivity . finish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġweb Page Ġ= Ġintent Web Page ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( web Page ?. url Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweb Page Settings Ġ= Ġdb Helper . get Web Page Settings ( web Page !!. url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . finish () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠLoad Ġdata Ġfrom Ġweb Page Ġinto ĠwebView ĊĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . setOn Refresh Listener Ġ{ Ġload Data ( true ) Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck For Cloud Fl are () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCloud Fl are By Pass er . check ( activity !! , Ġ" no vel updates . com ") Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Ġ== ĠCloud Fl are By Pass er . State . CREATED Ġ|| Ġstate Ġ== ĠCloud Fl are By Pass er . State . UN NE EDED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġ" Cloud ĠFl are ĠB yp assed ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreader WebView . load Url (" about : blank ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreader WebView . clear History () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Javascript Interface ", Ġ" Add Javascript Interface ") ĊĠĠĠ Ġprivate Ġfun Ġset WebView () Ġ{ ĊĠĠĠĠĠĠĠ Ġreader WebView . is Vertical ScrollBar Enabled Ġ= Ġdata Center . show Reader Scroll ĊĠĠĠĠĠĠĠ Ġreader WebView . settings . java Script Enabled Ġ= Ġ! data Center . javascript Disabled ĊĠĠĠĠĠĠĠ Ġreader WebView . set BackgroundColor ( Color . arg b ( 1 , Ġ 0 , Ġ 0 , Ġ 0 )) ĊĠĠĠĠĠĠĠ Ġreader WebView . add Javascript Interface ( this , Ġ" HT M LO UT ") ĊĠĠĠĠĠĠĠ Ġreader WebView . web View Client Ġ= Ġobject Ġ: ĠWebView Client () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Over riding Deprecated Member ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Override Url Loading ( view : ĠWebView ?, Ġurl : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// First Ġpage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url Ġ== Ġdoc ?. location ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url Ġ== Ġ" abc :// retry _ internal ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck For Cloud Fl are () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Add Ġcurrent Ġpage Ġto Ġhistory , Ġif Ġit Ġwas Ġnot Ġalready Ġadded Ġor Ġif Ġthe Ġhistory Ġis Ġempty Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( history . isEmpty ()) Ġhistory . add ( web Page !! ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( history . last () Ġ!= Ġweb Page ) Ġhistory . add ( web Page !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Handle Ġthe Ġknown Ġlinks Ġlike Ġnext Ġand Ġprevious Ġchapter Ġif Ġdownloaded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( check Url ( url )) Ġreturn Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Center . reader Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl ?. let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// If Ġurl Ġis Ġan Ġimage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url . endsWith (". jpg ", Ġtrue ) Ġ|| Ġurl . endsWith (". jpeg ", Ġtrue ) Ġ|| Ġurl . endsWith (". png ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse Ġ// default Ġloading ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Web Page ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// If Ġeverything Ġelse Ġfails , Ġdefault Ġloading Ġof Ġthe ĠWebView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Finished ( view : ĠWebView ?, Ġurl : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcookies Ġ= ĠCookie Manager . getInstance (). get Cookie ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogs . debug (" WebView DB Fragment ", Ġ" All Ġthe Ġcookies Map Ġin Ġa Ġstring : Ġ$ cookies ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cookies Ġ!= Ġnull Ġ&& Ġcookies . contains (" cf du id ") Ġ&& Ġcookies . contains (" cf _ clear ance ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap : ĠHashMap < String , ĠString > Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcookies Array Ġ= Ġcookies . split ("; Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcookies Array . forEach Ġ{ Ġcookie Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcookie Split Ġ= Ġcookie . split (" =") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ cookie Split [ 0 ]] Ġ= Ġcookie Split [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweb Page Settings ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . metaData . containsKey ( Constants . MetaData Keys . SCROLL _ POSITION )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. scrollTo ( 0 , Ġ( it . metaData [ Constants . MetaData Keys . SCROLL _ POSITION ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ" 0 "). toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// reader WebView . setOn Scroll ChangeListener Ġ{ ĠwebView , Ġi , Ġi , Ġi , Ġi Ġ-> Ġ Ġ} ĊĠĠĠĠĠĠĠ Ġchange Text Size () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Data ( live From Web : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdoc Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġreader WebView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Url (" about : blank ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( web Page Settings ?. filePath Ġ!= Ġnull Ġ&& Ġ! live From Web ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload FromFile () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload From Web () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload FromFile () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġinternal FilePath Ġ= Ġ"$ FILE _ PROTOCOL ${ web Page Settings ?. filePath }" ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠFile ( internal FilePath . substring ( FILE _ PROTOCOL . length )) ĊĠĠĠĠĠĠĠ Ġif Ġ(! input . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload From Web () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġweb Page Settings !!. redirect ed Url Ġ?: Ġinternal FilePath ĊĊĠĠĠĠĠĠĠ Ġdoc Ġ= ĠJ soup . parse ( input , Ġ" UTF - 8 ", Ġurl ) ĊĠĠĠĠĠĠĠ Ġdoc ?. let Ġ{ Ġdoc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Center . reader Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclean Document ( doc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Created Document () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload From Web () Ġ{ ĊĠĠĠĠĠĠĠ Ġswipe Refresh Layout . isEnabled Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ// Check ĠReader ĠMode ĊĠĠĠĠĠĠĠ Ġif Ġ(! data Center . reader Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreader WebView . load Url ( web Page ?. url ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Download Ġthe Ġpage Ġand Ġclean Ġit Ġto Ġmake Ġit Ġreadable ! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasync . cancel All () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Web Page ( web Page ?. url ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Created Document () Ġ{ ĊĠĠĠĠĠĠĠ Ġdoc ?. body ()?. append ("< p >< a Ġhref =\" # \"> *** ĠGo Ġto Ġtop Ġof Ġpage Ġ*** </ a ></ p >") ĊĠĠĠĠĠĠĠ Ġweb Page Settings ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreader WebView . load Data With Base URL ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . filePath Ġ!= Ġnull ) Ġ"$ FILE _ PROTOCOL ${ it . filePath }" Ġelse Ġdoc ?. location (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdoc ?. outer Html (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" text / html ", Ġ" UTF - 8 ", Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġdownload Web Page ( url : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( url Ġ== Ġnull Ġ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġprogress Layout . show Loading () ĊĊĠĠĠĠĠĠĠ Ġ// If Ġno Ġnetwork ĊĠĠĠĠĠĠĠ Ġif Ġ(! Utils . isConnected To Network ( activity )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Layout . show Error ( Context Compat . get Drawable ( activity !! , ĠR . drawable . ic _ warning _ white _ vector ), ĠgetString ( R . string . no _ internet ), ĠgetString ( R . string . try _ again )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Web Page ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġasync Ġdownload @{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdoc Ġ= Ġawait Ġ{ ĠNo vel Api . getDocument With UserAgent ( url ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( doc Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( doc !!. location (). contains (" rss book ") Ġ&& Ġdoc !!. location (). contains ( Host Names . Q ID IAN )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdoc Ġ= Ġawait Ġ{ ĠNo vel Api . getDocument With UserAgent ( doc !!. location (). replace (" rss book ", Ġ" book ")) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( doc !!. location (). contains ("/ nu /") Ġ&& Ġdoc !!. location (). contains ( Host Names . FL Y ING _ LINES )) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdoc Ġ= Ġawait Ġ{ ĠNo vel Api . getDocument With UserAgent ( doc !!. location (). replace ("/ nu /", Ġ"/ chapter / ")) Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// If Ġdocument Ġfails Ġto Ġload Ġand Ġthe Ġfragment Ġis Ġstill Ġalive ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( doc Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Res umed Ġ&& Ġ! is Removing Ġ&& Ġ! is Detached ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Layout . show Error ( Context Compat . get Drawable ( activity !! , ĠR . drawable . ic _ warning _ white _ vector ), ĠgetString ( R . string . failed _ to _ load _ url ), ĠgetString ( R . string . try _ again )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Web Page ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ download ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Update Ġthe Ġrelative Ġurls Ġwith Ġthe Ġabsolute Ġurls Ġfor Ġthe Ġimages Ġand Ġlinks ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdoc ?. getElementsBy Tag (" img ") ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . has Attr (" src ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . attr (" src ", Ġit . abs Url (" src ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdoc ?. getElementsBy Tag (" a ") ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . has Attr (" href ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . attr (" href ", Ġit . abs Url (" href ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠProcess Ġthe Ġdocument Ġand Ġload Ġit Ġonto Ġthe ĠwebView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdoc ?. let Ġ{ Ġdoc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhtml Helper Ġ= ĠHtml Helper . getInstance ( doc ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhtml Helper . remove JS ( doc ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhtml Helper . additional Processing ( doc ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhtml Helper . toggle Theme ( data Center . is Dark Theme , Ġdoc ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Center . enable Cluster Pages ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet ĠURL Ġdomain Ġname Ġof Ġthe Ġchapter Ġprovider ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠbaseUrl Domain Ġ= ĠgetUrl Domain ( doc . location ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd Ġthe Ġcontent Ġof Ġthe Ġlinks Ġto Ġthe Ġdoc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhref Elements Ġ= Ġdoc . body (). getElementsBy Tag (" a ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhref Elements ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . has Attr (" href ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . has Attr (" title ") Ġ&& Ġit . attr (" title "). contains (" Click Ġto Ġshare ", Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ forEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlinked Url Ġ= Ġit . attr (" href ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif ĠURL Ġis Ġfrom Ġchapter Ġprovider ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Domain Ġ= ĠgetUrl Domain ( linked Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url Domain Ġ== ĠbaseUrl Domain ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġother Doc Ġ= Ġawait Ġ{ ĠNo vel Api . getDocument With UserAgent ( linked Url ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhelper Ġ= ĠHtml Helper . getInstance ( other Doc ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhelper . remove JS ( other Doc ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhelper . additional Processing ( other Doc ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdoc . body (). append ( other Doc . body (). html ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Created Document () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Layout . show Content () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Res umed Ġ&& Ġ! is Removing Ġ&& Ġ! is Detached ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Layout . show Error ( Context Compat . get Drawable ( activity !! , ĠR . drawable . ic _ warning _ white _ vector ), ĠgetString ( R . string . failed _ to _ load _ url ), ĠgetString ( R . string . try _ again )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Web Page ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Text Size () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= Ġreader WebView . settings ĊĠĠĠĠĠĠĠ Ġsettings . text Zoom Ġ= Ġ( data Center . text Size Ġ+ Ġ 5 0 ) Ġ* Ġ 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetUrl () Ġ= Ġweb Page ?. url ĊĊĠĠĠ Ġprivate Ġfun ĠgetUrl Domain ( url : ĠString ? Ġ= ĠgetUrl ()): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġurl ?. let Ġ{ Ġurl . to Http Url OrNull ()?. top Private Domain () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgo Back () Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Page Settings Ġ= Ġhistory . last () ĊĠĠĠĠĠĠĠ Ġhistory . remove ( web Page Settings !! ) ĊĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclean Document ( doc : ĠDocument ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Layout . show Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreader WebView . settings . java Script Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhtml Helper Ġ= ĠHtml Helper . getInstance ( doc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhtml Helper . remove JS ( doc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhtml Helper . additional Processing ( doc ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhtml Helper . toggle Theme ( data Center . is Dark Theme , Ġdoc ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Center . enable Cluster Pages ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd Ġthe Ġcontent Ġof Ġthe Ġlinks Ġto Ġthe Ġdoc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( web Page Settings !!. metaData . containsKey ( Constants . MetaData Keys . OTHER _ LINK ED _ WEB _ PAGES )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlinks : ĠArrayList < String > Ġ= ĠGson (). fromJson ( web Page Settings !!. metaData [ Constants . MetaData Keys . OTHER _ LINK ED _ WEB _ PAGES _ SETTINGS ], Ġobject Ġ: ĠType Token < java . util . ArrayList < String >>() Ġ{} . type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinks . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Web Page Settings Ġ= Ġdb Helper . get Web Page Settings ( it ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinternal FilePath Ġ= Ġ"$ FILE _ PROTOCOL ${ temp Web Page Settings . filePath }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠFile ( internal FilePath . substring ( 7 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġurl Ġ= Ġtemp Web Page Settings . redirect ed Url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url Ġ== Ġnull ) Ġurl Ġ= Ġinternal FilePath ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġother Doc Ġ= ĠJ soup . parse ( input , Ġ" UTF - 8 ", Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( other Doc Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhelper Ġ= ĠHtml Helper . getInstance ( other Doc ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhelper . remove JS ( other Doc ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhelper . additional Processing ( other Doc ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdoc . body (). append ( other Doc . body (). html ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Layout . show Content () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġapply Theme () Ġ{ ĊĠĠĠĠĠĠĠ Ġdoc ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHtml Helper . getInstance ( it ). toggle Theme ( data Center . is Dark Theme , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Created Document () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Url ( url : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( url Ġ== Ġnull ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( web Page Settings ?. metaData ?. containsKey ( Constants . MetaData Keys . OTHER _ LINK ED _ WEB _ PAGES ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlinks : ĠArrayList < String > Ġ= ĠGson (). fromJson ( web Page Settings !!. metaData [ Constants . MetaData Keys . OTHER _ LINK ED _ WEB _ PAGES ], Ġobject Ġ: ĠType Token < java . util . ArrayList < String >>() Ġ{} . type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinks . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Web Page Settings Ġ= Ġdb Helper . get Web Page Settings ( it ) Ġ?: Ġreturn @ forEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== Ġurl Ġ|| Ġ( temp Web Page Settings . redirect ed Url Ġ!= Ġnull Ġ&& Ġtemp Web Page Settings . redirect ed Url Ġ== Ġurl )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhistory . add ( temp Web Page Settings ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweb Page Settings Ġ= Ġtemp Web Page Settings ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ check Url Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġreader Activity Ġ= Ġ( activity Ġas ĠReader DB Pager Activity ?) Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġreader Activity . check Url ( url ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Subscribe ( thread Mode Ġ= ĠThread Mode . MAIN ) ĊĠĠĠ Ġfun Ġon Reader Settings Changed ( event : ĠReader Settings Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( event . setting ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReader Settings Event . N IGHT _ MODE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Theme () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReader Settings Event . READ ER _ MODE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreader WebView . load Url (" about : blank ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreader WebView . clear History () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReader Settings Event . TEXT _ SIZE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Text Size () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReader Settings Event . JAVA _ SCRIPT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreader WebView . settings . java Script Enabled Ġ= Ġ! data Center . javascript Disabled ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReader Settings Event . FONT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġweb Page Settings ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . metaData [ Constants . MetaData Keys . SCROLL _ POSITION ] Ġ= Ġreader WebView . scroll Y . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb Helper . update Web Page Settings ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). unregister ( this ) ĊĠĠĠĠĠĠĠ Ġasync . cancel All () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġif Ġ( web Page Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout State . put Serializable (" web Page ", Ġweb Page ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout State . put Serializable (" web Page Settings ", Ġweb Page Settings ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġout State . put Serializable (" history ", Ġhistory ) ĊĠĠĠ Ġ} Ċ } Ċ