package Ġcom . far ma . p oc . core . base Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Handler Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . compose . material . Sca ffold State Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . far ma . p oc . R Ċ import Ġcom . far ma . p oc . core . navigation . Router Navigation Ċ import Ġcom . far ma . p oc . core . store . DataStore Config Ċ import Ġcom . far ma . p oc . core . utils . comp os ables . Composable Utils Ċ import Ġcom . far ma . p oc . core . utils . enums . Duration Sn ackBar Enum Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ Ċ open Ġclass ĠBase ViewModel ( private Ġval Ġcontext : ĠContext ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġvar Ġrouter Navigation : ĠRouter Navigation ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġset Navigation ( nav Controller : ĠRouter Navigation ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . router Navigation Ġ= Ġnav Controller ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetData Store Config () Ġ= ĠData Store Config ( context Ġ= Ġcontext ) ĊĊĠĠĠ Ġvar Ġlogout App Event Ġ= Ġmutable State Of ( false ) ĊĠĠĠ Ġvar Ġdismiss Dialog Logout Ġ= Ġmutable State Of ( true ) ĊĠĠĠ Ġvar Ġhas Network Error Ġ= Ġmutable State Of ( false ) ĊĊĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun Ġshow Default Error Network ( ĊĠĠĠĠĠĠĠ Ġstate : ĠMutable State < Boolean >, ĊĠĠĠĠĠĠĠ Ġc ou rot ine Scope : ĠCor outine Scope , ĊĠĠĠĠĠĠĠ Ġscaffold State : ĠScaffold State , ĊĠĠĠĠĠĠĠ Ġon Apply Called : Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstate . value . let Ġ{ Ġshow Status Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp osable Utils . show Sn ackBar Error ( scaffold State Ġ= Ġscaffold State . sn ackbar Host State , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoroutine Scope Ġ= Ġc ou rot ine Scope , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Ġ= Ġshow Status , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Sn ackBar Enum Ġ= ĠDuration Sn ackBar Enum . LONG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġcontext . getString ( R . string . service _ un available _ network ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Label Ġ= Ġcontext . getString ( R . string . label _ closed _ button ), Ġon ActionPerformed Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Apply Called . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 3 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Toast Network Unavailable () Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġcontext . getString ( R . string . network _ un available ), ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} Ċ Ċ }