package Ġcom . msg . view model Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . msg . gc ms . base . utils . Event Ċ import Ġcom . msg . gc ms . data . remote . dto . datasource . auth . request . Code Iss u ance Request Ċ import Ġcom . msg . gc ms . data . remote . dto . datasource . auth . request . Register Request Ċ import Ġcom . msg . gc ms . domain . use case . common . Registration UseCase Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠRegistration ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġuse Case : ĠRegistration UseCase Ċ ) Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġ_ email Code Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġval Ġemail Code : ĠLive Data < String > Ġget () Ġ= Ġ_ email Code ĊĊĠĠĠ Ġprivate Ġval Ġ_ email Post Check Status Ġ= ĠMutable LiveData < Event < Boolean >>() ĊĠĠĠ Ġval Ġemail Post Check Status : ĠLive Data < Event < Boolean >> Ġget () Ġ= Ġ_ email Post Check Status ĊĊĠĠĠ Ġprivate Ġval Ġ_ email Check Status Ġ= ĠMutable LiveData < Event < Boolean >>() ĊĠĠĠ Ġval Ġemail Check Status : ĠLive Data < Event < Boolean >> Ġget () Ġ= Ġ_ email Check Status ĊĊĠĠĠ Ġprivate Ġval Ġ_ registration Status Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġval Ġregistration Status : ĠLive Data < Boolean > Ġget () Ġ= Ġ_ registration Status ĊĊĠĠĠ Ġprivate Ġval Ġ_ toast String Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġval Ġtoast String : ĠLive Data < String > Ġget () Ġ= Ġ_ toast String ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġemail : ĠString ĊĊĠĠĠ Ġfun Ġtest Post Email Logic ( email : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( email ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" s 2 1 0 1 4 " Ġ-> Ġ_ email Post Check Status . value Ġ= ĠEvent ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ toast String . value Ġ= Ġ" íħ Į ìĬ¤íĬ¸ Ġìĭ¤ íĮ ¨ " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ email Post Check Status . value Ġ= ĠEvent ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpost Email Logic ( email : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Registration ViewModel . email Ġ= Ġemail ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġuse Case . post Email ( Code Iss u ance Request ( email )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" TAG ", Ġ"${ response . code ()}, Ġ${ response . body () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( response . code ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ email Post Check Status . value Ġ= ĠEvent ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 0 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ toast String . value Ġ= Ġ" ìľł í ļ¨ íķĺì§Ģ ĠìķĬ ìĿĢ Ġê³Ħ ìłķ ìŀħëĭĪëĭ¤ ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ email Post Check Status . value Ġ= ĠEvent ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 0 9 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ toast String . value Ġ= Ġ" ìĿ´ ë¯¸ ĠìĿ¸ ì¦ Ŀ ëĲľ Ġê³Ħ ìłķ ìŀħëĭĪëĭ¤ ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ email Post Check Status . value Ġ= ĠEvent ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" TAG ", Ġ" error Ġ: Ġ$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLog . d (" TAG "," Ġ${ response . error Body ()}, Ġ${ response . is Successful }, Ġ${ response . headers ()}, Ġ${ response . message () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLog . d (" post Email ", Ġresponse . code Ġ+ Ġresponse . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġregistration Logic ( email : ĠString , Ġpassword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Case . post Registration ( Register Request ( email Ġ= Ġemail , Ġpassword Ġ= Ġpassword )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" TAG ", Ġ"${ response . code () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( response . code ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 2 0 0 .. 2 9 9 Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" ìĭ¤ íĮ ¨ " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" TAG ", Ġ" error Ġ: Ġ$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Email Check Logic ( email Code : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( email Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 1 1 1 " Ġ-> Ġ_ email Check Status . value Ġ= ĠEvent ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ email Check Status . value Ġ= ĠEvent ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġemail Check Logic ( email Code : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġuse Case . head Check Code ( email . toString (), Ġemail Code . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ email Check Status . value Ġ= Ġwhen Ġ( response . code ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 0 Ġ-> ĠEvent ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠEvent ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" TAG ", Ġ_ email Check Status . value . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" TAG ", Ġ"${ response . code ()}, Ġ${ response . body ()} Ġ$ response ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" TAG ", Ġ" error Ġ: Ġ$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtype Number ( num : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(_ email Code . value ?. length Ġ?: Ġ 0 Ġ< Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder (_ email Code . value Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( num . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ email Code . post Value ( sb . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġerase Number () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(_ email Code . value ?. isNotEmpty () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder (_ email Code . value Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . delete Char At ( sb . length Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ email Code . post Value ( sb . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear Number () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder (_ email Code . value Ġ?: Ġ"") ĊĠĠĠĠĠĠĠ Ġsb . clear () ĊĠĠĠĠĠĠĠ Ġ_ email Code . post Value ( sb . toString ()) ĊĠĠĠ Ġ} Ċ } Ċ