From 3a9eddba747c004e9c187188b4a80d7d33f5007c Mon Sep 17 00:00:00 2001 From: hasibprince Date: Sat, 3 Dec 2022 09:08:14 +0600 Subject: [PATCH] database operations are made synchronized --- .../manager/database/DatabaseRepository.kt | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/manager/database/DatabaseRepository.kt b/app/src/main/java/foundation/e/apps/manager/database/DatabaseRepository.kt index 6344a6c75..5124623e6 100644 --- a/app/src/main/java/foundation/e/apps/manager/database/DatabaseRepository.kt +++ b/app/src/main/java/foundation/e/apps/manager/database/DatabaseRepository.kt @@ -6,6 +6,8 @@ import foundation.e.apps.OpenForTesting import foundation.e.apps.manager.database.fusedDownload.FusedDownload import foundation.e.apps.manager.database.fusedDownload.FusedDownloadDAO import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock import javax.inject.Inject import javax.inject.Singleton @@ -15,12 +17,18 @@ class DatabaseRepository @Inject constructor( private val fusedDownloadDAO: FusedDownloadDAO ) { + private val mutex = Mutex() + suspend fun addDownload(fusedDownload: FusedDownload) { - return fusedDownloadDAO.addDownload(fusedDownload) + mutex.withLock { + return fusedDownloadDAO.addDownload(fusedDownload) + } } suspend fun getDownloadList(): List { - return fusedDownloadDAO.getDownloadList() + mutex.withLock { + return fusedDownloadDAO.getDownloadList() + } } fun getDownloadLiveList(): LiveData> { @@ -28,15 +36,21 @@ class DatabaseRepository @Inject constructor( } suspend fun updateDownload(fusedDownload: FusedDownload) { - fusedDownloadDAO.updateDownload(fusedDownload) + mutex.withLock { + fusedDownloadDAO.updateDownload(fusedDownload) + } } suspend fun deleteDownload(fusedDownload: FusedDownload) { - return fusedDownloadDAO.deleteDownload(fusedDownload) + mutex.withLock { + return fusedDownloadDAO.deleteDownload(fusedDownload) + } } suspend fun getDownloadById(id: String): FusedDownload? { - return fusedDownloadDAO.getDownloadById(id) + mutex.withLock { + return fusedDownloadDAO.getDownloadById(id) + } } fun getDownloadFlowById(id: String): Flow { -- GitLab