package Ġcom . br illi ances oft . m ush af . ui . bookmarks Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġcom . ab ed . magenta X . android . res o ures . color Of Ċ import Ġcom . ab ed . magenta X . android . views . g one Ċ import Ġcom . ab ed . magenta X . android . views . visible Ċ import Ġcom . ab ed . magenta X . android . widgets . sn ackbar . material Ċ import Ġcom . ab ed . magenta X . android . widgets . sn ackbar . show Action Ċ import Ġcom . ab ed . magenta X . android . widgets . sn ackbar . sn ackbar Ċ import Ġcom . br illi ances oft . m ush af . R Ċ import Ġcom . br illi ances oft . m ush af . framework . data . repo . Repository Ċ import Ġcom . br illi ances oft . m ush af . model . A ya Ċ import Ġcom . br illi ances oft . m ush af . ui . MainActivity Ċ import Ġcom . br illi ances oft . m ush af . ui . common . ViewModel Factory Ċ import Ġcom . br illi ances oft . m ush af . ui . common . shared Component . M ush af Application Ċ import Ġcom . br illi ances oft . m ush af . ui . q uran . Q uran ViewModel Ċ import Ġcom . br illi ances oft . m ush af . ui . common . shared Component . Base Activity Ċ import Ġcom . br illi ances oft . m ush af . ui . common . shared Component . Base Fragment Ċ import Ġcom . br illi ances oft . m ush af . utils . extensions . viewModel Of Ċ import Ġkotlinx . android . synt hetic . main . fragment _ bookmarks .* Ċ import Ġkotlinx . coroutines .* Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠBook marks Fragment Ġ: ĠBase Fragment () Ġ{ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġrepository : ĠRepository ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Factory ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġq uran ViewModel : ĠQ uran ViewModel ĊĠĠĠ Ġprivate Ġval Ġjob Ġ= ĠSuper visor Job () ĊĠĠĠ Ġprivate Ġval Ġcoroutine Scope Ġ= ĠCor outine Scope ( Dispatch ers . Main Ġ+ Ġjob ) ĊĠĠĠ Ġoverride Ġval Ġlayout Id : ĠInt Ġ= ĠR . layout . fragment _ bookmarks ĊĠĠĠ Ġprivate Ġvar Ġdeleted A ya Index Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġdeleted A ya : ĠA ya ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdata List Ġ= Ġmutable ListOf < A ya >() ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbook marks Adapter : ĠBook marks Adapter ĊĠĠĠ Ġprivate Ġval Ġto Delete Ġ= Ġmutable ListOf < A ya >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠM ush af Application . app Component . inject ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠMainActivity ). update Toolbar ( R . string . bookmarks ) ĊĠĠĠĠĠĠĠ Ġq uran ViewModel Ġ= ĠviewModel Of ( Q uran ViewModel :: class . java , ĠviewModel Factory ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdispatch Bookmark Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( data List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty _ data _ text . g one () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook marks Adapter Ġ= ĠBook marks Adapter ( data List , Ġthis @ Book marks Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler _ bookmarks . adapter Ġ= Ġbook marks Adapter ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġempty _ data _ text . visible () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġrefresh Book marks Data () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnewData Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ Ġrepository . getAll By Book marked () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata List Ġ= ĠnewData ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata List . sortBy Ġ{ Ġit . edition !!. type Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdispatch Bookmark Data () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Book marked ( aya : ĠA ya ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdeleted A ya Ġ= Ġa ya ĊĠĠĠĠĠĠĠ Ġadd ToDelete ( aya ) ĊĠĠĠĠĠĠĠ Ġdeleted A ya Index Ġ= Ġdata List . indexOf ( aya ) ĊĠĠĠĠĠĠĠ Ġdata List . remove ( aya ) ĊĠĠĠĠĠĠĠ Ġbook marks Adapter . notify Item Removed ( deleted A ya Index ) ĊĠĠĠĠĠĠĠ Ġbook marks Adapter . notify Item Range Changed ( deleted A ya Index , Ġdata List . size ) ĊĠĠĠĠĠĠĠ Ġactive Delete A ya Action () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġactive Delete A ya Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsn ackbar Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ĠBase Activity ). sn ackbar ( getString ( R . string . remove _ bookmark )). material ( true ) ĊĠĠĠĠĠĠĠ Ġsn ackbar . set Anchor View ( R . id . bottom _ app _ nav ) ĊĊĠĠĠĠĠĠĠ Ġsn ackbar . show Action ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . undo ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction TextColor Ġ= Ġcolor Of ( R . color . color Secondary ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġrestore Deleted A ya () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd ToDelete ( aya : ĠA ya ) Ġ{ ĊĠĠĠĠĠĠĠ Ġto Delete . add ( aya ) ĊĠĠĠĠĠĠĠ Ġif Ġ( data List . isEmpty ()) Ġempty _ data _ text . visible () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrestore Deleted A ya () Ġ{ ĊĠĠĠĠĠĠĠ Ġto Delete . remove ( deleted A ya ) ĊĠĠĠĠĠĠĠ Ġdata List . add ( deleted A ya Index , Ġdeleted A ya !! ) ĊĠĠĠĠĠĠĠ Ġbook marks Adapter . notify Item Inserted ( deleted A ya Index ) ĊĠĠĠĠĠĠĠ Ġbook marks Adapter . notify Item Range Changed ( deleted A ya Index , Ġdata List . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete Per manently () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( to Delete . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcoroutine Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( aya Ġin Ġto Delete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġq uran ViewModel . update Bookmark State In Data ( aya ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . update Bookmark Status ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa ya . number , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa ya . edition !!. identifier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Delete . clear () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjob . cancel Children () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġrefresh Book marks Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġdelete Per manently () ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ