package Ġcom . mn . ge ot weets . feature . auth Ċ Ċ import Ġcom . mn . domain . common . Failure Ċ import Ġcom . mn . domain . use case . auth . AuthToken Ċ import Ġcom . mn . domain . use case . auth . Get AuthToken Ċ import Ġcom . mn . ge ot weets . Build Config Ċ import Ġcom . mn . ge ot weets . feature . base . Base ViewModel Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠAuth ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġget AuthToken : ĠGet AuthToken Ċ ) Ġ: ĠBase ViewModel < Auth . State , ĠAuth . Event , ĠAuth . Error >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġauth Token : ĠAuth Token ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġfetch AuthToken () Ġ{ ĊĠĠĠĠĠĠĠ Ġget AuthToken ( CALLBACK _ URL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . either (:: handle Failure , Ġ:: handle AuthToken ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Failure ( failure : ĠFailure ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġerr Ġ= Ġwhen Ġ( failure ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFailure . Network Error Ġ-> ĠAuth . Error . Network Error ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFailure . Unknown Error Ġ-> ĠAuth . Error . Unknown Error ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFailure . Generic Exception Ġ-> ĠAuth . Error . Generic Error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailure . messages . join ToString ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFailure . ServerError . Unauthorized Ġ-> ĠAuth . Error . Unauthorized ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠAuth . Error . ServerError ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġerror ( err ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle AuthToken ( auth Token : ĠAuth Token ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . auth Token Ġ= Ġauth Token ĊĠĠĠĠĠĠĠ Ġwith ( auth Token ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( o ath Token . isNotBlank () Ġ&& Ġo ath Token Secret . isNotBlank () Ġ&& Ġo ath CallBack Confirmed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent ( Auth . Event . Enable Auth Button ( true )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror ( Auth . Error . Unauthorized ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Auth Url ( auth Token : ĠAuth Token ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠbaseUrl Ġ= ĠBuild Config . BASE _ URL ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ baseUrl / oauth / authorize ? oauth _ token =${ auth Token . o ath Token }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġauthorize Twitter () Ġ{ ĊĠĠĠĠĠĠĠ Ġauth Token ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauth Url Ġ= Ġget Auth Url ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent ( Auth . Event . Authorize ( auth Url )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCALL BACK _ URL Ġ= Ġ" ge ot weets :// authorize /" ĊĠĠĠ Ġ} Ċ }