@@ -15,12 +15,13 @@ import com.nextcloud.client.device.PowerManagementService
1515import com.nextcloud.client.network.ConnectivityService
1616import com.owncloud.android.MainApp
1717import com.owncloud.android.datamodel.FileDataStorageManager
18+ import com.owncloud.android.datamodel.OCFile
1819import com.owncloud.android.lib.common.utils.Log_OC
1920import com.owncloud.android.operations.SynchronizeFolderOperation
2021import com.owncloud.android.utils.FileStorageUtils
2122import java.io.File
2223
23- @Suppress(" Detekt.NestedBlockDepth" )
24+ @Suppress(" Detekt.NestedBlockDepth" , " ReturnCount " )
2425class InternalTwoWaySyncWork (
2526 private val context : Context ,
2627 params : WorkerParameters ,
@@ -47,13 +48,8 @@ class InternalTwoWaySyncWork(
4748 val folders = fileDataStorageManager.getInternalTwoWaySyncFolders(user)
4849
4950 for (folder in folders) {
50- val freeSpaceLeft = File (folder.storagePath).getFreeSpace()
51- val localFolderSize = FileStorageUtils .getFolderSize(File (folder.storagePath, MainApp .getDataFolder()))
52- val remoteFolderSize = folder.fileLength
53-
54- if (freeSpaceLeft < (remoteFolderSize - localFolderSize)) {
55- Log_OC .d(TAG , " Not enough space left!" )
56- result = false
51+ checkFreeSpace(folder)?.let { checkFreeSpaceResult ->
52+ return checkFreeSpaceResult
5753 }
5854
5955 Log_OC .d(TAG , " Folder ${folder.remotePath} : started!" )
@@ -85,6 +81,31 @@ class InternalTwoWaySyncWork(
8581 }
8682 }
8783
84+ @Suppress(" TooGenericExceptionCaught" )
85+ private fun checkFreeSpace (folder : OCFile ): Result ? {
86+ val storagePath = folder.storagePath ? : MainApp .getStoragePath()
87+ val file = File (storagePath)
88+
89+ if (! file.exists()) return null
90+
91+ return try {
92+ val freeSpaceLeft = file.freeSpace
93+ val localFolder = File (storagePath, MainApp .getDataFolder())
94+ val localFolderSize = FileStorageUtils .getFolderSize(localFolder)
95+ val remoteFolderSize = folder.fileLength
96+
97+ if (freeSpaceLeft < (remoteFolderSize - localFolderSize)) {
98+ Log_OC .d(TAG , " Not enough space left!" )
99+ Result .failure()
100+ } else {
101+ null
102+ }
103+ } catch (e: Exception ) {
104+ Log_OC .d(TAG , " Error caught at checkFreeSpace: $e " )
105+ null
106+ }
107+ }
108+
88109 companion object {
89110 const val TAG = " InternalTwoWaySyncWork"
90111 }
0 commit comments