package Ġru . a as mc . jet notes . view model Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġru . a as mc . jet notes . data . repository . Repository Ċ import Ġru . a as mc . jet notes . domain . model . Color Model Ċ import Ġru . a as mc . jet notes . domain . model . Note Model Ċ import Ġru . a as mc . jet notes . routing . Jet Notes Router Ċ import Ġru . a as mc . jet notes . routing . Screen Ċ Ċ /** Ċ Ġ* ĠViewModel Ġused Ġfor Ġstoring Ġthe Ġglobal Ġapp Ġstate . Ċ Ġ* ĠThis ĠViewModel Ġis Ġused Ġfor Ġall Ġapps . Ċ Ġ*/ Ċ class ĠMain ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠRepository Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġval Ġnotes NotIn Trash : ĠLive Data < List < Note Model >> Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . getAll Notes NotIn Trash () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġnotes In Trash Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . getAll Notes In Trash () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġ_ selected Notes Ġ= ĠMutable LiveData < List < Note Model >>( listOf ()) ĊĠĠĠ Ġval Ġselected Notes : ĠLive Data < List < Note Model >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ selected Notes ĊĊĠĠĠ Ġprivate Ġvar Ġ_ note Entry Ġ= ĠMutable LiveData ( Note Model ()) ĊĠĠĠ Ġval Ġnote Entry : ĠLive Data < Note Model > Ġ= Ġ_ note Entry ĊĊĊĠĠĠ Ġval Ġcolors : ĠLive Data < List < Color Model >> Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . getAll Colors () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// < editor - fold Ġdesc =" Events Ġthat Ġthe Ġview Ġcan Ġpass "> ĊĠĠĠ Ġfun ĠonCreate New Note Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ note Entry . value Ġ= ĠNote Model () ĊĠĠĠĠĠĠĠ ĠJet Notes Router . navigate No ( Screen . Save Note ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Note Click ( note : ĠNote Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ note Entry . value Ġ= Ġnote ĊĠĠĠĠĠĠĠ ĠJet Notes Router . navigate No ( Screen . Save Note ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Note Checked Change ( note : ĠNote Model ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . insert Note ( note ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Note Selected ( note : ĠNote Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ selected Notes . value Ġ= Ġ_ selected Notes . value !!. to Mutable List (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( contains ( note )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove ( note ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( note ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrestore Notes ( notes : ĠList < Note Model >) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . restore Notes From Trash ( notes . map Ġ{ Ġit . id Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ selected Notes . value Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġper manently Delete Notes ( notes : ĠList < Note Model >) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . delete Notes ( notes . map Ġ{ Ġit . id Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ selected Notes . value Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Note Entry Change ( note : ĠNote Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ note Entry . value Ġ= Ġnote ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave Note ( note : ĠNote Model ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . insert Note ( note ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJet Notes Router . navigate No ( Screen . Notes ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ note Entry . value Ġ= ĠNote Model () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmove Note To Trash ( note : ĠNote Model ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . move Note To Trash ( note . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJet Notes Router . navigate No ( Screen . Notes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// </ editor - fold > ĊĊ Ċ } ĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊĊ ĊĊĊĊĊĊĊĊ ĊĊĊĊ