package Ġcom . ick . kal amb ury . di Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . datastore . preferences . SharedPreferences Migration Ċ import Ġandroidx . datastore . preferences . rx java 3 . Rx Preference DataStore Builder Ċ import Ġcom . ick . kal amb ury . Build Config Ċ import Ġcom . ick . kal amb ury . settings .* Ċ import Ġcom . ick . kal amb ury . settings . migrations . Main Preferences First Run Migration Ċ import Ġcom . ick . kal amb ury . settings . migrations . Main Preferences Migrations Ċ import Ġcom . ick . kal amb ury . util . Scheduler Provider Ċ import Ġcom . ick . kal amb ury . util . settings . DataStore Wrapper Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġdagger . h ilt . Install In Ċ import Ġdagger . h ilt . android . qual ifiers . ApplicationContext Ċ import Ġdagger . h ilt . components . Singleton Component Ċ import Ġjava . io . File Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Install In ( Singleton Component :: class ) Ċ @ Module Ċ class ĠPreference Storage Module Ġ{ ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Preference Storage ( ĊĠĠĠĠĠĠĠ Ġ@ ApplicationContext Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġkeys : ĠPreference Keys , ĊĠĠĠĠĠĠĠ Ġscheduler Provider : ĠScheduler Provider , ĊĠĠĠ Ġ): ĠMain Preference Storage Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġold Name Ġ= Ġ"${ Build Config . APPLICATION _ ID }_ preferences " ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĠBuild Config . APPLICATION _ ID ĊĊĠĠĠĠĠĠĠ Ġreturn ĠMain Preference Storage Impl ( DataStore Wrapper ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRx Preference DataStore Builder ( context , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Io Scheduler ( scheduler Provider . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addData Migration ( SharedPreferences Migration ( context , Ġold Name , Ġkeys . main Keys )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Rx Data Migration ( Main Preferences First Run Migration ( context , Ġkeys )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Rx Data Migration ( Main Preferences Migrations ( context , Ġkeys )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()), Ġkeys ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Encryption Keys Storage ( ĊĠĠĠĠĠĠĠ Ġ@ ApplicationContext Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġkeys : ĠPreference Keys , ĊĠĠĠĠĠĠĠ Ġscheduler Provider : ĠScheduler Provider , ĊĠĠĠ Ġ): ĠEncryption Keys Storage Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġold Name Ġ= Ġ" no _ b ck _ prefs " ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġ" no _ b ck _ prefs . preferences _ pb " ĊĊĠĠĠĠĠĠĠ Ġreturn ĠEncryption Keys Storage Impl ( DataStore Wrapper ( Rx Preference DataStore Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( context . no Backup Files Dir , Ġname ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Io Scheduler ( scheduler Provider . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addData Migration ( SharedPreferences Migration ( context , Ġold Name , Ġkeys . encryption Keys )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()), Ġkeys ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ Ċ }