package Ġio . github . d roid ka igi . conf sched 2 0 2 0 . staff . ui . view model Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . as LiveData Ċ import Ġcom . dropbox . android . external . store 4 . Store Ċ import Ġcom . dropbox . android . external . store 4 . Store Request Ċ import Ġcom . dropbox . android . external . store 4 . Store Response Ċ import Ġio . github . d roid ka igi . conf sched 2 0 2 0 . ext . combine Ċ import Ġio . github . d roid ka igi . conf sched 2 0 2 0 . ext . to App Error Ċ import Ġio . github . d roid ka igi . conf sched 2 0 2 0 . model . App Error Ċ import Ġio . github . d roid ka igi . conf sched 2 0 2 0 . model . Staff Contents Ċ import Ġkotlinx . coroutines . Flow Preview Ċ import Ġjavax . inject . Inject Ċ Ċ @ Flow Preview Ċ class ĠStaff s ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġstore : ĠStore < Unit , ĠStaff Contents > Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġdata Ġclass ĠUi Model ( ĊĠĠĠĠĠĠĠ Ġval ĠisLoading : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġval Ġerror : ĠApp Error ?, ĊĠĠĠĠĠĠĠ Ġval Ġstaff Contents : ĠStaff Contents ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠEMPTY Ġ= ĠUi Model ( false , Ġnull , ĠStaff Contents . EMPTY ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ" stream " Ġreturns Ġdata Ġalong Ġwith Ġthe Ġloading Ġstatus . ĊĠĠĠ Ġprivate Ġval Ġstaff Contents Load State : ĠLive Data < Store Response < Staff Contents >> Ġ= ĊĠĠĠĠĠĠĠ Ġstore . stream ( Store Request . cached ( key Ġ= ĠUnit , Ġrefresh Ġ= Ġtrue )). as LiveData () ĊĊĠĠĠ Ġ// Ġ" get " Ġand Ġ" fetch " Ġgets Ġdata Ġdirectly , Ġso Ġyou Ġneed Ġto Ġexpress Ġthe Ġloading Ġstate Ġyourself . Ċ // ĠĠĠ Ġprivate Ġval Ġstaff Contents : ĠLive Data < Staff Contents > Ġ= Ġlive Data Ġ{ Ġstore . get ( Unit ) Ġ} ĊĊĠĠĠ Ġval Ġui Model : ĠLive Data < Ui Model > Ġ= Ġcombine ( ĊĠĠĠĠĠĠĠ Ġinitial Value Ġ= ĠUi Model . EMPTY , ĊĠĠĠĠĠĠĠ Ġlive Data 1 Ġ= Ġstaff Contents Load State ĊĠĠĠ Ġ) Ġ{ Ġ_, Ġload State Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġstaff Contents Ġ= Ġwhen Ġ( load State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠStore Response . Data Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload State . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStaff Contents . EMPTY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠUi Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġload State Ġis ĠStore Response . Loading , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ= Ġload State . error OrNull (). to App Error (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstaff Contents Ġ= Ġstaff Contents ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ