package Ġk nf . k uma . favorite Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġk nf . k uma . commons . do On UI Ċ import Ġk nf . k uma . database . Cache DB Ċ import Ġk nf . k uma . favorite . objects . Fav Sorter Ċ import Ġk nf . k uma . favorite . objects . Info Container Ċ import Ġk nf . k uma . po jos . Fav Section Ċ import Ġk nf . k uma . po jos . Favorite Object Ċ import Ġorg . jetbrains . ank o . do Async Ċ import Ġjava . util .* Ċ Ċ object ĠF av Section Helper Ġ{ ĊĠĠĠ Ġprivate Ġval Ġinfo Container Ġ= ĠInfo Container () ĊĠĠĠ Ġvar Ġcurrent List : ĠMutable List < Favorite Object > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprivate Ġval Ġlive Data Ġ= ĠMutable LiveData < Mutable List < Favorite Object >>() ĊĊĠĠĠ Ġprivate Ġval Ġlist : ĠMutable List < Favorite Object > ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Favorite Object >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcurrent Section : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsection : ĠMutable List < Favorite Object > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġno Section : ĠMutable List < Favorite Object > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( favorite Object Ġin ĠCache DB . INSTANCE . fav s DAO (). by Category ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Section Ġ== Ġnull Ġ|| Ġcurrent Section Ġ!= Ġfavorite Object . category ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Section Ġ!= Ġnull Ġ&& Ġcurrent Section Ġ!= Ġfavorite Object . category ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Section Ġ!= ĠF avorite Object . CATEGORY _ NONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Fav Section ( current Section )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCollections . sort ( section , ĠF av Sorter ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . addAll ( section ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno Section Ġ= ĠArrayList ( section ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsection Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Section Ġ= Ġfavorite Object . category ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsection . add ( favorite Object ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( current Section Ġ== Ġfavorite Object . category ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsection . add ( favorite Object ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Section Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Section Ġ!= ĠF avorite Object . CATEGORY _ NONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Fav Section ( current Section )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCollections . sort ( section , ĠF av Sorter ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . addAll ( section ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno Section Ġ= ĠArrayList ( section ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( no Section . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Fav Section ( Favorite Object . CATEGORY _ NONE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCollections . sort ( no Section , ĠF av Sorter ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . addAll ( no Section ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Container . set Lists ( current List , Ġlist ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent List Ġ= Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit (): ĠLive Data < Mutable List < Favorite Object >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreload () ĊĠĠĠĠĠĠĠ Ġreturn Ġget LiveData () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Info Container ( favorite Object : ĠF avorite Object ?): ĠInfo Container Ġ{ ĊĠĠĠĠĠĠĠ Ġinfo Container . reload ( favorite Object ) ĊĠĠĠĠĠĠĠ Ġreturn Ġinfo Container ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget LiveData (): ĠLive Data < Mutable List < Favorite Object >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlive Data ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset LiveData ( list : ĠMutable List < Favorite Object >) Ġ{ ĊĠĠĠĠĠĠĠ Ġdo On UI Ġ{ Ġlive Data . setValue ( list ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreload () Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Async Ġ{ Ġset LiveData ( list ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ