Delete app activities when device is removed

This commit is contained in:
Jonas L 2019-04-15 00:00:00 +00:00
parent 76b627e26a
commit 15976189fa
3 changed files with 8 additions and 3 deletions

View file

@ -26,6 +26,6 @@ interface AppActivityDao {
@Query("DELETE FROM app_activity WHERE device_id = :deviceId AND app_package_name = :packageName AND activity_class_name IN (:activities)")
fun deleteAppActivitiesSync(deviceId: String, packageName: String, activities: List<String>)
@Query("DELETE FROM app_activity WHERE device_id = :deviceId")
fun deleteAppActivitiesByDeviceId(deviceId: String)
@Query("DELETE FROM app_activity WHERE device_id IN (:deviceIds)")
fun deleteAppActivitiesByDeviceIds(deviceIds: List<String>)
}

View file

@ -38,6 +38,9 @@ interface AppDao {
@Query("DELETE FROM app WHERE device_id = :deviceId AND package_name IN (:packageNames)")
fun removeAppsByDeviceIdAndPackageNamesSync(deviceId: String, packageNames: List<String>)
@Query("DELETE FROM app WHERE device_id IN (:deviceIds)")
fun removeAppsByDeviceIds(deviceIds: List<String>)
@Query("SELECT * FROM app WHERE device_id IN (:deviceIds)")
fun getAppsByDeviceIds(deviceIds: List<String>): LiveData<List<App>>

View file

@ -116,6 +116,8 @@ object ApplyServerDataStatus {
if (removedDeviceEntryIds.isNotEmpty()) {
database.device().removeDevicesById(removedDeviceEntryIds)
database.app().removeAppsByDeviceIds(removedDeviceEntryIds)
database.appActivity().deleteAppActivitiesByDeviceIds(removedDeviceEntryIds)
}
}
@ -235,7 +237,7 @@ object ApplyServerDataStatus {
run {
// apply activities
database.appActivity().deleteAppActivitiesByDeviceId(item.deviceId)
database.appActivity().deleteAppActivitiesByDeviceIds(listOf(item.deviceId))
database.appActivity().addAppActivitiesSync(item.activities.map {
AppActivity(
deviceId = item.deviceId,