package Ġnet . at til as z abo . redux demo . domain . login Ċ Ċ import Ġnet . at til as z abo . redux . Action Ċ import Ġnet . at til as z abo . redux . Dispatcher Ċ import Ġnet . at til as z abo . redux . enh ancers . Side Effect Ċ import Ġnet . at til as z abo . redux demo . domain . common . Domain Result Ċ import Ġnet . at til as z abo . redux demo . domain . login . Login Actions . LoggedIn Ċ import Ġnet . at til as z abo . redux demo . domain . login . data . I Accounts Repository Ċ import Ġnet . at til as z abo . redux demo . state . Redux Demo State Ċ Ċ internal Ġclass ĠPerform Login Side Effect ( private Ġval Ġm Accounts Repository : ĠI Accounts Repository ) Ġ: ĠSide Effect < Redux Demo State >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġdispatch ( state : Ġ() Ġ-> ĠRedux Demo State , Ġaction : ĠAction , Ġdispatcher : ĠDispatcher ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( action Ġis ĠLogin Actions . Login ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Handler Ġ= Ġobject Ġ: ĠDomain Result < LoggedIn > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsuccess ( result : ĠLog ged In ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher . dispatch ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġerror ( throwable : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrowable ?. let Ġ{ Ġdispatcher . dispatch ( Login Actions . Error ( it )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Accounts Repository . grant New AccessToken ( action . username , Ġaction . password , Ġresult Handler ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ