package Ġcom . ped rog ome z . post viewer . view . view model Ċ Ċ import Ġandroidx . lifecycle .* Ċ import Ġcom . ped rog ome z . post viewer . models . db . User Table Ċ import Ġcom . ped rog ome z . post viewer . models . result . Result Ċ import Ġkotlinx . coroutines .* Ċ Ċ class ĠUsers ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠRepository Ċ ) Ġ: ĠViewModel (){ ĊĊĠĠĠ Ġprivate Ġval Ġ_ hits List LiveData Ġ: ĠLive Data < List < User Table >> Ġ= Ġrepository . observe Users () ĊĊĠĠĠ Ġval Ġhits List LiveData Ġ= Ġ_ hits List LiveData ĊĊĠĠĠ Ġval Ġselected Hit LiveData Ġ= ĠMutable LiveData < User Table >() ĊĊĠĠĠ Ġval Ġloader Data Ġ= ĠMutable LiveData < Result < Boolean >>() ĊĊĠĠĠ Ġfun Ġreload Content (){ ĊĠĠĠĠĠĠĠ Ġset Loading State () ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . load Users ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Success State () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Loading State (){ ĊĠĠĠĠĠĠĠ Ġloader Data . post Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Loading ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Success State (){ ĊĠĠĠĠĠĠĠ Ġloader Data . post Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Success ( true ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload First Page (){ ĊĠĠĠĠĠĠĠ Ġload More ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload More ( page : Int ){ ĊĠĠĠĠĠĠĠ Ġset Loading State () ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . load Users ( page ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Success State () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave Selected ( product Item : ĠUser Table ){ ĊĠĠĠĠĠĠĠ Ġselected Hit LiveData . value Ġ= Ġproduct Item ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete ( user Item : ĠUser Table ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . delete ( user Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠRepository { ĊĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġload Users ( page : Int ) ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġfilter Users ByName ( name : String ): ĠLive Data < List < User Table >> ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġdelete ( user Item : ĠUser Table ) ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun ĠgetAll Users (): ĠList < User Table > ĊĠĠĠĠĠĠĠ Ġfun Ġobserve Users (): ĠLive Data < List < User Table >> ĊĊĠĠĠ Ġ} Ċ Ċ }