package Ġcom . tw ilio . con versations . app . viewModel Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . tw ilio . con versations . app . common . Single Live Event Ċ import Ġcom . tw ilio . con versations . app . common . enums . Con versations Error Ċ import Ġcom . tw ilio . con versations . app . common . extensions . Con versations Exception Ċ import Ġcom . tw ilio . con versations . app . manager . Login Manager Ċ import Ġkotlinx . coroutines . launch Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠLogin ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġlogin Manager : ĠLogin Manager , Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġval ĠisLoading Ġ= ĠMutable LiveData ( false ) ĊĠĠĠ Ġval Ġon SignIn Error Ġ= ĠSingle Live Event < Con versations Error >() ĊĠĠĠ Ġval Ġon SignIn Success Ġ= ĠSingle Live Event < Unit >() ĊĊĠĠĠ Ġfun Ġsign In ( identity : ĠString , Ġpassword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isLoading . value Ġ== Ġtrue ) Ġreturn ĊĠĠĠĠĠĠĠ ĠTim ber . d (" signIn Ġin ĠviewModel ") ĊĊĠĠĠĠĠĠĠ Ġval Ġcredential Error Ġ= Ġvalidate SignIn Details ( identity , Ġpassword ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( credential Error Ġ!= ĠCon versations Error . NO _ ERROR ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" credentials Ġare Ġnot Ġvalid ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon SignIn Error . value Ġ= Ġcredential Error ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠTim ber . d (" credentials Ġare Ġvalid ") ĊĠĠĠĠĠĠĠ ĠisLoading . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin Manager . signIn ( identity , Ġpassword ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon SignIn Success . call () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠCon versations Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon SignIn Error . value Ġ= Ġe . error ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate SignIn Details ( identity : ĠString , Ġpassword : ĠString ): ĠCon versations Error Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . d (" validate SignIn Details ") ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġidentity . isNotEmpty () Ġ&& Ġpassword . isNotEmpty () Ġ-> ĠCon versations Error . NO _ ERROR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġidentity . isEmpty () Ġ&& Ġpassword . isNotEmpty () Ġ-> ĠCon versations Error . INVALID _ USERNAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġidentity . isNotEmpty () Ġ&& Ġpassword . isEmpty () Ġ-> ĠCon versations Error . INVALID _ PASSWORD ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠCon versations Error . INVALID _ USERNAME _ AND _ PASSWORD ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ