package Ġcom . alf resco . content . viewer . text Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . webkit . Web Resource Request Ċ import Ġandroid . webkit . Web Resource Response Ċ import Ġandroid . webkit . WebView Ċ import Ġandroid . webkit . WebView Client Ċ import Ġandroidx . webkit . WebView Asset Loader Ċ import Ġcom . air bnb . mv rx . M aver icks View Ċ import Ġcom . air bnb . mv rx . Success Ċ import Ġcom . air bnb . mv rx . fragment ViewModel Ċ import Ġcom . air bnb . mv rx . with State Ċ import Ġcom . alf resco . content . viewer . common . Child Viewer Fragment Ċ import Ġcom . alf resco . kotlin . filename Ċ Ċ /** Ċ Ġ* ĠViewer Ġfor Ġdisplaying Ġplain Ġtext Ġbacked Ġby Ġa Ġ[ WebView ] Ċ Ġ*/ Ċ class ĠText Viewer Fragment Ġ: ĠChild Viewer Fragment ( R . layout . viewer _ text ), ĠM aver icks View Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠText Viewer ViewModel Ġby Ġfragment ViewModel () ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠwebView : ĠWebView ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ ĠwebView Ġ= Ġcreate WebView ( require Context (), Ġmake Asset Loader ()) ĊĠĠĠĠĠĠĠ ĠwebView . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġreturn ĠwebView ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġprivate Ġfun Ġcreate WebView ( context : ĠContext , Ġasset Loader : ĠWebView Asset Loader ) Ġ= ĊĠĠĠĠĠĠĠ ĠWebView ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( settings ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Support Zoom ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilt In Zoom Controls Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Zoom Controls Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Password Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave FormData Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock Network Load s Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallow Content Access Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallow File Access Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallow File Access FromFile URLs Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallow Universal Access FromFile URLs Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava Script Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Text Encoding Name Ġ= Ġ" utf - 8 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠwebView Client Ġ= Ġobject Ġ: ĠWebView Client () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Intercept Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview : ĠWebView ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest : ĠWeb Resource Request ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠWeb Resource Response ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( request ?. method Ġ!= Ġ" GET ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġasset Loader . should Intercept Request ( request . url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmake Asset Loader () Ġ= ĊĠĠĠĠĠĠĠ ĠWebView Asset Loader . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Path Handler ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWebView Asset Loader . Internal Storage Path Handler ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . doc Path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġoverride Ġfun Ġinvalidate () Ġ= Ġwith State ( viewModel ) Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( state . path Ġis ĠSuccess Ġ&& ĠwebView . url Ġ!= Ġstate . path ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠwebView . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilename Ġ= Ġstate . path ()?. filename () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠwebView . load Url (" https ://${ WebView Asset Loader . DEFAULT _ DOMAIN }/ $ filename ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Listener ?. on Content Loaded () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ