@ file : Suppress (" UN CHECK ED _ CAST ") Ċ Ċ package Ġcom . ba el . d ads . lib . presentation . fragment Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Lifecycle . State . RE SU MED Ċ import Ġandroidx . lifecycle . flow With Lifecycle Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . navigation . Nav Directions Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . view binding . View Binding Ċ import Ġcom . ba el . d ads . lib . presentation . renderer . Renderer Initializer Ċ import Ġcom . ba el . d ads . lib . presentation . view model . Base ViewModel Ċ import Ġcom . ba el . d ads . lib . threading . Thread Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . google . android . material . sn ackbar . Snackbar . LENGTH _ SHORT Ċ import Ġkotlinx . coroutines . flow . launch In Ċ import Ġkotlinx . coroutines . flow . on Each Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠEr ick Sum argo Ġon Ġ 0 1 / 0 1 / 2 1 . Ċ Ġ*/ Ċ Ċ abstract Ġclass ĠBase Fragment < VB Ġ: ĠView Binding , ĠR , ĠE , ĠVM Ġ: ĠBase ViewModel < *, ĠE >> Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġrenderer Initializer : ĠRenderer Initializer < R , ĠVM > ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġthread : ĠThread ĊĊĠĠĠ Ġprotected Ġabstract Ġval ĠviewModel : ĠVM ĊĊĠĠĠ Ġprivate Ġvar Ġ_ view Binding : ĠVB ? Ġ= Ġnull ĊĊĠĠĠ Ġprotected Ġval Ġview Binding : ĠVB ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ view Binding !! ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ view Binding Ġ= Ġcreate View ( in flater , Ġcontainer ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ_ view Binding ?. root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġcreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?): ĠVB ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit Renderer () ĊĠĠĠĠĠĠĠ Ġobserve Event () ĊĊĠĠĠĠĠĠĠ Ġview Lifecycle Owner . lifecycle Scope . launch When Res umed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon View Loaded ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Renderer () Ġ{ ĊĠĠĠĠĠĠĠ Ġrenderer Initializer . init ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrenderer Ġ= Ġthis Ġas ĠR , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠviewModel ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve Event () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . event Flow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flow With Lifecycle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Ġ= Ġview Lifecycle Owner . lifecycle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Active State Ġ= ĠRES U MED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Each (:: action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. launch In ( scope Ġ= Ġview Lifecycle Owner . lifecycle Scope ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġsuspend Ġfun Ġon View Loaded ( savedInstanceState : ĠBundle ?) ĊĊĠĠĠ Ġabstract Ġsuspend Ġfun Ġaction ( event : ĠE ) ĊĊĠĠĠ Ġprotected Ġfun Ġnavigate ( direction : ĠNav Directions ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( direction ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġback () Ġ{ ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate Up () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġshow Message ( message : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġmessage Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( view Binding . root , Ġmessage , ĠLEN GTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ view Binding Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠ Ġ} Ċ } Ċ