package Ġcom . example . android client . login Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . example . android client . common .* Ċ import Ġcom . example . android client . entity . User Ċ import Ġcom . example . android client . event . Token Event Ċ import Ġcom . example . android client . event . UserName Event Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġorg . green robot . event bus . EventBus Ċ import Ġandroid . util . Log Ċ import Ġcom . google . gson . Gson Ċ import Ġokhttp 3 . MediaType Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . RequestBody Ċ import Ġcom . example . android client . entity . Register Entity Ċ import Ġjava . lang . Exception ĊĊ Ċ class ĠLogin ViewModel Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġprivate Ġval ĠuserName Ġ= ĠMutable LiveData < String >() ĊĠĠĠ Ġprivate Ġval Ġpassword Ġ= ĠMutable LiveData < String >() ĊĊĠĠĠ Ġfun Ġinit Sp Va L ue ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ ĠuserName . value Ġ= Ġget SP String ( context , ĠUSER _ NAME ) ĊĠĠĠĠĠĠĠ Ġpassword . value Ġ= Ġget SP String ( context , ĠPASSWORD ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġregister ( userName : ĠString , Ġpassword : ĠString ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġget Ret rofit Service ( Service :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġservice . register ( User ( userName , Ġpassword )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" x kf ", ĠbaseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregister Entity Ġ= Ġcall . execute (). body () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( register Entity Ġ!= Ġnull Ġ&& Ġregister Entity . error Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Context Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" x kf ", Ġregister Entity ?. error Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Context Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġlogin ( userName : ĠString , Ġpassword : ĠString ): ĠString Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġget Ret rofit Service ( Service :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġservice . login ( User ( username Ġ= ĠuserName , Ġpassword Ġ= Ġpassword )) ĊĠĠĠĠĠĠĠ Ġval Ġlogin Entity Ġ= Ġcall . execute (). body () ĊĠĠĠĠĠĠĠ Ġif Ġ( login Entity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Context Ġlogin Entity . token Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn @ with Context Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget UserName (): ĠString Ġ= ĠuserName . value Ġ?: Ġ"" ĊĊĠĠĠ Ġfun Ġget Password (): ĠString Ġ= Ġpassword . value Ġ?: Ġ"" ĊĊĠĠĠ Ġfun Ġsave Data ( context : ĠContext , ĠuserName : ĠString , Ġpassword : ĠString , Ġtoken : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ åİ» å¾Ģ ĠSync Fragment . on UserName Event ĊĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( UserName Event ( userName )) ĊĠĠĠĠĠĠĠ Ġ// Ġ åİ» å¾Ģ ĠCloud y List Fragment . on Token Event ĊĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( Token Event ( token )) ĊĊĠĠĠĠĠĠĠ Ġsave SP String ( context , ĠTOKEN , Ġtoken ) ĊĠĠĠĠĠĠĠ Ġsave SP String ( context , ĠUSER _ NAME , ĠuserName ) ĊĠĠĠĠĠĠĠ Ġsave SP String ( context , ĠPASSWORD , Ġpassword ) ĊĠĠĠ Ġ} Ċ }