package Ġcom . battle l ancer . series guide . shows . history Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . text . format . Date Utils Ċ import Ġandroidx . room . Dao Ċ import Ġandroidx . room . Insert Ċ import Ġandroidx . room . On Conflict Strategy Ċ import Ġandroidx . room . Query Ċ import Ġcom . battle l ancer . series guide . provider . Sg Room Database Ċ import Ġtim ber . log . Tim ber Ċ Ċ /** Ċ Ġ* ĠHelper Ġmethods Ġfor Ġadding Ġor Ġremoving Ġlocal Ġepisode Ġwatch Ġactivity . Ċ Ġ*/ Ċ @ Dao Ċ interface ĠS g Activity Helper Ġ{ ĊĊĠĠĠ Ġ@ Insert ( on Conflict Ġ= ĠOn Conflict Strategy . REPLACE ) ĊĠĠĠ Ġfun Ġinsert Activity ( activity : ĠS g Activity ) ĊĊĠĠĠ Ġ@ Query (" DELETE ĠFROM Ġactivity ĠWHERE Ġactivity _ time Ġ< Ġ: delete Ol der Than Ms ") ĊĠĠĠ Ġfun Ġdelete Old Activity ( delete Ol der Than Ms : ĠLong ): ĠInt ĊĊĠĠĠ Ġ@ Query (" DELETE ĠFROM Ġactivity ĠWHERE Ġactivity _ episode Ġ= Ġ: episode Stable Id ĠAND Ġactivity _ type Ġ= Ġ: type ") ĊĠĠĠ Ġfun Ġdelete Activity ( episode Stable Id : ĠString , Ġtype : ĠInt ): ĠInt ĊĊĠĠĠ Ġ@ Query (" SELECT Ġ* ĠFROM Ġactivity ĠORDER ĠBY Ġactivity _ time ĠDESC ") ĊĠĠĠ Ġfun ĠgetActivity By Latest (): ĠList < Sg Activity > ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠHIST ORY _ THRESHOLD Ġ= Ġ 3 0 Ġ* ĠDate Utils . DAY _ IN _ M ILL IS ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAdds Ġan Ġactivity Ġentry Ġfor Ġthe Ġgiven Ġepisode Ġwith Ġthe Ġcurrent Ġtime Ġas Ġtimestamp . ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġan Ġentry Ġalready Ġexists Ġit Ġis Ġreplaced . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠAlso Ġcle ans Ġup Ġold Ġentries . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġadd Activity ( context : ĠContext , Ġepisode Id : ĠLong , Ġshow Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNeed Ġto Ġuse Ġglobal ĠIDs Ġ( in Ġcase Ġa Ġshow Ġis Ġremoved Ġand Ġadded Ġagain ). ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdatabase Ġ= ĠS g Room Database . getInstance ( context ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTry Ġusing ĠTM DB ĠID ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtype Ġ= ĠActivity Type . TM DB _ ID ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġshow Stable Id Or Zero Ġ= Ġdatabase . sg Show 2 Helper (). get Show T mdb Id ( show Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġepisode Stable Id Or Zero Ġ= Ġdatabase . sg Episode 2 Helper (). get Episode T mdb Id ( episode Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFall Ġback Ġto ĠTV DB ĠID ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Stable Id Or Zero Ġ== Ġ 0 Ġ|| Ġepisode Stable Id Or Zero Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠActivity Type . TV DB _ ID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Stable Id Or Zero Ġ= Ġdatabase . sg Show 2 Helper (). get Show Tv db Id ( show Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode Stable Id Or Zero Ġ= Ġdatabase . sg Episode 2 Helper (). get Episode Tv db Id ( episode Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Stable Id Or Zero Ġ== Ġ 0 Ġ|| Ġepisode Stable Id Or Zero Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShould Ġnever Ġhappen : Ġhave Ġneither ĠTM DB Ġor ĠTV DB ĠID . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Failed Ġto Ġadd Ġactivity , Ġno ĠTM DB Ġor ĠTV DB ĠID Ġfor Ġshow Ġ% d Ġepisode Ġ% d ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Month Ago Ġ= ĠSystem . currentTimeMillis () Ġ- ĠHIST ORY _ THRESHOLD ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhelper Ġ= Ġdatabase . sg Activity Helper () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdelete Ġall Ġentries Ġolder Ġthan Ġ 3 0 Ġdays ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdeleted Ġ= Ġhelper . delete Old Activity ( time Month Ago ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" add Activity : Ġremoved Ġ% d Ġoutdated Ġactivities ", Ġdeleted ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġadd Ġnew Ġentry ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcurrentTime Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= ĠS g Activity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode Stable Id Or Zero . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Stable Id Or Zero . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentTime , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhelper . insert Activity ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" add Activity : Ġepisode : Ġ% d Ġtimestamp : Ġ% d ", Ġepisode Id , ĠcurrentTime ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠT ries Ġto Ġremove Ġany Ġactivity Ġwith Ġthe Ġgiven Ġepisode Ġid . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġremove Activity ( context : ĠContext , Ġepisode Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNeed Ġto Ġuse Ġglobal ĠIDs Ġ( in Ġcase Ġa Ġshow Ġis Ġremoved Ġand Ġadded Ġagain ). ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdatabase Ġ= ĠS g Room Database . getInstance ( context ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTry Ġremoval Ġusing ĠTM DB ĠID . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdeleted Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġepisode T mdb Id Or Zero Ġ= Ġdatabase . sg Episode 2 Helper (). get Episode T mdb Id ( episode Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( episode T mdb Id Or Zero Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeleted Ġ+= Ġdatabase . sg Activity Helper () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. delete Activity ( episode T mdb Id Or Zero . toString (), ĠActivity Type . TM DB _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTry Ġremoval Ġusing ĠTV DB ĠID . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġepisode Tv db Id Or Zero Ġ= Ġdatabase . sg Episode 2 Helper (). get Episode Tv db Id ( episode Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( episode Tv db Id Or Zero Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeleted Ġ+= Ġdatabase . sg Activity Helper () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. delete Activity ( episode Tv db Id Or Zero . toString (), ĠActivity Type . TV DB _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" remove Activity : Ġdeleted Ġ% d Ġactivity Ġentries ", Ġdeleted ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }