/* Ċ Ġ* ĠThe ĠMIT ĠLicense Ġ( MIT ) Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 2 0 ĠNB CO ĠY oo Money ĠLLC Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ġof Ġthis Ġsoftware Ġand Ċ Ġ* Ġassociated Ġdocumentation Ġfiles Ġ( the ĠâĢľ Software âĢĿ ), Ġto Ġdeal Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ċ Ġ* Ġwithout Ġlimitation Ġthe Ġrights Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ġcopies Ċ Ġ* Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ċ Ġ* Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ġcopies Ġor Ġsubstantial Ċ Ġ* Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED ĠâĢľ AS ĠIS âĢĿ, ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR ĠIMPLIED , Ċ Ġ* ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , ĠFITNESS ĠFOR ĠA ĠPARTICULAR Ċ Ġ* ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE Ċ Ġ* ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT Ċ Ġ* ĠOR ĠOTHERWISE , ĠARISING ĠFROM , ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR Ċ Ġ* ĠOTHER ĠDEALINGS ĠIN ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġru . y oom oney . sdk . k assa . payments . user Auth . di Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġdagger . mult ib ind ings . Into Map Ċ import Ġru . y oom oney . sdk . auth . Y oo Money Auth Ċ import Ġru . y oom oney . sdk . auth . account . Account Repository Ċ import Ġru . y oom oney . sdk . auth . transfer Data . Transfer Data Repository Ċ import Ġru . y oom oney . sdk . k assa . payments . checkout Parameters . Payment MethodType Ċ import Ġru . y oom oney . sdk . k assa . payments . checkout Parameters . Payment Parameters Ċ import Ġru . y oom oney . sdk . k assa . payments . checkout Parameters . Test Parameters Ċ import Ġru . y oom oney . sdk . k assa . payments . di . ViewModel Key Ċ import Ġru . y oom oney . sdk . k assa . payments . http . Host Provider Ċ import Ġru . y oom oney . sdk . k assa . payments . metrics . Reporter Ċ import Ġru . y oom oney . sdk . k assa . payments . metrics . Token ize Scheme Param Provider Ċ import Ġru . y oom oney . sdk . k assa . payments . metrics . User Auth TokenType Param Provider Ċ import Ġru . y oom oney . sdk . k assa . payments . metrics . User Auth Type Param Provider Ċ import Ġru . y oom oney . sdk . k assa . payments . model . Executor Ċ import Ġru . y oom oney . sdk . k assa . payments . model . Result Ċ import Ġru . y oom oney . sdk . k assa . payments . payment . Check Payment Auth Required Gateway Ċ import Ġru . y oom oney . sdk . k assa . payments . payment . CurrentUser Repository Ċ import Ġru . y oom oney . sdk . k assa . payments . payment . Get Loaded Payment Option List Repository Ċ import Ġru . y oom oney . sdk . k assa . payments . payment Auth . Payment AuthToken Repository Ċ import Ġru . y oom oney . sdk . k assa . payments . payment Option List . Payment Options List UseCase Ċ import Ġru . y oom oney . sdk . k assa . payments . secure . Tokens Storage Ċ import Ġru . y oom oney . sdk . k assa . payments . tm x . T mx SessionId Storage Ċ import Ġru . y oom oney . sdk . k assa . payments . user Auth . Authorize UserRepository Ċ import Ġru . y oom oney . sdk . k assa . payments . user Auth . Get Transfer Data UseCase Ċ import Ġru . y oom oney . sdk . k assa . payments . user Auth . Get Transfer Data UseCase Impl Ċ import Ġru . y oom oney . sdk . k assa . payments . user Auth . Mock Authorize UserRepository Ċ import Ġru . y oom oney . sdk . k assa . payments . user Auth . Money Auth Analytics Ċ import Ġru . y oom oney . sdk . k assa . payments . user Auth . Money Auth Business Logic Ċ import Ġru . y oom oney . sdk . k assa . payments . user Auth . User Ċ import Ġru . y oom oney . sdk . m arch . Out Ċ import Ġru . y oom oney . sdk . m arch . Runtime ViewModel Ċ import Ġru . y oom oney . sdk . k assa . payments . user Auth . Money Auth Ċ import Ġru . y oom oney . sdk . k assa . payments . user Auth . Y oo Money Authorize UserRepository Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Module Ċ internal Ġclass ĠUser Auth Module Ġ{ ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġauthorize UserRepository ( ĊĠĠĠĠĠĠĠ Ġpayment Parameters : ĠPayment Parameters , ĊĠĠĠĠĠĠĠ Ġtest Parameters : ĠTest Parameters , ĊĠĠĠĠĠĠĠ Ġexecutor : ĠExecutor ĊĠĠĠ Ġ): ĠAuthor ize UserRepository Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Parameters . mock Configuration Ġ!= Ġnull Ġ-> ĠMock Authorize UserRepository ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpayment Parameters . payment Method Types . contains ( Payment MethodType . Y OO _ M ONE Y ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠY oo Money Authorize UserRepository ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecutor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire NotNull ( payment Parameters . auth Center ClientId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠAuthor ize UserRepository Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġauthorize User () Ġ= ĠResult . Success ( User . Empty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġcheck Payment Auth Required Gateway ( ĊĠĠĠĠĠĠĠ Ġtest Parameters : ĠTest Parameters , ĊĠĠĠĠĠĠĠ Ġtokens Storage : ĠTokens Storage ĊĠĠĠ Ġ): ĠCheck Payment Auth Required Gateway Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmock Configuration Ġ= Ġtest Parameters . mock Configuration ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( mock Configuration Ġ!= Ġnull Ġ&& Ġmock Configuration . payment Auth Passed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠCheck Payment Auth Required Gateway Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcheck User Account Remember () Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcheck Payment Auth Required () Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtokens Storage ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġtokenize Scheme Param Provider (): ĠToken ize Scheme Param Provider Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠToken ize Scheme Param Provider () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġuser Auth Type Param Provider ( ĊĠĠĠĠĠĠĠ ĠcurrentUser Repository : ĠCurrent UserRepository , ĊĠĠĠĠĠĠĠ Ġcheck Payment Auth Required Gateway : ĠCheck Payment Auth Required Gateway ĊĠĠĠ Ġ): ĠUser Auth Type Param Provider Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠUser Auth Type Param Provider ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentUser Repository , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Payment Auth Required Gateway ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġuser Auth TokenType Param Provider ( ĊĠĠĠĠĠĠĠ Ġpayment AuthToken Repository : ĠPayment AuthToken Repository ĊĠĠĠ Ġ): ĠUser Auth TokenType Param Provider Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠUser Auth TokenType Param Provider ( payment AuthToken Repository ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġtransfer Data Repository ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġpayment Parameters : ĠPayment Parameters , ĊĠĠĠĠĠĠĠ Ġhost Provider : ĠHost Provider ĊĠĠĠ Ġ): ĠTransfer Data Repository Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠY oo Money Auth . provide Transfer Data Repository ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauth Center ClientId Ġ= Ġrequire NotNull ( payment Parameters . auth Center ClientId ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Host Ġ= Ġif Ġ(! host Provider . auth Host (). isNull OrEmpty ()) Ġhost Provider . auth Host () Ġelse Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Debug Mode Ġ= Ġ! host Provider . auth Host (). isNull OrEmpty () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġget Transfer Data UseCase ( transfer Data Repository : ĠTransfer Data Repository ): ĠGet Transfer Data UseCase Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGet Transfer Data UseCase Impl ( transfer Data Repository ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġfun Ġaccount Repository ( context : ĠContext , Ġhost Provider : ĠHost Provider ): ĠAccount Repository Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠY oo Money Auth . provide Account Repository ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Host Ġ= Ġif Ġ(! host Provider . auth Host (). isNull OrEmpty ()) Ġhost Provider . auth Host () Ġelse Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Debug Mode Ġ= Ġ! host Provider . auth Host (). isNull OrEmpty () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ [ Provides ĠInto Map ĠViewModel Key ( M ONE Y _ AUTH )] ĊĠĠĠ Ġfun ĠviewModel ( ĊĠĠĠĠĠĠĠ Ġreporter : ĠReport er , ĊĠĠĠĠĠĠĠ Ġpayment Parameters : ĠPayment Parameters , ĊĠĠĠĠĠĠĠ Ġt mx SessionId Storage : ĠT mx SessionId Storage , ĊĠĠĠĠĠĠĠ ĠcurrentUser Repository : ĠCurrent UserRepository , ĊĠĠĠĠĠĠĠ Ġtokens Storage : ĠTokens Storage , ĊĠĠĠĠĠĠĠ Ġuse Case : ĠPayment Options List UseCase , ĊĠĠĠĠĠĠĠ Ġget Transfer Data UseCase : ĠGet Transfer Data UseCase , ĊĠĠĠĠĠĠĠ Ġloaded Payment Option List Repository : ĠGet Loaded Payment Option List Repository ĊĠĠĠ Ġ): ĠViewModel Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRuntime ViewModel < Money Auth . State , ĠMoney Auth . Action , ĠUnit >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Name Ġ= ĠM ONE Y _ AUTH , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Ġ= Ġ{ ĠOut . skip ( Money Auth . State . Waiting For Auth Started , Ġsource ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogic Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMoney Auth Analytics ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreporter Ġ= Ġreporter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbusiness Logic Ġ= ĠMoney Auth Business Logic ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow State Ġ= Ġshow State , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġsource , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt mx SessionId Storage Ġ= Ġt mx SessionId Storage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentUser Repository Ġ= ĠcurrentUser Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Auth Info Repository Ġ= Ġtokens Storage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpayment Parameters Ġ= Ġpayment Parameters , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpayment Options List UseCase Ġ= Ġuse Case , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Transfer Data UseCase Ġ= Ġget Transfer Data UseCase , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloaded Payment Option List Repository Ġ= Ġloaded Payment Option List Repository ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠM ONE Y _ AUTH Ġ= Ġ" Money Auth " ĊĠĠĠ Ġ} Ċ }