package Ġcom . b aka 3 k . architecture . clean . base . view model Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġkotlinx . coroutines . Coroutine ExceptionHandler Ċ Ċ open Ġabstract Ġclass ĠBase ViewModel < S Ġ: ĠAny > Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġval Ġstore Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠView State Store ( this . init State ()) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġcurrent State : ĠS ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġstore . state ĊĊĠĠĠ Ġprivate Ġval Ġ_ error Live Event : ĠMutable LiveData < Throwable > Ġ= ĠMutable LiveData < Throwable >() ĊĊĠĠĠ Ġval Ġerror Live Event : ĠLive Data < Throwable > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ error Live Event ĊĊĠĠĠ Ġprotected Ġval Ġhandler Exception Ġ= ĠCor outine ExceptionHandler Ġ{ Ġ_, Ġexception Ġ-> ĊĠĠĠĠĠĠĠ ĠLog . e (" Base ViewModel ", Ġ" Coroutine ExceptionHandler Ġgot Ġ$ exception ") ĊĠĠĠĠĠĠĠ Ġdispatch Error ( exception ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġdispatch Error ( error : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ error Live Event . value Ġ= Ġerror ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġdispatch State ( state : ĠS ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstore . dispatch State ( state Ġ= Ġstate ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġabstract Ġfun Ġinit State (): ĠS ĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d (" test "," on Cle ared ") ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠ Ġ} Ċ } Ċ