/* Ċ Ġ* ĠĠ ĠCopyright Ġ( C ) Ġ 2 0 1 9 Ġm re bol lob . Ċ Ġ* ĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . m re bol lob . cha otic playground . presentation . main . profile Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . m re bol lob . cha otic playground . data . auth . Session Manager Ċ import Ġcom . m re bol lob . cha otic playground . domain . entity . User Ċ import Ġcom . m re bol lob . cha otic playground . domain . exception . Play Ground Exception Ċ import Ġcom . m re bol lob . cha otic playground . domain . repository . House Repository Ċ import Ġkotlinx . coroutines . launch Ċ import Ġtim ber . log . Tim ber Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠProfile ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġsession Manager : ĠSession Manager , ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠHouse Repository Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ screen State Ġ= ĠMutable LiveData < Profile Screen State >() ĊĠĠĠ Ġval Ġscreen State : ĠLive Data < Profile Screen State > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ screen State ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ screen State . value Ġ= ĠProfile Screen State . Loading ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Manager . getUser (). either (:: handleError , Ġ:: handle Com ics ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Com ics ( user : ĠUser ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . d (" User : Ġ$ user ") ĊĠĠĠĠĠĠĠ Ġ_ screen State . value Ġ= ĠProfile Screen State . Ready ( user ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Error ( exception : ĠPlay Ground Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ screen State . value Ġ= ĠProfile Screen State . Error ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Sign Out Click () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . clear Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Manager . sign Out () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession Manager . getUser (). either (:: handleError , Ġ:: handle Com ics ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }