package Ġcom . ky bers wap . android . presentation . main . profile Ċ Ċ import Ġandroid . os . Parcelable Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . ky bers wap . android . domain . model . Social Info Ċ import Ġcom . ky bers wap . android . domain . use case . profile . Get Login Status UseCase Ċ import Ġcom . ky bers wap . android . domain . use case . profile . Login Social UseCase Ċ import Ġcom . ky bers wap . android . domain . use case . profile . Login UseCase Ċ import Ġcom . ky bers wap . android . domain . use case . profile . Reset Password UseCase Ċ import Ġcom . ky bers wap . android . presentation . common . Event Ċ import Ġcom . ky bers wap . android . util . ErrorHandler Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . functions . Consumer Ċ import Ġkotlinx . android . parcel . Parcel ize Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠProfile ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġlogin UseCase : ĠLogin UseCase , ĊĠĠĠ Ġprivate Ġval Ġlogin Social UseCase : ĠLogin Social UseCase , ĊĠĠĠ Ġprivate Ġval Ġreset Password UseCase : ĠReset Password UseCase , ĊĠĠĠ Ġprivate Ġval Ġget Login Status UseCase : ĠGet Login Status UseCase , ĊĠĠĠ Ġprivate Ġval ĠerrorHandler : ĠError Handler Ċ ) Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġ_ login Callback Ġ= ĠMutable LiveData < Event < Login State >>() ĊĠĠĠ Ġval Ġlogin Callback : ĠLive Data < Event < Login State >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ login Callback ĊĊĠĠĠ Ġprivate Ġval Ġ_ get Login Status Callback Ġ= ĠMutable LiveData < Event < UserInfo State >>() ĊĠĠĠ Ġval Ġget Login Status Callback : ĠLive Data < Event < UserInfo State >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ get Login Status Callback ĊĊĠĠĠ Ġprivate Ġval Ġ_ reset Password Callback Ġ= ĠMutable LiveData < Event < Reset Password State >>() ĊĠĠĠ Ġval Ġreset Password Callback : ĠLive Data < Event < Reset Password State >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ reset Password Callback ĊĊĠĠĠ Ġval Ġcomposite Disposable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġfun Ġget Login Status () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Login Status UseCase . dispose () ĊĠĠĠĠĠĠĠ Ġget Login Status UseCase . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ get Login Status Callback . value Ġ= ĠEvent ( UserInfo State . Success ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ get Login Status Callback . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent ( UserInfo State . Show Error ( error Handler . getError ( it ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlogin ( email : ĠString , Ġpassword : ĠString , Ġtwo Fa : ĠString ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ login Callback . post Value ( Event ( Login State . Loading )) ĊĠĠĠĠĠĠĠ Ġlogin UseCase . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ login Callback . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent ( Login State . Success ( it , ĠSocial Info ( type Ġ= ĠLogin Type . NORMAL ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ login Callback . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent ( Login State . Show Error ( error Handler . getError ( it ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogin UseCase . Param ( email , Ġpassword , Ġtwo Fa ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlogin ( social Info : ĠSocial Info ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ login Callback . post Value ( Event ( Login State . Loading )) ĊĠĠĠĠĠĠĠ Ġlogin Social UseCase . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ login Callback . value Ġ= ĠEvent ( Login State . Success ( it , Ġsocial Info )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ login Callback . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent ( Login State . Show Error ( error Handler . getError ( it ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogin Social UseCase . Param ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsocial Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset Password ( email : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ reset Password Callback . post Value ( Event ( Reset Password State . Loading )) ĊĠĠĠĠĠĠĠ Ġreset Password UseCase . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ reset Password Callback . value Ġ= ĠEvent ( Reset Password State . Success ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ reset Password Callback . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent ( Reset Password State . Show Error ( error Handler . getError ( it ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReset Password UseCase . Param ( email ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . dispose () ĊĠĠĠĠĠĠĠ Ġlogin UseCase . dispose () ĊĠĠĠĠĠĠĠ Ġlogin Social UseCase . dispose () ĊĠĠĠĠĠĠĠ Ġreset Password UseCase . dispose () ĊĠĠĠĠĠĠĠ Ġget Login Status UseCase . dispose () ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ @ Parcel ize Ċ enum Ġclass ĠLogin Type ( val Ġvalue : ĠString ) Ġ: ĠParcel able Ġ{ ĊĠĠĠ ĠNORMAL (" normal "), ĊĠĠĠ ĠGOOGLE (" google _ oauth 2 "), ĊĠĠĠ ĠFACE BOOK (" facebook "), ĊĠĠĠ ĠT WIT TER (" twitter ") Ċ }