package Ġspace . tar an . ark navigator . mvp . model Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . datastore . preferences . core . boolean Preferences Key Ċ import Ġandroidx . datastore . preferences . core . edit Ċ import Ġandroidx . datastore . preferences . core . int Preferences Key Ċ import Ġandroidx . datastore . preferences . preferences DataStore Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . distinct Until Changed Ċ import Ġkotlinx . coroutines . flow . first Ċ import Ġkotlinx . coroutines . flow . map Ċ import Ġspace . tar an . ark navigator . Build Config Ċ import Ġspace . tar an . ark navigator . utils . Sorting Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠUser Preferences Ġ@ Inject Ġconstructor ( val Ġcontext : ĠContext ) Ġ{ ĊĠĠĠ Ġprivate Ġval ĠSHARE D _ PREFER ENCES _ KEY Ġ= Ġ" user _ preferences " ĊĊĠĠĠ Ġprivate Ġval ĠContext . preferences Datastore Ġby Ġpreferences DataStore ( ĊĠĠĠĠĠĠĠ ĠSHARE D _ PREFER ENCES _ KEY ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġdata Store Ġ= Ġcontext . preferences Datastore ĊĊĠĠĠ Ġval Ġsorting Flow : ĠFlow < Sorting > Ġ= Ġdata Store . data . map Ġ{ Ġpreferences Ġ-> ĊĠĠĠĠĠĠĠ Ġconvert Int To Sorting ( preferences [ Preferences Keys . SORT ING ]) ĊĠĠĠ Ġ}. distinct Until Changed () ĊĊĠĠĠ Ġval Ġascending Flow : ĠFlow < Boolean > Ġ= Ġdata Store . data . map Ġ{ Ġpreferences Ġ-> ĊĠĠĠĠĠĠĠ Ġpreferences [ Preferences Keys . SORT ING _ ASC ENDING ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠDefault Values . SORT ING _ ASC ENDING ĊĠĠĠ Ġ}. distinct Until Changed () ĊĊĠĠĠ Ġsuspend Ġfun Ġclear Preferences () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Sorting ( Default Values . SORT ING ) ĊĠĠĠĠĠĠĠ Ġset Sorting Ascending ( Default Values . SORT ING _ ASC ENDING ) ĊĠĠĠĠĠĠĠ Ġset Crash Report Enabled ( Default Values . CR ASH _ REPORT ) ĊĠĠĠĠĠĠĠ Ġset Cache Replication Enabled ( Default Values . IMG _ CACHE _ RE PLICATION ) ĊĠĠĠĠĠĠĠ Ġset Index Replication Enabled ( Default Values . INDEX _ RE PLICATION ) ĊĠĠĠĠĠĠĠ Ġset Removing Lost Resources Tags Enabled ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Values . RE MOV ING _ LO ST _ RESOURCES _ TAGS ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġset Sorting ( sorting : ĠSort ing ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Store . edit Ġ{ Ġpreferences Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences [ Preferences Keys . SORT ING ] Ġ= Ġsorting . ordinal ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġget Sorting (): ĠSort ing Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġint Value Ġ= Ġdata Store . data . first ()[ Preferences Keys . SORT ING ] ĊĠĠĠĠĠĠĠ Ġreturn Ġconvert Int To Sorting ( intValue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġset Sorting Ascending ( is Ascending : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Store . edit Ġ{ Ġpreferences Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences [ Preferences Keys . SORT ING _ ASC ENDING ] Ġ= Ġis Ascending ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġis Sorting Ascending (): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġdata Store . data . first ()[ Preferences Keys . SORT ING _ ASC ENDING ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠDefault Values . SORT ING _ ASC ENDING ĊĊĠĠĠ Ġsuspend Ġfun Ġset Crash Report Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Store . edit Ġ{ Ġpreferences Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences [ Preferences Keys . CR ASH _ REPORT ] Ġ= Ġenabled ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġis Crash Report Enabled (): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġdata Store . data . first ()[ Preferences Keys . CR ASH _ REPORT ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠDefault Values . CR ASH _ REPORT ĊĊĠĠĠ Ġsuspend Ġfun Ġset Cache Replication Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Store . edit Ġ{ Ġpreferences Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences [ Preferences Keys . IMG _ CACHE _ RE PLICATION ] Ġ= Ġenabled ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġis Cache Replication Enabled (): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġdata Store . data . first ()[ Preferences Keys . IMG _ CACHE _ RE PLICATION ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠDefault Values . IMG _ CACHE _ RE PLICATION ĊĊĠĠĠ Ġsuspend Ġfun Ġset Index Replication Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Store . edit Ġ{ Ġpreferences Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences [ Preferences Keys . INDEX _ RE PLICATION ] Ġ= Ġenabled ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġis Index Replication Enabled (): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġdata Store . data . first ()[ Preferences Keys . INDEX _ RE PLICATION ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠDefault Values . INDEX _ RE PLICATION ĊĊĠĠĠ Ġsuspend Ġfun Ġset Removing Lost Resources Tags Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Store . edit Ġ{ Ġpreferences Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences [ Preferences Keys . RE MOV ING _ LO ST _ RESOURCES _ TAGS ] Ġ= Ġenabled ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġis Removing Lost Resources Tags Enabled (): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġdata Store . data . first ()[ Preferences Keys . RE MOV ING _ LO ST _ RESOURCES _ TAGS ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠDefault Values . RE MOV ING _ LO ST _ RESOURCES _ TAGS ĊĊĠĠĠ Ġprivate Ġfun Ġconvert Int To Sorting ( intValue : ĠInt ?): ĠSort ing Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( intValue Ġ== Ġnull ) ĠSort ing . DEFAULT ĊĠĠĠĠĠĠĠ Ġelse ĠSort ing . values ()[ intValue ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġobject ĠPreferences Keys Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠSORT ING Ġ= Ġint Preferences Key (" sorting ") ĊĠĠĠĠĠĠĠ Ġval ĠSORT ING _ ASC ENDING Ġ= Ġboolean Preferences Key (" sorting _ is _ ascending ") ĊĠĠĠĠĠĠĠ Ġval ĠCR ASH _ REPORT Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboolean Preferences Key (" crash _ report ") ĊĠĠĠĠĠĠĠ Ġval ĠI MG _ CACHE _ RE PLICATION Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboolean Preferences Key (" img _ cache _ replication ") ĊĠĠĠĠĠĠĠ Ġval ĠINDEX _ RE PLICATION Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboolean Preferences Key (" index _ replication ") ĊĠĠĠĠĠĠĠ Ġval ĠRE MOV ING _ LO ST _ RESOURCES _ TAGS Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboolean Preferences Key (" re moving _ lost _ resources _ tags ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġobject ĠDefault Values Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠSORT ING Ġ= ĠSort ing . DEFAULT ĊĠĠĠĠĠĠĠ Ġval ĠSORT ING _ ASC ENDING Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval ĠCR ASH _ REPORT Ġ= ĠBuild Config . DEBUG ĊĠĠĠĠĠĠĠ Ġval ĠI MG _ CACHE _ RE PLICATION Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval ĠINDEX _ RE PLICATION Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval ĠRE MOV ING _ LO ST _ RESOURCES _ TAGS Ġ= Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ