package Ġcom . learn . todo app . presentation . base Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . learn . todo app . R Ċ import Ġcom . learn . todo app . presentation . utils . models . Toast Message Ċ import Ġkotlinx . coroutines . Coroutine ExceptionHandler Ċ import Ġjava . net . Unknown Host Exception Ċ Ċ abstract Ġclass ĠBase ViewModel Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġprotected Ġval Ġhandler Ġ= ĠCor outine ExceptionHandler Ġ{ Ġ_, Ġexception Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġ" Ca ught Ġ$ exception " ĊĠĠĠĠĠĠĠ Ġhide Progress () ĊĠĠĠĠĠĠĠ Ġif Ġ( exception Ġis ĠUnknown Host Exception ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast ( toast Res Ġ= ĠR . string . check _ internet ) ĊĠĠĠĠĠĠĠ Ġelse Ġshow Toast ( toast Msg Ġ= Ġmsg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtoast Message LiveData Ġ= ĠMutable LiveData < Toast Message >() ĊĠĠĠ Ġprivate Ġval ĠprogressBar LiveData Ġ= ĠMutable LiveData < Boolean >() ĊĊĠĠĠ Ġfun Ġget Toast LiveData (): ĠLive Data < Toast Message > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtoast Message LiveData ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget ProgressBar LiveData (): ĠLive Data < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠprogressBar LiveData ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġshow Toast ( toast Msg : ĠString ? Ġ= Ġnull , Ġtoast Res : ĠInt ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtoast Message LiveData . post Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast Message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġtoast Msg , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Res Ġ= Ġtoast Res ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġshow Progress () Ġ{ ĊĠĠĠĠĠĠĠ ĠprogressBar LiveData . post Value ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġhide Progress () Ġ{ ĊĠĠĠĠĠĠĠ ĠprogressBar LiveData . post Value ( false ) ĊĠĠĠ Ġ} Ċ }