package Ġcom . space apps . my application . features . reset Password Ċ Ċ import Ġandroidx . lifecycle . Saved State Handle Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . space apps . my application . R Ċ import Ġcom . space apps . my application . core . models . Input Wrapper Ċ import Ġcom . space apps . my application . core . repositories . auth . Auth Repository Ċ import Ġcom . space apps . my application . core . repositories . auth . results . Reset Password Result Ċ import Ġcom . space apps . my application . core . repositories . auth . results . Verify Reset Code Result Ċ import Ġcom . space apps . my application . core . utils . getState Flow Ċ import Ġcom . space apps . my application . core . utils . is Password Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġkotlinx . coroutines . flow . Mutable Shared Flow Ċ import Ġkotlinx . coroutines . flow . Shared Flow Ċ import Ġkotlinx . coroutines . flow . as Shared Flow Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠReset Password ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠAuth Repository , ĊĠĠĠ Ġsaved State Handle : ĠSaved State Handle Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġemail Ġ= Ġsaved State Handle . get < String >(" email ") ĊĠĠĠ Ġprivate Ġval Ġcode Ġ= Ġsaved State Handle . get < String >(" code ") ĊĠĠĠ Ġprivate Ġval Ġ_ events Ġ= ĠMutable Shared Flow < Reset Password Event >() ĊĠĠĠ Ġval Ġevents : ĠShared Flow < Reset Password Event > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ events . as Shared Flow () ĊĠĠĠ Ġval Ġcode Verified Ġ= Ġsaved State Handle . getState Flow ( ĊĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope , ĊĠĠĠĠĠĠĠ Ġkey Ġ= Ġ" code Verified ", ĊĠĠĠĠĠĠĠ Ġinitial Value Ġ= Ġfalse ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġpassword Ġ= Ġsaved State Handle . getState Flow ( ĊĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope , ĊĠĠĠĠĠĠĠ Ġkey Ġ= Ġ" password ", ĊĠĠĠĠĠĠĠ Ġinitial Value Ġ= ĠInput Wrapper () ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġconfirm Password Ġ= Ġsaved State Handle . getState Flow ( ĊĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope , ĊĠĠĠĠĠĠĠ Ġkey Ġ= Ġ" confirm Password ", ĊĠĠĠĠĠĠĠ Ġinitial Value Ġ= ĠInput Wrapper () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġverify Reset Code () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġverify Reset Code () Ġ= ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( repository . verify Reset Code ( email Ġ= Ġemail . or Empty (), Ġcode Ġ= Ġcode . or Empty ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠVerify Reset Code Result . Success Ġ-> Ġcode Verified . emit ( true ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠVerify Reset Code Result . Success Ġ-> Ġ_ events . emit ( Reset Password Event . Code Verification Error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠVerify Reset Code Result . Failure Ġ-> Ġ_ events . emit ( Reset Password Event . Code Verification Error ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Password Enter ( input : ĠString ) Ġ= ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġerror Ġ= Ġif Ġ( input . is Password ) Ġnull Ġelse ĠR . string . invalid _ password ĊĠĠĠĠĠĠĠ Ġpassword . emit ( password . value . copy ( text Ġ= Ġinput , Ġerror Id Ġ= Ġerror )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Confirm Password Enter ( input : ĠString ) Ġ= ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġerror Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput . is Password Ġ&& Ġinput Ġ== Ġpassword . value . text Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ!= Ġpassword . value . text Ġ-> ĠR . string . password _ does _ not _ match ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . string . invalid _ password ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconfirm Password . emit ( confirm Password . value . copy ( text Ġ= Ġinput , Ġerror Id Ġ= Ġerror )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Reset Password Click () Ġ= ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! code Verified . value Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword . value . error Id Ġ!= Ġnull Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm Password . value . error Id Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ) Ġreturn @ launch ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrepository . reset Password ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġemail . or Empty (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode Ġ= Ġcode . or Empty (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġpassword . value . text ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReset Password Result . Success Ġ-> Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReset Password Result . Failure Ġ-> Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ