package Ġru . luck yc act us . steam ro u lette . domain . user Ċ Ċ import Ġdagger . Re usable Ċ import Ġkotlinx . coroutines . Cancellation Exception Ċ import Ġru . luck yc act us . steam ro u lette . domain . common . Steam Id Ċ import Ġru . luck yc act us . steam ro u lette . domain . core . Cache Policy Ċ import Ġru . luck yc act us . steam ro u lette . domain . core . use case . Suspend UseCase Ċ import Ġru . luck yc act us . steam ro u lette . domain . user . entity . User Session Ċ import Ġru . luck yc act us . steam ro u lette . domain . user . entity . User Summary Ċ import Ġjavax . inject . Inject Ċ Ċ @ Re usable Ċ class ĠGetUser Summary UseCase Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġuser Repository : ĠUser Repository , ĊĠĠĠ Ġprivate Ġval Ġuser Session : ĠUser Session Ċ ) Ġ: ĠS uspend UseCase < GetUser Summary UseCase . Params , ĠGetUser Summary UseCase . Result >() Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġexecute ( params : ĠParams ): ĠResult Ġ= ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġparams . steam Id Ġ?: Ġuser Session . require CurrentUser () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcache Policy Ġ= Ġif Ġ( params . reload ) ĠCache Policy . Remote Ġelse ĠCache Policy . Cache Or Remote ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Summary Ġ= Ġuser Repository . getUser Summary OrThrow ( user , Ġcache Policy ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Success ( user Summary ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠC ancellation Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSteam Id NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Fail . Steam Id NotFound ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Fail . Error ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠParams ( ĊĠĠĠĠĠĠĠ Ġval Ġsteam Id : ĠSteam Id ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġval Ġreload : ĠBoolean ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġsealed Ġclass ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠSuccess ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Summary : ĠUser Summary ĊĠĠĠĠĠĠĠ Ġ) Ġ: ĠResult () ĊĊĠĠĠĠĠĠĠ Ġsealed Ġclass ĠFail Ġ: ĠResult () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠSteam Id NotFound Ġ: ĠFail () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġclass ĠError ( val Ġexception : ĠException ) Ġ: ĠFail () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ