/* Ċ Ġ* ĠCopyright Ġ 2 0 2 2 ĠP era ĠWallet , ĠL DA Ċ Ġ* Ġ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 Ġcom . al gor and . android . ui . settings . node Ċ Ċ import Ġandroidx . h ilt . lifecycle . ViewModel Inject Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . al gor and . android . banner . domain . use case . B anners UseCase Ċ import Ġcom . al gor and . android . core . Base ViewModel Ċ import Ġcom . al gor and . android . models . Node Ċ import Ġcom . al gor and . android . use case . Core Cache UseCase Ċ import Ġcom . al gor and . android . use case . Node Settings UseCase Ċ import Ġkotlinx . coroutines . flow . collect Latest Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠNode Settings ViewModel Ġ@ ViewModel Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġcore Cache UseCase : ĠCore Cache UseCase , ĊĠĠĠ Ġprivate Ġval Ġnode Settings UseCase : ĠNode Settings UseCase , ĊĠĠĠ Ġprivate Ġval Ġb anners UseCase : ĠB anners UseCase Ċ ) Ġ: ĠBase ViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ node List LiveData Ġ= ĠMutable LiveData < List < Node >>() ĊĠĠĠ Ġval Ġnode List LiveData : ĠLive Data < List < Node >> Ġ= Ġ_ node List LiveData ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode Settings UseCase . getAll Node As Flow (). collect Latest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ node List LiveData . post Value ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġset NodeList To Database ( node List : ĠList < Node >) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode Settings UseCase . set NodeList To Database ( node List ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġactivate Node ( node : ĠNode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnode Settings UseCase . activate New Node ( node ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Node Changed ( activated Node : ĠNode , Ġon Node Switch ing Finished : Ġ( previous Node : ĠNode ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprevious Selected Node Ġ= Ġnode Settings UseCase . getActive Node OrDefault () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode Settings UseCase . setSelected Node (_ node List LiveData . value , Ġactivated Node ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcore Cache UseCase . handle Node Change () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivate Node ( activated Node ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset NodeList To Database ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Node Switch ing Finished . invoke ( previous Selected Node ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ