/* Ċ Ġ* ĠRunner Be ĠÂ© Ġ 2 0 2 2 ĠTeam ĠApple M ango . Ġall Ġrights Ġreserved . Ċ Ġ* ĠRunner Be Ġlicense Ġis Ġunder Ġthe ĠMIT . Ċ Ġ* Ċ Ġ* Ġ[ S ns Login ViewModel . kt ] Ġcreated Ġby ĠJ i ĠS ung bin Ġon Ġ 2 2 . Ġ 2 . Ġ 5 . Ġìĺ¤ í ĽĦ Ġ 9 : 3 2 Ċ Ġ* Ċ Ġ* ĠPlease Ġsee : Ġhttps :// github . com / app lem ango - runner be / Runner Be - Android / blob / main / LICENSE . Ċ Ġ*/ Ċ Ċ package Ġteam . app lem ango . runner be . feature . register . sns login Ċ Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġorg . orbit m vi . orbit . Container Host Ċ import Ġorg . orbit m vi . orbit . syntax . simple . intent Ċ import Ġorg . orbit m vi . orbit . syntax . simple . post Side Effect Ċ import Ġorg . orbit m vi . orbit . syntax . simple . reduce Ċ import Ġorg . orbit m vi . orbit . view model . container Ċ import Ġteam . app lem ango . runner be . domain . register . runner be . constant . Platform Type Ċ import Ġteam . app lem ango . runner be . domain . register . runner be . use case . Get K ak ao AccessToken UseCase Ċ import Ġteam . app lem ango . runner be . domain . register . runner be . use case . Get N aver AccessToken UseCase Ċ import Ġteam . app lem ango . runner be . domain . register . runner be . use case . Login UseCase Ċ import Ġteam . app lem ango . runner be . feature . register . sns login . constant . Login State Ċ import Ġteam . app lem ango . runner be . feature . register . sns login . m vi . Login Side Effect Ċ import Ġteam . app lem ango . runner be . shared . android . base . Base ViewModel Ċ import Ġteam . app lem ango . runner be . shared . domain . util . require Field Null Message Ċ Ċ internal Ġclass ĠS ns Login ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġget K ak ao AccessToken UseCase : ĠGet K ak ao AccessToken UseCase , ĊĠĠĠ Ġprivate Ġval Ġget N aver AccessToken UseCase : ĠGet N aver AccessToken UseCase , ĊĠĠĠ Ġprivate Ġval Ġlogin UseCase : ĠLogin UseCase , Ċ ) Ġ: ĠBase ViewModel (), ĠContainer Host < Login State , ĠLogin Side Effect > Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġcontainer Ġ= Ġcontainer < Login State , ĠLogin Side Effect >( Login State . None ) ĊĊĠĠĠ Ġfun Ġlogin ( platform Type : ĠPlatform Type ) Ġ= Ġintent Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ Ġ// ĠëĤ ´ë ¶ Ģ ìłģìľ¼ë¡ľ Ġëĭ¤ ìĿ´ ìĸ ¼ ë¡ľ ê·¸ ë¥¼ Ġë Ŀ Ħ ìļ° ëĬĶ Ġë¡ľ ì§ģ ìĿ´ ĠìŀĪ ìĸ´ ìĦľ ĠUI ĠThread ĠìĹĲ ìĦľ Ġëı Į ë¦ ¼ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( platform Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform Type . K ak ao Ġ-> Ġget K ak ao AccessToken UseCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform Type . N aver Ġ-> Ġget N aver AccessToken UseCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠNotImplementedError () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. on Success Ġ{ Ġtoken Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin UseCase ( platform Type Ġ= Ġplatform Type , ĠaccessToken Ġ= Ġtoken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Success Ġ{ Ġuser Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user . is Registered User ) Ġ{ Ġ// ĠìĿ´ë¯¸ Ġê°Ģ ìŀħ í ĽĦ Ġí ļĮ ìĽĲ ê°Ģ ìŀħ ê¹Įì§Ģ Ġëª¨ ëĳĲ Ġë§Ī ì¹ ľ Ġìľł ìłĢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Side Effect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogin Side Effect . Save User Token ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserId Ġ= Ġrequire NotNull ( user . userId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire NotNull (" userId ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjwt Ġ= Ġrequire NotNull ( user . jwt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Field Null Message (" jwt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreduce Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogin State . Registered ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Side Effect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogin Side Effect . Save Uuid ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuuid Ġ= Ġrequire NotNull ( user . uuid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Field Null Message (" uuid ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreduce Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogin State . Done ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ Ġthrowable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit Exception ( throwable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ Ġthrowable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit Exception ( throwable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ