package Ġcom . x . presentation . scene . main . dashboard Ċ Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . x . domain . repository . cache . Cache Preferences Ċ import Ġcom . x . domain . use case . Action UseCase Ċ import Ġcom . x . domain . use case . Dashboard UseCase Ċ import Ġcom . x . presentation . base . Base ViewModel Ċ import Ġcom . x . presentation . scene . main . dashboard . Dashboard Contract . Event Ċ import Ġcom . x . presentation . scene . main . dashboard . Dashboard Contract . State Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġkotlinx . coroutines . flow . launch In Ċ import Ġkotlinx . coroutines . flow . on Each Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠDashboard ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġdashboard UseCase : ĠDashboard UseCase , ĊĠĠĠ Ġprivate Ġval Ġaction UseCase : ĠAction UseCase , ĊĠĠĠ Ġprivate Ġval Ġcache Preferences : ĠCache Preferences , Ċ ) Ġ: ĠBase ViewModel < Event , ĠState >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġinit State (): ĠState Ġ= ĠState () ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Event ( event : ĠEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreduce Event ( event Ġ= Ġevent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcache Manager () Ġ= Ġcache Preferences ĊĊĠĠĠ Ġfun Ġget Stats () Ġ{ ĊĠĠĠĠĠĠĠ Ġdashboard UseCase . get Stats (). on Each Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . value Ġ= Ġinit State (). copy ( stats Model Ġ= Ġresult ) ĊĠĠĠĠĠĠĠ Ġ}. launch In ( viewModel Scope ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġaction Restart () Ġ{ ĊĠĠĠĠĠĠĠ Ġaction UseCase . restart (). on Each Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . value Ġ= Ġinit State (). copy ( action Model Ġ= Ġresult ) ĊĠĠĠĠĠĠĠ Ġ}. launch In ( viewModel Scope ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġaction Safe Restart () Ġ{ ĊĠĠĠĠĠĠĠ Ġaction UseCase . safe Restart (). on Each Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . value Ġ= Ġinit State (). copy ( action Model Ġ= Ġresult ) ĊĠĠĠĠĠĠĠ Ġ}. launch In ( viewModel Scope ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġaction Shutdown () Ġ{ ĊĠĠĠĠĠĠĠ Ġaction UseCase . shutdown (). on Each Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . value Ġ= Ġinit State (). copy ( action Model Ġ= Ġresult ) ĊĠĠĠĠĠĠĠ Ġ}. launch In ( viewModel Scope ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġaction Safe Shutdown () Ġ{ ĊĠĠĠĠĠĠĠ Ġaction UseCase . safe Shutdown (). on Each Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . value Ġ= Ġinit State (). copy ( action Model Ġ= Ġresult ) ĊĠĠĠĠĠĠĠ Ġ}. launch In ( viewModel Scope ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġaction Cancel Quiet Down () Ġ{ ĊĠĠĠĠĠĠĠ Ġaction UseCase . cancel Quiet Down (). on Each Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . value Ġ= Ġinit State (). copy ( action Model Ġ= Ġresult ) ĊĠĠĠĠĠĠĠ Ġ}. launch In ( viewModel Scope ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġaction Quiet Down () Ġ{ ĊĠĠĠĠĠĠĠ Ġaction UseCase . quiet Down (). on Each Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . value Ġ= Ġinit State (). copy ( action Model Ġ= Ġresult ) ĊĠĠĠĠĠĠĠ Ġ}. launch In ( viewModel Scope ) ĊĠĠĠ Ġ} Ċ }