package Ġzero . friends . g ost op calculator . ui . history Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġkotlinx . coroutines . launch Ċ import Ġzero . friends . domain . model . Game Ċ import Ġzero . friends . domain . preference . App Preference Ċ import Ġzero . friends . domain . repository . Game Repository Ċ import Ġjavax . inject . Inject Ċ Ċ data Ġclass ĠHistory Ui State ( ĊĠĠĠ Ġval Ġgames : ĠList < Game > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġis First Start : ĠBoolean Ġ= Ġfalse Ċ ) Ċ Ċ @ H ilt ViewModel Ċ class ĠHistory ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġgame Repository : ĠGame Repository , ĊĠĠĠ Ġapp Preference : ĠApp Preference Ċ ) Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġ_ ui State Ġ= ĠMutable State Flow ( ĊĠĠĠĠĠĠĠ ĠHistory Ui State ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis First Start Ġ= Ġapp Preference . is F ist Start () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġget Ui State () Ġ= Ġ_ ui State . as State Flow () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġapp Preference . set First Start () ĊĠĠĠĠĠĠĠ Ġgame Repository . observe Game List (). on Each Ġ{ Ġgame List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ ui State . update Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . copy ( games Ġ= Ġgame List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. launch In ( viewModel Scope ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Game ( game Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame Repository . delete Game ( game Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }