package Ġcom . dav oh . oauth 2 _ twitch . presentation Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . dav oh . oauth 2 _ twitch . domain . RefreshToken Ċ import Ġcom . dav oh . oauth 2 _ twitch . presentation . utils . Event Ċ import Ġcom . dav oh . oauth 2 _ twitch . use cases . Refresh AccessToken UseCase Ċ import Ġio . reactivex . rx java 3 . dis pos ables . Composite Disposable Ċ import Ġcom . dav oh . oauth 2 _ twitch . presentation . Refresh AccessToken ViewModel . Refresh AccessToken Navigation .* Ċ Ċ class ĠRefresh AccessToken ViewModel Ġ( ĊĠĠĠ Ġprivate Ġval Ġrefresh AccessToken UseCase : ĠRefresh AccessToken UseCase Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdis posable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġprivate Ġval Ġ_ events Ġ= ĠMutable LiveData < Event < Refresh AccessToken Navigation >>() ĊĠĠĠ Ġval Ġevents : ĠLive Data < Event < Refresh AccessToken Navigation >> Ġget () Ġ= Ġ_ events ĊĊĠĠĠ Ġprivate Ġvar ĠisLoading Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġdis posable . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrefresh Token ( grant Type : String , Ġrefresh Token : String , ĠclientId : String , Ġclient Secret : String ){ ĊĠĠĠĠĠĠĠ Ġdis posable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh AccessToken UseCase ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. invoke ( grant Type , Ġrefresh Token , ĠclientId , Ġclient Secret ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe { Ġshow Loading ()} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ accessToken -> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ events . value Ġ= ĠEvent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShow Refresh AccessToken ( accessToken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġerror -> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ events . value Ġ= ĠEvent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShow Refresh AccessToken Error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Loading () Ġ{ ĊĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ_ events . value Ġ= ĠEvent ( Show Loading ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Loading () Ġ{ ĊĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ_ events . value Ġ= ĠEvent ( Hide Loading ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsealed Ġclass ĠRefresh AccessToken Navigation { ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠShow Refresh AccessToken Error ( val Ġerror : Throwable ) Ġ: ĠRefresh AccessToken Navigation () ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠShow Refresh AccessToken ( val Ġtoken : ĠRefresh Token ): ĠRefresh AccessToken Navigation () ĊĠĠĠĠĠĠĠ Ġobject ĠHide Loading Ġ: ĠRefresh AccessToken Navigation () ĊĠĠĠĠĠĠĠ Ġobject ĠShow Loading Ġ: ĠRefresh AccessToken Navigation () ĊĠĠĠ Ġ} Ċ Ċ }