package Ġhost . exp . exponent . experience Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġhost . exp . exponent . Constants Ċ import Ġhost . exp . exponent . analytics . Analytics Ċ import Ġhost . exp . exponent . analytics . EX L Ċ import Ġhost . exp . expo view . R Ċ import Ġhost . exp . expo view . databinding . Error Fragment Binding Ċ import Ġorg . json . JSONObject Ċ Ċ class ĠError Fragment Ġ: ĠFragment () Ġ{ ĊĠ Ġprivate Ġvar Ġ_ binding : ĠError Fragment Binding ? Ġ= Ġnull ĊĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĊĠ Ġprivate Ġfun ĠonClick Home () Ġ{ ĊĠĠĠ Ġval Ġactivity : ĠActivity ? Ġ= Ġactivity ĊĠĠĠ Ġif Ġ( activity Ġis ĠError Activity ) Ġ{ ĊĠĠĠĠĠ Ġactivity . onClick Home () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠonClick Reload () Ġ{ ĊĠĠĠ Ġval Ġactivity : ĠActivity ? Ġ= Ġactivity ĊĠĠĠ Ġif Ġ( activity Ġis ĠError Activity ) Ġ{ ĊĠĠĠĠĠ Ġactivity . onClick Reload () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠonClick View Error Log () Ġ{ ĊĠĠĠ Ġval Ġactivity : ĠActivity ? Ġ= Ġactivity ĊĠĠĠ Ġif Ġ( activity Ġis ĠError Activity ) Ġ{ ĊĠĠĠĠĠ Ġactivity . onClick View Error Log () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠ Ġ): ĠView Ġ{ ĊĠĠĠ Ġ_ binding Ġ= ĠError Fragment Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĊĠĠĠ Ġbinding . home Button . setOnClickListener Ġ{ ĠonClick Home () Ġ} ĊĠĠĠ Ġbinding . reload Button . setOnClickListener Ġ{ ĠonClick Reload () Ġ} ĊĠĠĠ Ġbinding . view Error Log . setOnClickListener Ġ{ ĠonClick View Error Log () Ġ} ĊĊĠĠĠ Ġval Ġbundle Ġ= Ġarguments ĊĠĠĠ Ġval Ġis Debug Mode Enabled Ġ= Ġbundle !!. getBoolean ( Error Activity . DEBUG _ MODE _ KEY ) ĊĠĠĠ Ġval Ġuser ErrorMessage Ġ= Ġbundle . getString ( Error Activity . USER _ ERROR _ MESSAGE _ KEY ) ĊĠĠĠ Ġval Ġdeveloper ErrorMessage Ġ= Ġbundle . getString ( Error Activity . DE VELO PER _ ERROR _ MESSAGE _ KEY ) ĊĠĠĠ Ġvar Ġdefault ErrorMessage Ġ= Ġuser ErrorMessage ĊĊĠĠĠ Ġval Ġmanifest Url Ġ= Ġbundle . getString ( Error Activity . MAN IFEST _ URL _ KEY ) ĊĠĠĠ Ġval Ġis Home Error Ġ= Ġbundle . getBoolean ( Error Activity . IS _ HOME _ KEY , Ġfalse ) ĊĠĠĠ Ġval Ġis Shell App Ġ= Ġmanifest Url Ġ!= Ġnull Ġ&& Ġmanifest Url Ġ== ĠConstants . INITIAL _ URL ĊĊĠĠĠ Ġval Ġuser Facing ErrorMessage Ġ= Ġif Ġ( is Shell App ) Ġ{ ĊĠĠĠĠĠ ĠgetString ( R . string . error _ default _ shell ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ ĠgetString ( R . string . error _ default _ client ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( default ErrorMessage Ġ== Ġnull Ġ|| Ġdefault ErrorMessage . isEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġdefault ErrorMessage Ġ= Ġif Ġ( isDebug Mode Enabled ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdeveloper ErrorMessage ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġuser Facing ErrorMessage ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġval Ġevent Properties Ġ= ĠJSONObject (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġput ( Analytics . USER _ ERROR _ MESSAGE , Ġuser ErrorMessage ) ĊĠĠĠĠĠĠĠ Ġput ( Analytics . DE VELO PER _ ERROR _ MESSAGE , Ġdeveloper ErrorMessage ) ĊĠĠĠĠĠĠĠ Ġput ( Analytics . MAN IFEST _ URL , Ġmanifest Url ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠAnalytics . log Event ( Analytics . Analytics Event . ERROR _ SCREEN , Ġevent Properties ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠ ĠEX L . e ( TAG , Ġe . message ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( is Home Error Ġ|| Ġmanifest Url Ġ== Ġnull Ġ|| Ġmanifest Url Ġ== ĠConstants . INITIAL _ URL ) Ġ{ ĊĠĠĠĠĠ Ġ// ĠCannot Ġgo Ġhome Ġin Ġany Ġof Ġthese Ġcases ĊĠĠĠĠĠ Ġbinding . home Button . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġbinding . errorMessage . text Ġ= Ġdefault ErrorMessage ĊĊĠĠĠ ĠEX L . e ( TAG , Ġ" Error Activity Ġmessage : Ġ$ default ErrorMessage ") ĊĊĠĠĠ Ġreturn Ġbinding . root ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠError Fragment :: class . java . simple Name ĊĠ Ġ} Ċ } Ċ