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 6344a6c7550fe585eac4ccf9093c3d27d1c066aa..5124623e6af75a198c13fbc1273cd24fb6a3ed9c 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 {