package Ġio . github . d roid ka igi . conf sched 2 0 2 0 . preference . ui . view model Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ 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 . model . Night Mode Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠPreference ViewModel Ġ@ Inject Ġconstructor () Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġdata Ġclass ĠUi Model ( ĊĠĠĠĠĠĠĠ Ġval Ġnight Mode : ĠNight Mode ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠEMPTY Ġ= ĠUi Model ( Night Mode . SYSTEM ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġnight Mode LiveData : ĠMutable LiveData < Night Mode > Ġ= ĠMutable LiveData ( Night Mode . SYSTEM ) ĊĊĠĠĠ Ġvar Ġui Model : ĠLive Data < Ui Model > Ġ= Ġcombine ( ĊĠĠĠĠĠĠĠ Ġinitial Value Ġ= ĠUi Model . EMPTY , ĊĠĠĠĠĠĠĠ Ġlive Data 1 Ġ= Ġnight Mode LiveData ĊĠĠĠ Ġ) Ġ{ Ġui Model : ĠUi Model , Ġnight Mode : ĠNight Mode Ġ-> ĊĠĠĠĠĠĠĠ ĠUi Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnight Mode Ġ= Ġnight Mode ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Night Mode ( newValue : ĠNight Mode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnight Mode LiveData . value Ġ= ĠnewValue ĊĠĠĠ Ġ} Ċ } Ċ