/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠC attle ĠNotes . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . pr 6 5 6 d . shared . domain . auth Ċ Ċ import Ġcom . pr 6 5 6 d . shared . data . login . datas ources . Auth State User DataSource Ċ import Ġcom . pr 6 5 6 d . shared . data . user . info . Firebase UserInfo Detailed Ċ import Ġcom . pr 6 5 6 d . shared . data . user . info . UserInfo Detailed Ċ import Ġcom . pr 6 5 6 d . shared . data . user . info . datas ources . Ob serve Fire store UserInfo DataSource Ċ import Ġcom . pr 6 5 6 d . shared . di . Default Dispatcher Ċ import Ġcom . pr 6 5 6 d . shared . domain . Flow UseCase Ċ import Ġcom . pr 6 5 6 d . shared . domain . result . Result Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . combine Transform Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ /** Ċ Ġ* ĠA Ġ[ Flow UseCase ] Ġthat Ġob serves Ġtwo Ġdata Ġsources Ġto Ġgenerate Ġan Ġ[ UserInfo Detailed ] Ċ Ġ* Ġthat Ġincludes Ġgeneral Ġuser Ġinformation , Ġlike Ġuser ĠID , ĠName , ĠF arm Ġname , Ġd air y Ġcode , Ġetc . Ċ Ġ*/ Ċ @ Singleton Ċ open Ġclass ĠOb serve User Auth State UseCase Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġauth State User DataSource : ĠAuth State User DataSource , ĊĠĠĠ Ġprivate Ġval Ġobserve Fire store UserInfo DataSource : ĠOb serve Fire store UserInfo DataSource , ĊĠĠĠ Ġ@ Default Dispatcher Ġprivate Ġval Ġcoroutine Dispatcher : ĠCor outine Dispatcher Ċ ) Ġ: ĠFlow UseCase < Any , ĠUserInfo Detailed ? >( coroutine Dispatcher ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( parameters : ĠAny ): ĠFlow < Result < UserInfo Detailed ? >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġauth State User DataSource . get Basic UserInfo () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. combine Transform ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserve Fire store UserInfo DataSource . get Firebase UserInfo () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĠuserInfo Basic , ĠuserInfo Fire store Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Success ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase UserInfo Detailed ( userInfo Basic , ĠuserInfo Fire store ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ