package Ġcom . gb ros . tab sl ite . utilities Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġcom . gb ros . tab sl ite . data . App Database Ċ import Ġcom . gb ros . tab sl ite . data . Playlist Ċ import Ġcom . gb ros . tab sl ite . data . Playlist Entry Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . async Ċ Ċ private Ġconst Ġval ĠLOG _ NAME Ġ= Ġ" tab sl ite . Playlist Helper " ĊĊ Ċ object ĠPlaylist Helper Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHelper Ġfunction Ġto Ġadd Ġthis Ġclass 's Ġ[ tab Id ] Ġto Ġthe Ġ[ playlist Id ] Ġgiven . Ġ ĠInser ts Ġa Ġnew Ġentry ĊĠĠĠĠ Ġ* Ġat Ġthe Ġend , Ġupdates Ġthe Ġprevious Ġlast Ġentry Ġto Ġkeep Ġthe Ġlinked Ġlist Ġgoing , Ġand Ġupdates Ġthe ĊĠĠĠĠ Ġ* Ġmaster Ġ[ Playlist ] Ġmodified Date . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠaddTo Playlist ( playlist Id : ĠInt , Ġtab Id : ĠInt , Ġtranspose : ĠInt Ġ= Ġ 0 , Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġfind Ġexisting Ġlast Ġentry Ġin Ġthis Ġplaylist ĊĠĠĠĠĠĠĠ Ġval ĠgetData Job Ġ= ĠGlobal Scope . async Ġ{ ĠApp Database . getInstance ( context ). playlist Entry Dao (). getLast Entry In Playlist ( playlist Id ) Ġ} ĊĠĠĠĠĠĠĠ ĠgetData Job . invoke On Completion Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpreviously Last Entry Ġ= ĠgetData Job . get Completed () Ġ Ġ// Ġused Ġto Ġbe Ġthe Ġlast Ġentry Ġin Ġthe Ġplaylist , Ġuntil Ġwe Ġcame Ġalong ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( LOG _ NAME , Ġ" Adding Ġnew Ġplaylist Ġentry Ġ( tab id Ġ$ tab Id ) Ġto Ġplaylist Ġ$ playlist Id . Ġ Ġprevious Ġentry Ġid : Ġ${ previous ly Last Entry ?. entry Id }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġinsert Ġnew Ġentry Ġinto Ġthe Ġdatabase ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentry Ġ= ĠPlaylist Entry ( playlist Id , Ġtab Id , Ġnull , Ġpreviously Last Entry ?. entry Id , ĠSystem . currentTimeMillis (), Ġtranspose ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinsert Job Ġ= ĠGlobal Scope . async Ġ{ ĠApp Database . getInstance ( context ). playlist Entry Dao (). insert ( entry ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Job . invoke On Completion Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Entry Id Ġ= Ġinsert Job . get Completed (). toInt () Ġ Ġ// Ġthe Ġentry Ġwe Ġjust Ġadded ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġupdate Ġthe Ġpreviously Ġlast Ġentry 's Ġnext _ entry _ id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreviously Last Entry ?. entry Id ?. let Ġ{ Ġprev Ġ-> ĠApp Database . getInstance ( context ). playlist Entry Dao (). set Next Entry Id ( prev , Ġnew Entry Id ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġupdate Ġplaylist Ġmodified Time ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp Database . getInstance ( context ). playlist Dao (). update Timestamp ( playlist Id , ĠSystem . currentTimeMillis ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }