package Ġcom . sher az . list repos . internal Ċ Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġcom . sher az . list repos . utils . Logger Ċ import Ġjava . io . IOException ĊĊ Ċ /** Ċ Ġ* ĠAppCompatActivity ĠExtension Ġfunctions Ċ Ġ*/ Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠFragment > ĠAppCompatActivity . find Fragment By Tag ( tag : ĠString ) Ġ: ĠT ? Ġ= Ġsupport FragmentManager . find Fragment By Tag ( tag ) Ġas ? ĠT Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠFragment > ĠAppCompatActivity . find Fragment By Tag With Auto Dismiss ( tag : ĠString ) Ġ: ĠT ? Ġ{ ĊĠĠĠ Ġval Ġfragment Ġ= Ġsupport FragmentManager . find Fragment By Tag ( tag ) Ġas ? ĠT ĊĠĠĠ Ġwhen Ġ( fragment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠDialog Fragment Ġ-> Ġfragment . dismiss () ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfragment Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠV Ġ: ĠViewModel > ĠAppCompatActivity . bind ViewModel ( viewModel Factory : ĠViewModel Provider . Factory ) Ġ= Ġlazy Ġ{ ĠViewModel Providers . of ( this , ĠviewModel Factory ). get ( V :: class . java ) Ġ} ĊĊ Ċ /** Ċ Ġ* ĠNetwork ĠUtility ĠExtension Ġfunctions ĠĠĊ Ġ*/ Ċ suspend Ġfun Ġsafe Api Call ( network Block : Ġsuspend Ġ() Ġ-> ĠUnit , Ġfailure Block : Ġ( Exception ) Ġ-> ĠUnit , ĠerrorMessage : ĠString ) Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġnetwork Block () ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAn Ġexception Ġwas Ġthrown Ġwhen Ġcalling Ġthe ĠAPI Ġso Ġwe 're Ġconverting Ġthis Ġto Ġan ĠIOException Ċ // ĠĠĠĠĠĠĠ ĠLogger . e (" safe Api Call ", Ġ" safe Api Call (): ĠException Ġoccurred , ĠError Ġ=> Ġ" Ġ+ Ġe . message ) ĊĠĠĠĠĠĠĠ Ġfailure Block ( IOException ( errorMessage , Ġe )) ĊĠĠĠ Ġ} Ċ }