/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠR az ew are ĠLLC Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠNot with standing Ġthe Ġfore going , Ġyou Ġmay Ġnot Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ċ Ġ* Ġdistribute , Ġsublicense , Ġcreate Ġa Ġderivative Ġwork , Ġand / or Ġsell Ġcopies Ġof Ġthe Ċ Ġ* ĠSoftware Ġin Ġany Ġwork Ġthat Ġis Ġdesigned , Ġintended , Ġor Ġmarket ed Ġfor Ġped ag og ical Ġor Ċ Ġ* Ġinstruction al Ġpurposes Ġrelated Ġto Ġprogramming , Ġcoding , Ġapplication Ġdevelopment , Ċ Ġ* Ġor Ġinformation Ġtechnology . Ġ ĠPermission Ġfor Ġsuch Ġuse , Ġcopying , Ġmodification , Ċ Ġ* Ġmer ger , Ġpublication , Ġdistribution , Ġsublic ensing , Ġcreation Ġof Ġderivative Ġworks , Ċ Ġ* Ġor Ġsale Ġis Ġexpress ly Ġwith held . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ Ġ* ĠTHE ĠSOFTWARE . Ċ Ġ* Ċ Ġ*/ Ċ package Ġcom . ray w ender lich . android . organ ized simp len otes Ċ Ċ import Ġandroidx . datastore . core . DataStore Ċ import Ġandroidx . datastore . preferences . core .* Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . catch Ċ import Ġkotlinx . coroutines . flow . first Ċ import Ġkotlinx . coroutines . flow . map Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġjava . io . IOException Ċ Ċ private Ġconst Ġval ĠDEFAULT _ COLOR Ġ= Ġ" Green " Ċ private Ġconst Ġval ĠDEFAULT _ SORT _ ORDER Ġ= Ġ" FILENAME _ ASC " Ċ private Ġconst Ġval ĠDEFAULT _ PRIORITY _ FILTER Ġ= Ġ" 1 " Ċ Ċ class ĠNote Prefs ( private Ġval Ġdata Store : ĠData Store < Preferences >) Ġ{ ĊĊĠ Ġsuspend Ġfun Ġsave Note SortOrder ( note SortOrder : ĠNote SortOrder ) Ġ{ ĊĠĠĠ Ġdata Store . edit Ġ{ Ġpreferences Ġ-> ĊĠĠĠĠĠ Ġpreferences [ NOTE _ SORT _ ORDER ] Ġ= Ġnote SortOrder . name ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġget Note SortOrder () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠ ĠNote SortOrder . valueOf ( data Store . data . first ()[ NOTE _ SORT _ ORDER ] Ġ?: ĠDEFAULT _ SORT _ ORDER ) ĊĠ Ġ} ĊĊĠ Ġsuspend Ġfun Ġsave Note Priority Filters ( prior ities : ĠSet < String >) Ġ{ ĊĠĠĠ Ġdata Store . edit Ġ{ Ġpreferences Ġ-> ĊĠĠĠĠĠ Ġpreferences [ NOTE _ PRIORITY _ SET ] Ġ= Ġprior ities ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġget Note Priority Filters () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠ Ġdata Store . data . first ()[ NOTE _ PRIORITY _ SET ] Ġ?: Ġset Of ( DEFAULT _ PRIORITY _ FILTER ) ĊĠ Ġ} ĊĊĠ Ġsuspend Ġfun Ġsave Note BackgroundColor ( note BackgroundColor : ĠString ) Ġ{ ĊĠĠĠ Ġdata Store . edit Ġ{ Ġpreferences Ġ-> ĊĠĠĠĠĠ Ġpreferences [ BACKGROUND _ COLOR ] Ġ= Ġnote BackgroundColor ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġget App BackgroundColor (): ĠApp BackgroundColor Ġ= ĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠ ĠApp BackgroundColor . getColor ByName ( data Store . data . first ()[ BACKGROUND _ COLOR ] Ġ?: ĠDEFAULT _ COLOR ) ĊĠĠĠ Ġ} ĊĊĠ Ġval Ġuser Preferences Flow : ĠFlow < User Preferences > Ġ= Ġdata Store . data ĊĠĠĠ Ġ. catch Ġ{ Ġexception Ġ-> ĊĠĠĠĠĠ Ġif Ġ( exception Ġis ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġemit ( empty Preferences ()) ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow Ġexception ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. map Ġ{ Ġpreferences Ġ-> ĊĠĠĠĠĠ Ġval ĠbackgroundColor Ġ= Ġ ĠApp BackgroundColor . getColor ByName ( preferences [ BACKGROUND _ COLOR ] Ġ?: ĠDEFAULT _ COLOR ) ĊĊĠĠĠĠĠ ĠUser Preferences ( backgroundColor ) ĊĠĠĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġconst Ġval ĠP REF S _ NAME Ġ= Ġ" user _ preferences " ĊĠĠĠ Ġprivate Ġval ĠBACK GROUND _ COLOR Ġ= Ġstring Preferences Key (" key _ app _ background _ color ") ĊĠĠĠ Ġprivate Ġval ĠNOTE _ SORT _ ORDER Ġ= Ġstring Preferences Key (" note _ sort _ preference ") ĊĠĠĠ Ġprivate Ġval ĠNOTE _ PRIORITY _ SET Ġ= Ġstring Set Preferences Key (" note _ priority _ set ") ĊĠ Ġ} Ċ Ċ }