/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠGoogle ĠLLC Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġio . chan se . events . mar riage . rich . shared . domain . sessions Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġio . chan se . events . mar riage . rich . model . SessionId Ċ import Ġio . chan se . events . mar riage . rich . model . userdata . User Session Ċ import Ġio . chan se . events . mar riage . rich . shared . data . user event . Default Session And User Event Repository Ċ import Ġio . chan se . events . mar riage . rich . shared . data . user event . User Event Message Ċ import Ġio . chan se . events . mar riage . rich . shared . domain . Mediator UseCase Ċ import Ġio . chan se . events . mar riage . rich . shared . domain . internal . Default Scheduler Ċ import Ġio . chan se . events . mar riage . rich . shared . result . Result Ċ import Ġjavax . inject . Inject Ċ Ċ open Ġclass ĠLoad User Session UseCase Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġuser Event Repository : ĠDefault Session And User Event Repository Ċ ) Ġ: ĠMed iator UseCase < Pair < String ?, ĠSession Id >, ĠLoad User Session UseCase Result >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġuser Session : ĠLive Data < Result < Load User Session UseCase Result >> ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( parameters : ĠPair < String ?, ĠSession Id >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( userId , Ġevent Id ) Ġ= Ġparameters ĊĊĠĠĠĠĠĠĠ Ġ// ĠRemove Ġold Ġdata Ġsources ĊĠĠĠĠĠĠĠ Ġclear Sources () ĊĊĠĠĠĠĠĠĠ Ġ// ĠFetch Ġan Ġobservable Ġof Ġthe Ġdata ĊĠĠĠĠĠĠĠ Ġval Ġnew User Session Ġ= Ġuser Event Repository . get Observable User Event ( userId , Ġevent Id ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠPost Ġnew Ġvalues Ġto Ġthe Ġresult Ġobject . ĊĠĠĠĠĠĠĠ Ġresult . add Source ( new User Session ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Scheduler . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuse Case Result Ġ= ĠLoad User Session UseCase Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Session Ġ= Ġit . data . user Session , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Message Ġ= Ġit . data . user Message ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . post Value ( Result . Success ( use Case Result )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . post Value ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠSave Ġa Ġreference Ġto Ġthe Ġobservable Ġfor Ġlater Ġcleaning Ġof Ġsources . ĊĠĠĠĠĠĠĠ Ġuser Session Ġ= Ġnew User Session ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġclear Sources () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclear Sources () Ġ{ ĊĠĠĠĠĠĠĠ Ġuser Session ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . remove Source ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġresult . value Ġ= Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠLoad User Session UseCase Result ( ĊĠĠĠ Ġval Ġuser Session : ĠUser Session , ĊĊĠĠĠ Ġ/** ĠA Ġmessage Ġto Ġshow Ġto Ġthe Ġuser Ġwith Ġimportant Ġchanges Ġlike Ġreservation Ġconfirm ations Ġ*/ ĊĠĠĠ Ġval Ġuser Message : ĠUser Event Message ? Ġ= Ġnull Ċ ) Ċ