package Ġcom . ky bers wap . android . presentation . main . profile . ky c Ċ Ċ 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 . K yc Info Ċ import Ġcom . ky bers wap . android . domain . use case . profile . Base 6 4 Decode UseCase Ċ import Ġcom . ky bers wap . android . domain . use case . profile . Fetch UserInfo UseCase Ċ import Ġcom . ky bers wap . android . domain . use case . profile . Get UserInfo UseCase Ċ import Ġcom . ky bers wap . android . domain . use case . profile . Resize Image UseCase Ċ import Ġcom . ky bers wap . android . domain . use case . profile . Save Local Personal Info UseCase Ċ import Ġcom . ky bers wap . android . domain . use case . profile . Save Personal Info UseCase Ċ import Ġcom . ky bers wap . android . presentation . common . Event Ċ import Ġcom . ky bers wap . android . presentation . main . profile . UserInfo State Ċ import Ġcom . ky bers wap . android . util . ErrorHandler Ċ import Ġcom . ky bers wap . android . util . ext . display Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . functions . Action Ċ import Ġio . reactivex . functions . Consumer Ċ import Ġkotlinx . android . parcel . Parcel ize Ċ import Ġjava . util . Date Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠPersonal Info ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġfetch UserInfo UseCase : ĠFetch UserInfo UseCase , ĊĠĠĠ Ġprivate Ġval ĠgetUser Info UseCase : ĠGet UserInfo UseCase , ĊĠĠĠ Ġprivate Ġval Ġsave Personal Info UseCase : ĠSave Personal Info UseCase , ĊĠĠĠ Ġprivate Ġval Ġsave Local Personal Info UseCase : ĠSave Local Personal Info UseCase , ĊĠĠĠ Ġprivate Ġval Ġresize Image UseCase : ĠResize Image UseCase , ĊĠĠĠ Ġprivate Ġval Ġdecode Base 6 4 Decode UseCase : ĠBase 6 4 Decode UseCase , ĊĠĠĠ Ġprivate Ġval ĠerrorHandler : ĠError Handler Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ getUser Info Callback Ġ= ĠMutable LiveData < Event < UserInfo State >>() ĊĠĠĠ Ġval ĠgetUser Info Callback : ĠLive Data < Event < UserInfo State >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ getUser Info Callback ĊĊĠĠĠ Ġprivate Ġval Ġ_ save K yc Info Callback Ġ= ĠMutable LiveData < Event < Save K yc Info State >>() ĊĠĠĠ Ġval Ġsave K yc Info Callback : ĠLive Data < Event < Save K yc Info State >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ save K yc Info Callback ĊĊĊĠĠĠ Ġprivate Ġval Ġ_ save Personal Info Callback Ġ= ĠMutable LiveData < Event < Save Personal Info State >>() ĊĠĠĠ Ġval Ġsave Personal Info Callback : ĠLive Data < Event < Save Personal Info State >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ save Personal Info Callback ĊĊĠĠĠ Ġprivate Ġval Ġ_ resize Image Callback Ġ= ĠMutable LiveData < Event < Resize Image State >>() ĊĠĠĠ Ġval Ġresize Image Callback : ĠLive Data < Event < Resize Image State >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ resize Image Callback ĊĊĠĠĠ Ġprivate Ġval Ġ_ decode Image Callback Ġ= ĠMutable LiveData < Event < Decode Base 6 4 State >>() ĊĠĠĠ Ġval Ġdecode Image Callback : ĠLive Data < Event < Decode Base 6 4 State >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ decode Image Callback ĊĊĠĠĠ Ġval Ġcomposite Disposable Ġ= ĠComposite Disposable () ĊĊĊĠĠĠ Ġfun Ġfetch UserInfo () Ġ{ ĊĠĠĠĠĠĠĠ Ġfetch UserInfo UseCase . dispose () ĊĠĠĠĠĠĠĠ Ġfetch UserInfo UseCase . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ getUser Info Callback . value Ġ= ĠEvent ( UserInfo State . Success ( it )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ getUser Info Callback . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent ( UserInfo State . Show Error ( error Handler . getError ( it ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetUser Info ( from Remote : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfetch UserInfo UseCase . dispose () ĊĠĠĠĠĠĠĠ ĠgetUser Info UseCase . dispose () ĊĠĠĠĠĠĠĠ Ġif Ġ( from Remote ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfetch UserInfo () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetUser Info () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetUser Info () Ġ{ ĊĠĠĠĠĠĠĠ ĠgetUser Info UseCase . dispose () ĊĠĠĠĠĠĠĠ ĠgetUser Info UseCase . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ getUser Info Callback . value Ġ= ĠEvent ( UserInfo State . Success ( it )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ getUser Info Callback . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent ( UserInfo State . Show Error ( error Handler . getError ( it ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġin Valid D ob ( dob : ĠDate ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSystem . currentTimeMillis () Ġ/ Ġ 1 0 0 0 Ġ- Ġdo b . time Ġ/ Ġ 1 0 0 0 Ġ<= Ġ 1 8 Ġ* Ġ 1 2 Ġ* Ġ 3 0 Ġ* Ġ 2 4 Ġ* Ġ 6 0 Ġ* Ġ 6 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave ( ky c Info : ĠK yc Info ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ky c Info Ġ== Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠ Ġ_ save Personal Info Callback . post Value ( Event ( Save Personal Info State . Loading )) ĊĠĠĠĠĠĠĠ Ġsave Personal Info UseCase . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ save Personal Info Callback . value Ġ= ĠEvent ( Save Personal Info State . Success ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ save Personal Info Callback . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent ( Save Personal Info State . Show Error ( it . reason . display ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ save Personal Info Callback . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent ( Save Personal Info State . Show Error ( error Handler . getError ( it ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSave Personal Info UseCase . Param ( ky c Info ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave Local ( ky c Info : ĠK yc Info ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsave Local Personal Info UseCase . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ save K yc Info Callback . value Ġ= ĠEvent ( Save K yc Info State . Success ("")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ save K yc Info Callback . value Ġ= ĠEvent ( Save K yc Info State . Show Error ( it . localized Message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ, ĠSave Local Personal Info UseCase . Param ( ky c Info ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġresize Image ( absolute Path : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ resize Image Callback . post Value ( Event ( Resize Image State . Loading )) ĊĠĠĠĠĠĠĠ Ġresize Image UseCase . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ resize Image Callback . value Ġ= ĠEvent ( Resize Image State . Success ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ resize Image Callback . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent ( Resize Image State . Show Error ( it . localized Message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResize Image UseCase . Param ( absolute Path ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdecode ( string Image : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdecode Base 6 4 Decode UseCase . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ decode Image Callback . value Ġ= ĠEvent ( Decode Base 6 4 State . Success ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConsumer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ decode Image Callback . value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent ( Decode Base 6 4 State . Show Error ( it . localized Message )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBase 6 4 Decode UseCase . Param ( string Image ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Parcel ize ĊĠĠĠ Ġenum Ġclass ĠInfo Type Ġ: ĠParcel able Ġ{ ĊĠĠĠĠĠĠĠ ĠN ATION AL ITY , ĊĠĠĠĠĠĠĠ ĠCOUN TRY _ OF _ RES ID ENCE , ĊĠĠĠĠĠĠĠ ĠPRO OF _ ADDRESS , ĊĠĠĠĠĠĠĠ ĠSOURCE _ F UND ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġfetch UserInfo UseCase . dispose () ĊĠĠĠĠĠĠĠ Ġsave Personal Info UseCase . dispose () ĊĠĠĠĠĠĠĠ Ġresize Image UseCase . dispose () ĊĠĠĠĠĠĠĠ Ġdecode Base 6 4 Decode UseCase . dispose () ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . clear () ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ Ċ @ Parcel ize Ċ enum Ġclass ĠK yc Info Type Ġ: ĠParcel able Ġ{ ĊĠĠĠ ĠN ATION AL ITY , ĊĠĠĠ ĠCOUN TRY _ OF _ RES ID ENCE , ĊĠĠĠ ĠPRO OF _ ADDRESS , ĊĠĠĠ ĠSOURCE _ F UND , ĊĠĠĠ ĠO CC UP ATION _ CODE , ĊĠĠĠ ĠIN DU STR Y _ CODE , ĊĠĠĠ ĠT AX _ RES ID ENCY _ COUNTRY Ċ }