/* Ċ Ġ* ĠCopyright Ġ 2 0 2 2 . ĠExplo re Ġin ĠH MS . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġcom . h ms . explo rel and marks . ui . base Ċ Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġcom . h ms . explo rel and marks . databinding . Layout Loading Binding Ċ import Ġcom . h ms . explo rel and marks . utils . Base Event State Ċ import Ġcom . h ms . explo rel and marks . utils . State Ċ import Ġcom . h ms . explo rel and marks . utils . extensions . get ViewModel By Sharing Status Ċ import Ġcom . h ms . explo rel and marks . utils . extensions . g one Ċ import Ġcom . h ms . explo rel and marks . utils . extensions . show Ċ import Ġcom . h ms . explo rel and marks . utils . extensions . trigger UIState By Ob serving State LiveData Ċ import Ġkotlin . reflect . K Class Ċ Ċ abstract Ġclass ĠBase Bottom Sheet Fragment With ViewModel < VM Ġ: ĠBase ViewModel , ĠV DB Ġ: ĠView Data Binding >( ĊĠĠĠ ĠviewModel Class : ĠK Class < VM > Ċ ) Ġ: ĠBase Bottom Sheet Fragment < V DB >() Ġ{ ĊĊĠĠĠ Ġprotected Ġval Ġm ViewModel Ġby Ġlazy Ġ{ Ġget ViewModel By Sharing Status ( viewModel Class , Ġwill ViewModel Be Shared ()) Ġ} ĊĠĠĠ Ġopen Ġfun Ġwill ViewModel Be Shared () Ġ= Ġfalse ĊĊĠĠĠ Ġfun Ġ< T > Ġobserve State LiveData And Do On Success ( ĊĠĠĠĠĠĠĠ Ġlive Data : ĠLive Data < State < T >>, ĊĠĠĠĠĠĠĠ Ġon Failure Callback : Ġ(( errorCode : ĠString ?, ĠerrorMessage : ĠString ?, Ġevent State : ĠBase Event State ?) Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ ĠonSuccess Callback : Ġ(( data : ĠT ?) Ġ-> ĠUnit )? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrigger UIState By Ob serving State LiveData ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlive Data , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewModel . java Class . simple Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure Callback , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ:: show Loading , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ:: hide Loading , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Callback Ġ= ĠonSuccess Callback ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġm Loading View : ĠLayout Loading Binding ? Ġ= Ġnull ĊĊĠĠĠ Ġprotected Ġfun Ġhide Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Loading View ?. root ?. g one () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġshow Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Loading View Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Loading View ?. root ?. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Loading View Ġ= ĠLayout Loading Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ Ġdialog ?. window ?. add ContentView ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Loading View ?. root , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ