From dbbaee91c54ee4426c9ea58c0239d3afb5b3ba4a Mon Sep 17 00:00:00 2001 From: Paul Woitaschek Date: Fri, 10 Mar 2023 22:32:28 +0100 Subject: [PATCH] Synchronize the book updating. --- .idea/.gitignore | 1 + .../main/kotlin/voice/data/repo/BookRepository.kt | 12 +++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.idea/.gitignore b/.idea/.gitignore index 6f05d8501f..308f293fce 100644 --- a/.idea/.gitignore +++ b/.idea/.gitignore @@ -13,3 +13,4 @@ kotlinScripting.xml /deploymentTargetDropDown.xml /.name /kotlinc.xml +/modules.xml diff --git a/data/src/main/kotlin/voice/data/repo/BookRepository.kt b/data/src/main/kotlin/voice/data/repo/BookRepository.kt index 467366d8ef..3527fbcd3c 100644 --- a/data/src/main/kotlin/voice/data/repo/BookRepository.kt +++ b/data/src/main/kotlin/voice/data/repo/BookRepository.kt @@ -19,11 +19,11 @@ class BookRepository ) { private var warmedUp = false - private val warmupMutex = Mutex() + private val mutex = Mutex() private suspend fun warmUp() { if (warmedUp) return - warmupMutex.withLock { + mutex.withLock { if (warmedUp) return@withLock val chapters = contentRepo.all() .filter { it.isActive } @@ -59,9 +59,11 @@ class BookRepository } suspend fun updateBook(id: BookId, update: (BookContent) -> BookContent) { - val content = contentRepo.get(id) ?: return - val updated = update(content) - contentRepo.put(updated) + mutex.withLock { + val content = contentRepo.get(id) ?: return + val updated = update(content) + contentRepo.put(updated) + } } private suspend fun BookContent.book(): Book? {