diff --git a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/CopyMoveFileHandler.kt b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/CopyMoveFileHandler.kt index fd990f04c..9ba5df0a4 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/CopyMoveFileHandler.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/CopyMoveFileHandler.kt @@ -208,7 +208,7 @@ class CopyMoveFileHandler @Inject constructor( } } - fun handleDetectingFileSystemState() { + suspend fun handleDetectingFileSystemState() { if (isBookLessThan4GB()) { performCopyMoveOperationIfSufficientSpaceAvailable() } else { @@ -217,7 +217,7 @@ class CopyMoveFileHandler @Inject constructor( } } - fun handleCannotWrite4GbFileState() { + suspend fun handleCannotWrite4GbFileState() { if (isBookLessThan4GB()) { performCopyMoveOperationIfSufficientSpaceAvailable() } else { @@ -240,14 +240,12 @@ class CopyMoveFileHandler @Inject constructor( } } - fun performCopyMoveOperationIfSufficientSpaceAvailable() { - lifecycleScope?.launch { - val availableSpace = storageCalculator.availableBytes(File(sharedPreferenceUtil.prefStorage)) - if (hasNotSufficientStorageSpace(availableSpace)) { - fileCopyMoveCallback?.insufficientSpaceInStorage(availableSpace) - } else { - performCopyMoveOperation() - } + suspend fun performCopyMoveOperationIfSufficientSpaceAvailable() { + val availableSpace = storageCalculator.availableBytes(File(sharedPreferenceUtil.prefStorage)) + if (hasNotSufficientStorageSpace(availableSpace)) { + fileCopyMoveCallback?.insufficientSpaceInStorage(availableSpace) + } else { + performCopyMoveOperation() } } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/LocalLibraryFragment.kt b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/LocalLibraryFragment.kt index f2e8abbbc..4b44c8613 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/LocalLibraryFragment.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/LocalLibraryFragment.kt @@ -680,14 +680,16 @@ class LocalLibraryFragment : BaseFragment(), CopyMoveFileHandler.FileCopyMoveCal private fun storeDeviceInPreferences( storageDevice: StorageDevice ) { - sharedPreferenceUtil.putPrefStorage( - sharedPreferenceUtil.getPublicDirectoryPath(storageDevice.name) - ) - sharedPreferenceUtil.putStoragePosition( - if (storageDevice.isInternal) INTERNAL_SELECT_POSITION - else EXTERNAL_SELECT_POSITION - ) - // after selecting the storage try to copy/move the zim file. - copyMoveFileHandler?.copyMoveZIMFileInSelectedStorage(storageDevice) + lifecycleScope.launch { + sharedPreferenceUtil.putPrefStorage( + sharedPreferenceUtil.getPublicDirectoryPath(storageDevice.name) + ) + sharedPreferenceUtil.putStoragePosition( + if (storageDevice.isInternal) INTERNAL_SELECT_POSITION + else EXTERNAL_SELECT_POSITION + ) + // after selecting the storage try to copy/move the zim file. + copyMoveFileHandler?.copyMoveZIMFileInSelectedStorage(storageDevice) + } } } diff --git a/app/src/test/java/org/kiwix/kiwixmobile/localLibrary/CopyMoveFileHandlerTest.kt b/app/src/test/java/org/kiwix/kiwixmobile/localLibrary/CopyMoveFileHandlerTest.kt index a8875e183..f18c6102b 100644 --- a/app/src/test/java/org/kiwix/kiwixmobile/localLibrary/CopyMoveFileHandlerTest.kt +++ b/app/src/test/java/org/kiwix/kiwixmobile/localLibrary/CopyMoveFileHandlerTest.kt @@ -128,16 +128,15 @@ class CopyMoveFileHandlerTest { } @Test - fun validateZimFileCanCopyOrMoveShouldReturnFalseWhenDetectingFileSystem() = - runTest { - every { fileHandler.isBookLessThan4GB() } returns true - prepareFileSystemAndFileForMockk(fileSystemState = DetectingFileSystem) + fun validateZimFileCanCopyOrMoveShouldReturnFalseWhenDetectingFileSystem() = runTest { + every { fileHandler.isBookLessThan4GB() } returns true + prepareFileSystemAndFileForMockk(fileSystemState = DetectingFileSystem) - val result = fileHandler.validateZimFileCanCopyOrMove(storageFile) + val result = fileHandler.validateZimFileCanCopyOrMove(storageFile) - assertFalse(result) - verify { fileHandler.handleDetectingFileSystemState() } - } + assertFalse(result) + coVerify { fileHandler.handleDetectingFileSystemState() } + } @Test fun validateZimFileCanCopyOrMoveShouldReturnFalseWhenCannotWrite4GbFile() = runBlocking { @@ -151,23 +150,23 @@ class CopyMoveFileHandlerTest { val result = fileHandler.validateZimFileCanCopyOrMove(storageFile) assertFalse(result) - verify { fileHandler.handleCannotWrite4GbFileState() } + coVerify { fileHandler.handleCannotWrite4GbFileState() } } @Test - fun handleDetectingFileSystemStateShouldPerformCopyMoveOperationIfBookLessThan4GB() { + fun handleDetectingFileSystemStateShouldPerformCopyMoveOperationIfBookLessThan4GB() = runTest { fileHandler = spyk(fileHandler) prepareFileSystemAndFileForMockk() every { fileHandler.isBookLessThan4GB() } returns true - every { fileHandler.performCopyMoveOperationIfSufficientSpaceAvailable() } just Runs + coEvery { fileHandler.performCopyMoveOperationIfSufficientSpaceAvailable() } just Runs fileHandler.handleDetectingFileSystemState() - verify { fileHandler.performCopyMoveOperationIfSufficientSpaceAvailable() } + coVerify { fileHandler.performCopyMoveOperationIfSufficientSpaceAvailable() } } @Test - fun handleDetectingFileSystemStateShouldObserveFileSystemStateIfBookGreaterThan4GB() { + fun handleDetectingFileSystemStateShouldObserveFileSystemStateIfBookGreaterThan4GB() = runTest { fileHandler = spyk(fileHandler) prepareFileSystemAndFileForMockk(fileSystemState = DetectingFileSystem) every { fileHandler.isBookLessThan4GB() } returns false @@ -178,19 +177,19 @@ class CopyMoveFileHandlerTest { } @Test - fun handleCannotWrite4GbFileStateShouldPerformCopyMoveOperationIfBookLessThan4GB() { + fun handleCannotWrite4GbFileStateShouldPerformCopyMoveOperationIfBookLessThan4GB() = runTest { fileHandler = spyk(fileHandler) prepareFileSystemAndFileForMockk() every { fileHandler.isBookLessThan4GB() } returns true - every { fileHandler.performCopyMoveOperationIfSufficientSpaceAvailable() } just Runs + coEvery { fileHandler.performCopyMoveOperationIfSufficientSpaceAvailable() } just Runs fileHandler.handleCannotWrite4GbFileState() - verify { fileHandler.performCopyMoveOperationIfSufficientSpaceAvailable() } + coVerify { fileHandler.performCopyMoveOperationIfSufficientSpaceAvailable() } } @Test - fun handleCannotWrite4GbFileStateShouldCallCallbackIfBookGreaterThan4GB() { + fun handleCannotWrite4GbFileStateShouldCallCallbackIfBookGreaterThan4GB() = runTest { fileHandler = spyk(fileHandler) prepareFileSystemAndFileForMockk() every { fileHandler.isBookLessThan4GB() } returns false diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index aa59c8599..01ab5522e 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -42,7 +42,7 @@ object Versions { const val io_objectbox: String = "3.5.0" - const val io_mockk: String = "1.13.7" + const val io_mockk: String = "1.13.13" const val android_arch_lifecycle_extensions: String = "1.1.1" diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/FileExtensions.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/FileExtensions.kt index 8db3cd0f8..203c83e00 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/FileExtensions.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/FileExtensions.kt @@ -19,17 +19,12 @@ package org.kiwix.kiwixmobile.core.extensions import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.runBlocking import kotlinx.coroutines.withContext import java.io.File suspend fun File.isFileExist(): Boolean = withContext(Dispatchers.IO) { exists() } -fun File.freeSpace(): Long = runBlocking { - withContext(Dispatchers.IO) { - freeSpace - } -} +suspend fun File.freeSpace(): Long = withContext(Dispatchers.IO) { freeSpace } suspend fun File.totalSpace(): Long = withContext(Dispatchers.IO) { totalSpace } diff --git a/custom/src/main/java/org/kiwix/kiwixmobile/custom/download/effects/SetPreferredStorageWithMostSpace.kt b/custom/src/main/java/org/kiwix/kiwixmobile/custom/download/effects/SetPreferredStorageWithMostSpace.kt index c7031a149..4924bd396 100644 --- a/custom/src/main/java/org/kiwix/kiwixmobile/custom/download/effects/SetPreferredStorageWithMostSpace.kt +++ b/custom/src/main/java/org/kiwix/kiwixmobile/custom/download/effects/SetPreferredStorageWithMostSpace.kt @@ -28,7 +28,7 @@ import javax.inject.Inject class SetPreferredStorageWithMostSpace @Inject constructor( private val storageCalculator: StorageCalculator, - private val sharedPreferenceUtil: SharedPreferenceUtil + private val sharedPreferenceUtil: SharedPreferenceUtil, ) : SideEffect { override fun invokeWith(activity: AppCompatActivity) { activity.lifecycleScope.launch {