/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 . Ċ Ġ* ĠDesign ed Ġand Ġdeveloped Ġby Ġ@ qu ab yn ah _ code labs Ġ( D enn is ĠB il son ) Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* Ġhttp :// 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 . world of lux ury . data . sources . local Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġio . world of lux ury . data . User Ċ import Ġio . world of lux ury . data . sources . User DataSource Ċ import Ġio . world of lux ury . database . dao . User Dao Ċ import Ġio . world of lux ury . preferences . Preference Storage Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* Ġ Ġ@ project ĠWorld Ġof ĠL ux ury Ċ Ġ* Ġ Ġ@ author ĠB il son ĠJ r . Ċ Ġ* Ġ Ġ@ by ĠQu ab yn ah ĠC odel abs ĠLLC Ċ Ġ* Ġ Ġ@ since Ġ 1 2 / 0 8 / 2 0 2 0 Ġ@ Ġ 2 3 : 4 9 Ċ Ġ*/ Ċ Ċ class ĠDefault User Local DataSource Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġdao : ĠUser Dao , ĊĠĠĠ Ġprefs : ĠPreference Storage , ĊĠĠĠ Ġprivate Ġval Ġscope : ĠCor outine Scope Ċ ) Ġ: ĠUser DataSource , ĠUser Dao Ġby Ġdao , ĠPreference Storage Ġby Ġprefs Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġwatch CurrentUser ( toast LiveData : ĠMutable LiveData < String >): ĠFlow < User ?> Ġ= ĊĠĠĠĠĠĠĠ ĠgetUser ById ( userId ) ĊĊĠĠĠ Ġoverride Ġfun Ġupdate User ( user : ĠUser ) Ġ{ ĊĠĠĠĠĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinsert ( user ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlogout () Ġ{ ĊĠĠĠĠĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete ( userId ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠuserId Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }