package Ġcom . fmt . github . base . activity Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . fmt . github . base . view model . Base ViewModel Ċ import Ġcom . fmt . github . base . view model . Error State Ċ import Ġcom . fmt . github . base . view model . Load State Ċ import Ġcom . fmt . github . base . view model . Success State Ċ import Ġcom . fmt . github . ext . error Toast Ċ Ċ abstract Ġclass ĠBase V MA ct ivity Ġ: ĠAppCompatActivity (){ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Content Layout () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġinit ViewModel Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġget ViewModel (). let Ġ{ Ġbase ViewModel Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase ViewModel . m State LiveData . observe ( this , ĠObserver Ġ{ Ġstate Action State Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( state Action State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLoad State Ġ-> Ġshow Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSuccess State Ġ-> Ġdismiss Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠError State Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Action State . message ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Toast ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġget Layout Id (): ĠInt ĊĊĠĠĠ Ġabstract Ġfun Ġinit View () ĊĊĠĠĠ Ġabstract Ġfun Ġget ViewModel (): ĠBase ViewModel ĊĊĠĠĠ Ġopen Ġfun Ġset Content Layout () Ġ{ ĊĠĠĠĠĠĠĠ ĠsetContentView ( get Layout Id ()) ĊĠĠĠĠĠĠĠ Ġinit ViewModel Action () ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġinit Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġinit Data () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġshow Loading () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġdismiss Loading () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġhandle Error () Ġ{ ĊĊĠĠĠ Ġ} Ċ }