package Ġcom . b if rost . co cin arte . models Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . b if rost . co cin arte . entities .* Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . firestore . k tx . firestore Ċ import Ġcom . google . firebase . firestore . k tx . toObject Ċ import Ġcom . google . firebase . k tx . Firebase Ċ Ċ class ĠPreference ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġval Ġdb Ġ= ĠFirebase . firestore ĊĠĠĠ Ġval Ġauth Ġ= ĠFirebase Auth . getInstance () ĊĊĠĠĠ Ġvar Ġuser LiveData Ġ= ĠMutable LiveData < User >() ĊĊĠĠĠ Ġfun Ġupdate UserProfile ( category : ĠCategory ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemail Ġ= Ġauth . currentUser ?. email ĊĠĠĠĠĠĠĠ Ġval Ġdoc Ref Ġ= Ġdb . collection (" users "). document ( email !! ) ĊĊĠĠĠĠĠĠĠ Ġdoc Ref . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ Ġdata Snapshot Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Snapshot Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġuser Ġ= Ġdata Snapshot . toObject < User >() !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . profile Ġ= Ġcategory ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . collection (" users "). document ( email !! ). set ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Preference ViewModel ", Ġ" No Ġsuch Ġdocument .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ Ġexception Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Preference ViewModel ", Ġ" Failure .", Ġexception ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload UserProfile () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemail Ġ= Ġauth . currentUser ?. email ĊĠĠĠĠĠĠĠ Ġval Ġdoc Ref Ġ= Ġdb . collection (" users "). document ( email !! ) ĊĊĠĠĠĠĠĠĠ Ġdoc Ref . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ Ġdata Snapshot Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Snapshot Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġdata Snapshot . toObject < User >() !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user . profile Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser LiveData . value Ġ= Ġuser ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Preference ViewModel ", Ġ" No Ġsuch Ġdocument .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ Ġexception Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Preference ViewModel ", Ġ" Failure .", Ġexception ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }