Reconcile confirmed photo uploads with server state
This commit is contained in:
@@ -39,10 +39,9 @@ interface PhotoUploadDao {
|
|||||||
SELECT * FROM photo_uploads
|
SELECT * FROM photo_uploads
|
||||||
WHERE routeId = :routeId
|
WHERE routeId = :routeId
|
||||||
AND status = 'CONFIRMED'
|
AND status = 'CONFIRMED'
|
||||||
AND clientRequestId IN (:clientRequestIds)
|
|
||||||
""",
|
""",
|
||||||
)
|
)
|
||||||
suspend fun confirmedForServerPhotos(routeId: String, clientRequestIds: List<String>): List<PhotoUploadEntity>
|
suspend fun confirmedForRoute(routeId: String): List<PhotoUploadEntity>
|
||||||
|
|
||||||
@Query(
|
@Query(
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -80,10 +80,7 @@ class PhotoUploadOutbox(
|
|||||||
}
|
}
|
||||||
|
|
||||||
suspend fun discardConfirmedServerPhotos(route: DriverRouteDto) {
|
suspend fun discardConfirmedServerPhotos(route: DriverRouteDto) {
|
||||||
val confirmedRequestIds = route.photos.mapNotNull { it.clientRequestId }.distinct()
|
dao.confirmedForRoute(route.id).forEach { upload ->
|
||||||
if (confirmedRequestIds.isEmpty()) return
|
|
||||||
|
|
||||||
dao.confirmedForServerPhotos(route.id, confirmedRequestIds).forEach { upload ->
|
|
||||||
File(upload.localPath).delete()
|
File(upload.localPath).delete()
|
||||||
dao.delete(upload.clientRequestId)
|
dao.delete(upload.clientRequestId)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user