package Ġcom . jb kal it . post app . presentation . user . view model Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . jb kal it . domain . model . Album Ċ import Ġcom . jb kal it . domain . model . User Ċ import Ġcom . jb kal it . domain . use case . album . Album UseCase Contract Ċ import Ġcom . jb kal it . domain . use case . user . User UseCase Contract Ċ import Ġcom . jb kal it . post app . presentation . base . Base ViewModel Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġio . reactivex . ob servers . Disposable Single Observer Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠProfile ViewModel Ġ@ Inject Ġconstructor ( private Ġval Ġuser UseCase : ĠUser UseCase Contract , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġalbum UseCase : ĠAlbum UseCase Contract ) ĊĠĠĠ Ġ: ĠBase ViewModel () Ġ{ ĊĊĠĠĠ Ġval Ġis Error Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġval ĠisLoading Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġprivate Ġval Ġ_ user Ġ= ĠMutable LiveData < User >() ĊĠĠĠ Ġval Ġuser : ĠLive Data < User > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ user ĊĊĠĠĠ Ġprivate Ġval Ġ_ albums Ġ= ĠMutable LiveData < List < Album >>() ĊĠĠĠ Ġval Ġalbum s : ĠLive Data < List < Album >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ albums ĊĊĠĠĠ Ġfun Ġfetch Profile ( userId : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdis posable Ġ= Ġuser UseCase . getUser ById ( userId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe With ( object Ġ: ĠDis posable Single Observer < User > (){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( user : ĠUser ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ user . value Ġ= Ġuser ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfetch Album s ( userId : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠisLoading . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġdis posable Ġ= Ġalbum UseCase . get Album By UserId ( userId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe With ( object Ġ: ĠDis posable Single Observer < List < Album >> (){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( album : ĠList < Album >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ albums . value Ġ= Ġalbum ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ Ċ } Ċ