package Ġcom . wise ass blog . spac en otes . note detail . build logic Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġcom . google . firebase . Firebase App Ċ import Ġcom . wise ass blog . data . auth . Firebase Auth Repository Impl Ċ import Ġcom . wise ass blog . data . note . anonymous . Anonymous Note Dao Ċ import Ġcom . wise ass blog . data . note . anonymous . Anonymous Note Database Ċ import Ġcom . wise ass blog . data . note . anonymous . Room Local Anonymous Repository Impl Ċ import Ġcom . wise ass blog . data . note . public . Fire store Remote Note Impl Ċ import Ġcom . wise ass blog . data . note . registered .* Ċ import Ġcom . wise ass blog . data . transaction . Room Registered Transaction Database Ċ import Ġcom . wise ass blog . data . transaction . Room Transaction Repository Impl Ċ import Ġcom . wise ass blog . domain . Dispatcher Provider Ċ import Ġcom . wise ass blog . domain . service locator . Note Service Locator Ċ import Ġcom . wise ass blog . domain . service locator . UserService Locator Ċ import Ġcom . wise ass blog . domain . inter actor . Anonymous Note Source Ċ import Ġcom . wise ass blog . domain . inter actor . Auth Source Ċ import Ġcom . wise ass blog . domain . inter actor . Public Note Source Ċ import Ġcom . wise ass blog . domain . inter actor . Registered Note Source Ċ import Ġcom . wise ass blog . domain . repository .* Ċ import Ġcom . wise ass blog . spac en otes . note detail .* Ċ Ċ /** Ċ Ġ* Ċ Ġ*/ Ċ class ĠNote Detail Injector ( application : ĠApplication ) Ġ: ĠAndroid ViewModel ( application ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠFirebase App . initialize App ( application ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġan on Note Dao : ĠAn onymous Note Dao Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠAn onymous Note Database . getInstance ( getApplication ()). room Note Dao () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġreg Note Dao : ĠRegistered Note Dao Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠRegistered Note Database . getInstance ( getApplication ()). room Note Dao () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtransaction Dao : ĠRegistered Transaction Dao Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠRoom Registered Transaction Database . getInstance ( getApplication ()). room Transaction Dao () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// For Ġnon - registered Ġuser Ġpersistence ĊĠĠĠ Ġprivate Ġval Ġlocal An on : ĠI Local Note Repository Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠRoom Local Anonymous Repository Impl ( anon Note Dao ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// For Ġregistered Ġuser Ġremote Ġpersistence Ġ( Source Ġof ĠTr uth ) ĊĠĠĠ Ġprivate Ġval Ġremote Private : ĠI Remote Note Repository Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠFire store Private Remote Note Impl () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// For Ġregistered Ġuser Ġremote Ġpersistence Ġ( Source Ġof ĠTr uth ) ĊĠĠĠ Ġprivate Ġval Ġremote Public : ĠIP ublic Note Repository Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠFire store Remote Note Impl ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// For Ġregistered Ġuser Ġlocal Ġpersist ience Ġ( cache ) ĊĠĠĠ Ġprivate Ġval Ġcache Reg : ĠI Local Note Repository Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠRoom Local Cache Impl ( reg Note Dao ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// For Ġregistered Ġuser Ġremote Ġpersistence Ġ( Source Ġof ĠTr uth ) ĊĠĠĠ Ġprivate Ġval Ġremote Repo : ĠI Remote Note Repository Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠRegistered Note Repository Impl ( remote Private , Ġcache Reg ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// For Ġregistered Ġuser Ġlocal Ġpersist ience Ġ( cache ) ĊĠĠĠ Ġprivate Ġval Ġtransaction Reg : ĠI Transaction Repository Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠRoom Transaction Repository Impl ( transaction Dao ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// For Ġuser Ġmanagement ĊĠĠĠ Ġprivate Ġval Ġauth : ĠI Auth Repository Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠFirebase Auth Repository Impl () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlogic : ĠNote Detail Logic ĊĊĠĠĠ Ġfun Ġbuild Note Detail Logic ( view : ĠNote Detail View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Private : ĠBoolean ): ĠNote Detail Logic Ġ{ ĊĠĠĠĠĠĠĠ Ġlogic Ġ= ĠNote Detail Logic ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDispatcher Provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNote Service Locator ( local An on , Ġremote Repo , Ġtransaction Reg , Ġremote Public ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUserService Locator ( auth ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Providers . of ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( Note Detail ViewModel :: class . java ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAn onymous Note Source (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegistered Note Source (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPublic Note Source (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAuth Source (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Private ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġview . set Observer ( logic ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġlogic ĊĠĠĠ Ġ} Ċ }