package Ġcom . tr ateg . be pres ens im obile . ui . login Ċ Ċ import Ġandroid . content . Content Values . TAG Ċ import Ġandroid . util . Log Ċ import Ġcom . auth 0 . android . jwt . JWT Ċ import Ġcom . tr ateg . be pres ens im obile . data . api . Api Factory Ċ import Ġcom . tr ateg . be pres ens im obile . model . Auth Ċ import Ġcom . tr ateg . be pres ens im obile . model . Base Response Ċ import Ġcom . tr ateg . be pres ens im obile . util . Constants Ċ import Ġcom . tr ateg . be pres ens im obile . util . Error Utils Ċ import Ġcom . tr ateg . be pres ens im obile . util . Session Manager Ċ import Ġkotlinx . coroutines .* Ċ import Ġokhttp 3 . MediaType . Companion . to MediaType OrNull Ċ import Ġokhttp 3 . RequestBody Ċ import Ġokhttp 3 . RequestBody . Companion . to RequestBody Ċ import Ġretrofit 2 . Response Ċ Ċ class ĠLogin Presenter ( private Ġvar Ġm View : ĠLogin Contract . View ?) Ġ: ĊĠĠĠ ĠLogin Contract . Presenter Ġ{ ĊĠĠĠ Ġprivate Ġval Ġapi Ġ= ĠApi Factory . api Service ĊĠĠĠ Ġlateinit Ġvar Ġsession : ĠSession Manager ĊĠĠĠ Ġoverride Ġfun Ġdo Login ( email : ĠString , Ġpassword : ĠString ){ ĊĊĠĠĠĠĠĠĠ Ġval Ġm Email : ĠRequest Body Ġ= Ġemail . to RequestBody ( email . to MediaType OrNull ()) ĊĠĠĠĠĠĠĠ Ġval Ġm Password : ĠRequest Body Ġ= Ġpassword . to RequestBody ( password . to MediaType OrNull ()) ĊĠĠĠĠĠĠĠ Ġvar Ġresponse : ĠResponse < Base Response >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . IO ){ ĊĠĠĠĠĠĠĠ Ġ// ĠMen ampil kan Ġloading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. show Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠM ence g ah Ġw aktu Ġrequest Ġme le bi hi Ġtimeout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġwith Timeout OrNull ( Constants . REQUEST _ TIMEOUT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= Ġapi . post Login ( m Email , Ġm Password ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. onError ( e . message . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" catch Ġdo Login : Ġ" Ġ+ Ġe . message . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠM eng hil ang kan Ġloading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. hide Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ== Ġnull Ġ-> Ġ{ Ġ// ĠJ ika Ġw aktu Ġrequest Ġme le bi hi Ġtimeout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" do Login : Ġrequest Ġis Ġnull !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. onError (" W aktu Ġt ung gu Ġtel ah Ġhab is ...") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! response !!. is Successful Ġ-> Ġ{ Ġ// ĠJ ika Ġrequest Ġg agal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Response Ġ= ĠError Utils . parse Error ( response !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" do Login : Ġ" Ġ+ Ġerror Response . message !!. toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. onError ( error Response . message !!. toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse !!. body () Ġ== Ġnull Ġ-> Ġ{ Ġ// ĠJ ika Ġbody Ġresponse Ġk os ong ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" do Login : Ġresponse Ġbody Ġis Ġnull !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. onError (" Sil ah kan Ġc ob a Ġlag i ...") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! response !!. body () !!. success !! Ġ-> Ġ{ Ġ// ĠJ ika Ġrequest Ġpada Ġbackend Ġg agal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" do Login : Ġ" Ġ+ Ġresponse !!. body () !!. message !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. onError ( response !!. body () !!. message !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse !!. body () !!. success !! Ġ-> Ġ{ Ġ// ĠJ ika Ġrequest Ġber hasil ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Login Success ( response !!. body () !!. data ?. auth !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" do Login : Ġun caught Ġerror !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. onError (" Sil ah kan Ġc ob a Ġlag i ...") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" do Login : Ġexception Ġcatch Ġis Ġcalled !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. onError (" Ter j adi Ġk es al ahan ...") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Login Success ( data : ĠAuth ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= ĠJWT ( data . accessToken !! ) ĊĠĠĠĠĠĠĠ Ġval Ġrole : ĠString Ġ= Ġtoken . get Claim (" role "). asString () Ġ?: Ġ" null " ĊĠĠĠĠĠĠĠ Ġval Ġid User : ĠString Ġ= Ġtoken . get Claim (" id _ user "). as Int (). toString () ĊĠĠĠĠĠĠĠ Ġvar Ġn ama : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġk d D osen : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar ĠN IM : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġemail : ĠString ? Ġ= Ġtoken . get Claim (" email "). asString () ĊĊĠĠĠĠĠĠĠ Ġsession . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Token ( token . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Role ( role ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . setId User ( id User . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Email ( email ? :" null ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Login ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhen Ġ( role . toUpperCase ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" STA FF ĠT ATA ĠUSA HA " Ġ-> Ġ{ Ġ// ĠJ ika Ġuser Ġad alah Ġstaff Ġt ata Ġus aha ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm View ?. onError (" Ma af , Ġfit ur Ġtidak Ġter sed ia ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" DOS EN " Ġ-> Ġ{ Ġ// ĠJ ika Ġuser Ġad alah Ġd osen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn ama Ġ= Ġtoken . get Claim (" nama _ d osen "). asString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk d D osen Ġ= Ġtoken . get Claim (" kd _ d osen "). asString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Nama ( nama ? :" null ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Kd D osen ( kd D osen ? :" null ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate Home () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" MA HAS IS WA " Ġ-> Ġ{ Ġ Ġ// ĠJ ika Ġuser Ġad alah Ġma hasiswa ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn ama Ġ= Ġtoken . get Claim (" nama _ ma hasiswa "). asString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠN IM Ġ= Ġtoken . get Claim (" nim "). asString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . set Nama ( nama ? :" null ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . set NIM ( NIM ? :" null ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate Home () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnavigate Home () Ġ{ ĊĠĠĠĠĠĠĠ Ġm View ?. goTo Home () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsetup Session () Ġ{ ĊĠĠĠĠĠĠĠ Ġsession Ġ= Ġm View ?. init Session () !! ĊĠĠĠĠĠĠĠ Ġif ( session . is Login ()) Ġnavigate Home () Ġ// ĠJ ika Ġuser Ġs udah Ġlogin ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġm View Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }