package Ġcom . ct ech . eat y . ui . login . epic Ċ Ċ import Ġcom . ct ech . eat y . base . redux . Action Ċ import Ġcom . ct ech . eat y . base . redux . Epic Ċ import Ġcom . ct ech . eat y . entity . AccessToken Ċ import Ġcom . ct ech . eat y . repository . AppSettings Manager Ċ import Ġcom . ct ech . eat y . repository . UserRepository Ċ import Ġcom . ct ech . eat y . ui . login . action . Login Action Ċ import Ġcom . ct ech . eat y . ui . login . result . Request Token Result Ċ import Ġcom . ct ech . eat y . ui . login . state . Login State Ċ import Ġcom . ct ech . eat y . util . rx . Thread Scheduler Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . subjects . Behavior Subject Ċ import Ġio . reactivex . subjects . Publish Subject Ċ Ċ class ĠRequest Token Epic ( private Ġval Ġuser Repository : ĠUser Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġthread Scheduler : ĠThread Scheduler , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġapp Settings : ĠApp Settings Manager ) Ġ: ĠE pic < Login State >{ ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( action : ĠPublish Subject < Action >, Ġstate : ĠBehavior Subject < Login State >): ĠObservable < Request Token Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġaction . of Type ( Login Action . REQUEST _ TOKEN :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Ġ= Ġit . login Provider ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Repository . getUser Token ( it . login Provider , Ġit . oauth Token , Ġit . auth Token Secret ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Settings . setUser Token ( it . accessToken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRequest Token Result . success ( AccessToken ( it . accessToken , Ġit . type ), Ġit . first Time , Ġsource ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. onError Return Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRequest Token Result . fail ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( thread Scheduler . worker Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start With ( Request Token Result . in Progress ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }