@mozsquib I think for activate() it will be better to give a additional callback. Since musicdb.enumerateAll() is async function, if we ModeManager.push() right after SubListView.activate(), we will see an empty SubListView first then the callback of musicdb.enumerateAll() will update the SubListView with songs.

So if we can ModeManager.push() after SubListView updating its ui, we can avoid the users seeing the progress from empty to finished, we can have better ux for sure.

Or you can just put ModeManager.push(MODE_SUBLIST) in the last of activate().