package Ġcom . de on ol are w aj u . ule sson . ui . home Ċ Ċ import Ġandroidx . h ilt . lifecycle . ViewModel Inject Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . switch Map Ċ import Ġcom . de on ol are w aj u . ule sson . util . helper . Event Ċ import Ġcom . de on ol are w aj u . ule sson . data . source . repository . Repository Ċ Ċ class ĠHome ViewModel Ġ@ ViewModel Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠRepository Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ subjects Ġ= ĠMutable LiveData < Unit >() ĊĊĠĠĠ Ġprivate Ġval Ġ_ open Subject Id Ġ= ĠMutable LiveData < Event < Long >>() ĊĠĠĠ Ġval Ġopen Subject Id : ĠLive Data < Event < Long >> Ġ= Ġ_ open Subject Id ĊĊĠĠĠ Ġprivate Ġval Ġ_ toggle Text Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġval Ġtoggle Text : ĠLive Data < String > Ġ= Ġ_ toggle Text ĊĊĠĠĠ Ġval Ġrecent Views Ġ= Ġtoggle Text . switch Map Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" VIEW ĠALL " Ġ-> Ġrepository . get Recent Views ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġrepository . get Recent Views ( 1 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Subject s () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ subjects . value Ġ= ĠUnit ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtoggle Button ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( text ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" VIEW ĠALL " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ toggle Text . value Ġ= Ġ" VIEW ĠL ESS " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" VIEW ĠL ESS " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ toggle Text . value Ġ= Ġ" VIEW ĠALL " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Subject ( subject Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ open Subject Id . value Ġ= ĠEvent ( subject Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġfetching Subject Ġ= Ġ_ subjects . switch Map Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . fetch Subject s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġsubjects Ġ= Ġrepository . get Subject s () Ċ Ċ }