package Ġme . ibr ah im sn . library Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ class ĠLive Preference < T > Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġupdates : ĠObservable < String >, ĊĠĠĠ Ġprivate Ġval Ġpreferences : ĠSharedPreferences , ĊĠĠĠ Ġprivate Ġval Ġkey : ĠString , ĊĠĠĠ Ġprivate Ġval ĠdefaultValue : ĠT ? Ċ ) Ġ: ĠMutable LiveData < T >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġdis posable : ĠDis posable ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlast Value : ĠT ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlast Value Ġ= Ġ( preferences . all [ key ] Ġas ĠT ) Ġ?: ĠdefaultValue ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġlast Value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Active () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Active () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( last Value Ġ!= Ġpreferences . all [ key ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Value Ġ= Ġpreferences . all [ key ] Ġas ĠT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Value ( last Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdis posable Ġ= Ġupdates ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġt Ġ-> Ġt Ġ== Ġkey Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Value (( preferences . all [ it ] Ġas ĠT ) Ġ?: ĠdefaultValue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Inactive () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Inactive () ĊĠĠĠĠĠĠĠ Ġdis posable ?. dispose () ĊĠĠĠ Ġ} Ċ }