package Ġcom . github . ps m . mov ied b . repository Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroidx . core . content . edit Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . map Ċ import Ġcom . github . ps m . mov ied b . db . Box Store Ċ import Ġcom . github . ps m . mov ied b . db . model . Book Mark Type Ċ import Ġcom . github . ps m . mov ied b . db . model . Bookmark Ċ import Ġcom . github . ps m . mov ied b . db . model . Bookmark _ Ċ import Ġcom . github . ps m . mov ied b . utils . Json X Ċ import Ġcom . github . ps m . mov ied b . utils . as LiveData Ċ import Ġkotlinx . serialization . decode FromString Ċ import Ġkotlinx . serialization . encode ToString Ċ import Ġtim ber . log . Tim ber Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠBook mark Repository Impl Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġbox Store : ĠBox Store , ĊĠĠĠ Ġprivate Ġval Ġpref : ĠSharedPreferences Ċ ) Ġ: ĠBook mark Repository Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġbook ( id : ĠLong , Ġis Movie : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexist Ġ= Ġbox Store ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. bookmark ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. query () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. equal ( Bookmark _. id , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. equal ( Bookmark _. is Movie , Ġis Movie ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. findFirst () ĊĠĠĠĠĠĠĠ Ġif Ġ( exist Ġ!= Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġbookmark Ġ= ĠBook mark ( id Ġ= Ġid , Ġis Movie Ġ= Ġis Movie ) ĊĠĠĠĠĠĠĠ Ġbookmark . movie Detail . target Ġ= Ġbox Store . movie Detail [ id ] ĊĠĠĠĠĠĠĠ Ġbookmark . tv Detail . target Ġ= Ġbox Store . tv Detail [ id ] ĊĠĠĠĠĠĠĠ Ġbox Store . bookmark . put ( bookmark ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġun Book ( id : ĠLong , Ġis Movie : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġbox Store . bookmark ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. query () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. equal ( Bookmark _. id , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. equal ( Bookmark _. is Movie , Ġis Movie ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. findFirst () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġsave Latest Remove Item ( item ) ĊĠĠĠĠĠĠĠ Ġbox Store . bookmark . remove ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġundo Un Bookmark () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġget Latest Remove Item () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġbook ( item . id Ġ?: Ġitem . uid , Ġitem . is Movie ) ĊĠĠĠĠĠĠĠ Ġremove Latest Remove Item () ĊĠĠĠĠĠĠĠ ĠTim ber . i (" Undo : Ġ$ item ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Book marks (): ĠLive Data < List < Book Mark Type >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbox Store . bookmark . query (). as LiveData (). map Ġ{ Ġitems Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems . map Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d ( item . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . is Movie Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBook Mark Type . Movie ( item . movie Detail . target !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBook Mark Type . Tv ( item . tv Detail . target !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbook State ( id : ĠLong , Ġis Movie : ĠBoolean ): ĠLive Data < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbox Store ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. bookmark ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. query () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. equal ( Bookmark _. id , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. equal ( Bookmark _. is Movie , Ġis Movie ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. as LiveData () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . first OrNull () Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Bookmark ( id : ĠLong ): ĠBook mark ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbox Store . bookmark [ id ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Latest Remove Item ( item : ĠBook mark ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Json Ġ= ĠJson X . encode ToString ( item ) ĊĠĠĠĠĠĠĠ Ġpref . edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( LATE ST _ REMOVE _ ID , Ġitem Json ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Latest Remove Item (): ĠBook mark ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitem Json Ġ= Ġpref . getString ( LATE ST _ REMOVE _ ID , Ġnull ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson X . decode FromString ( item Json ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġremove Latest Remove Item () Ġ{ ĊĠĠĠĠĠĠĠ Ġpref . edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove ( LATE ST _ REMOVE _ ID ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠL ATE ST _ REMOVE _ ID Ġ= Ġ" latest _ remove _ id " ĊĠĠĠ Ġ} Ċ }