package Ġcom . an es ab ml . quot ey Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroidx . appcompat . app . AppCompat Delegate Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġcom . an es ab ml . quot ey . data . I Quote DataSource Ċ import Ġcom . an es ab ml . quot ey . data . I Quote Repository Ċ import Ġcom . an es ab ml . quot ey . data . Quote DataSource Ċ import Ġcom . an es ab ml . quot ey . data . Quote Repository Ċ import Ġcom . an es ab ml . quot ey . data . api . ApiService Ċ import Ġcom . an es ab ml . quot ey . data . db . Quot ey Database Ċ import Ġcom . an es ab ml . quot ey . domain . Inter actors Ċ import Ġcom . an es ab ml . quot ey . domain . use case .* Ċ import Ġcom . an es ab ml . quot ey . ui . favorites . Favorite Quotes ViewModel Ċ import Ġcom . an es ab ml . quot ey . ui . main . Main ViewModel Ċ import Ġcom . an es ab ml . quot ey . utils . Worker Utils Ċ import Ġorg . k oin . android . ext . k oin . android Context Ċ import Ġorg . k oin . android x . view model . dsl . viewModel Ċ import Ġorg . k oin . core . context . start K oin Ċ import Ġorg . k oin . dsl . module Ċ Ċ class ĠMy App Ġ: ĠApplication () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĊĠĠĠĠĠĠĠ Ġsetup DI () ĊĊĠĠĠĠĠĠĠ Ġsetup Shared Preference Listener () ĊĊĠĠĠĠĠĠĠ ĠWorker Utils . setup Work ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup DI () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmy Module Ġ= Ġmodule Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQu ot ey Database . getInstance ( this @ My App ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApi Service ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle < I Quote DataSource > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQuote DataSource ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle < I Quote Repository > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQuote Repository ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInter actors ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGet Random Quote ( get ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAdd Quote ( get ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUpdate Quote ( get ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGet F avorites Quotes ( get ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGetAll Quotes ( get ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Ġ{ ĠMain ViewModel ( get ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Ġ{ ĠF avorite Quotes ViewModel ( get ()) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstart K oin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdeclare Ġused ĠAndroid Ġcontext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Context ( this @ My App ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdeclare Ġmodules ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodules ( my Module ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Shared Preference Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefault SharedPreferences Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSharedPreferences . On Shared Preference ChangeListener Ġ{ Ġshared Preferences , Ġkey Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key Ġ== Ġ" theme ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( shared Preferences . getString (" theme ", Ġ" light ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" light " Ġ-> ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ NO ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" dark " Ġ-> ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ YES ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" auto " Ġ-> ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ FOLLOW _ SYSTEM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdefault SharedPreferences . register On Shared Preference ChangeListener ( listener ) ĊĠĠĠ Ġ} Ċ }