package Ġcom . example . news app . ui . fragments Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . opengl . Visibility Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . webkit . WebView Ċ import Ġandroid . webkit . WebView Client Ċ import Ġandroidx . navigation . fragment . nav Args Ċ import Ġcom . example . news app . R Ċ import Ġcom . example . news app . ui . News Activity Ċ import Ġcom . example . news app . ui . News ViewModel Ċ import Ġcom . example . news app . util . Utils Ċ import Ġcom . google . android . material . bottomnavigation . Bottom Navigation View Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġkotlinx . android . synt hetic . main . activity _ news .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ article .* Ċ Ċ class ĠArticle Fragment Ġ: ĠFragment ( R . layout . fragment _ article ) Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar ĠviewModel : ĠNews ViewModel ĊĠĠĠ Ġval Ġargs : ĠArticle Fragment Args Ġby Ġnav Args () ĊĠĠĠ Ġlateinit Ġvar Ġbottom NavigationBar : ĠBottom Navigation View ĊĊĠĠĠ Ġval ĠTAG Ġ= Ġ" Book marked Fragment " ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= Ġ( activity Ġas ĠNews Activity ). viewModel ĊĠĠĠĠĠĠĠ Ġbottom NavigationBar Ġ= Ġ( activity Ġas ĠNews Activity ). bottom Navigation View ĊĠĠĠĠĠĠĠ Ġbottom NavigationBar . visibility Ġ= ĠView . IN VISIBLE ĊĊĠĠĠĠĠĠĠ Ġval Ġarticle Ġ= Ġargs . article ĊĠĠĠĠĠĠĠ ĠwebView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠwebView Client Ġ= ĠWebView Client () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarticle . url ?. let Ġ{ Ġload Url ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . userAgent String Ġ= Ġ" Android " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsetup ProgressBar () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( article . id Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠwebView . setOn Scroll ChangeListener Ġ{ Ġv , Ġscroll X , Ġscroll Y , Ġold Scroll X , Ġold Scroll Y Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( scroll Y Ġ> Ġold Scroll Y Ġ&& Ġscroll Y Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfab . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( scroll Y Ġ< Ġold Scroll Y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfab . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfab . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtv Source Article . text Ġ= Ġarticle . source ?. name ĊĠĠĠĠĠĠĠ Ġtv Published At Article . text Ġ= Ġarticle . published At ?. let Ġ{ ĠUtils . dateTime Ago ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġtv Source Letter Article . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarticle . source ?. let Ġ{ ĠUtils . getFirst Letter Source ( it . name ). toString () Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . save Article ( article ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( view , Ġ" Article Ġsaved Ġsuccessfully ", ĠSn ackbar . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup ProgressBar () Ġ{ ĊĠĠĠĠĠĠĠ ĠwebView . web View Client Ġ= Ġobject Ġ: ĠWebView Client () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Override Url Loading ( view : ĠWebView ?, Ġurl : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Started ( view : ĠWebView ?, Ġurl : ĠString ?, Ġfav icon : ĠBitmap ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Page Started ( view , Ġurl , Ġfav icon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading WebView . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Finished ( view : ĠWebView ?, Ġurl : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Page Finished ( view , Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading WebView . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġe . message . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }