diff --git a/app/src/main/java/foundation/e/drive/synchronization/SyncProxy.kt b/app/src/main/java/foundation/e/drive/synchronization/SyncProxy.kt index 579a48d90b2a2240757c086f8b0f963c4723a9fb..011108f93c792cdab15838a04b78f7de0385cdc5 100644 --- a/app/src/main/java/foundation/e/drive/synchronization/SyncProxy.kt +++ b/app/src/main/java/foundation/e/drive/synchronization/SyncProxy.kt @@ -16,6 +16,7 @@ import foundation.e.drive.database.FailedSyncPrefsManager import foundation.e.drive.models.SyncRequest import foundation.e.drive.models.SyncWrapper import foundation.e.drive.utils.AppConstants.ACCOUNT_DATA_RELATIVE_QUOTA_KEY +import foundation.e.drive.utils.AppConstants.ACCOUNT_DATA_TOTAL_QUOTA_KEY import foundation.e.drive.utils.CommonUtils import foundation.e.drive.work.WorkLauncher import timber.log.Timber @@ -58,6 +59,7 @@ interface SyncManager { */ object SyncProxy: SyncRequestCollector, SyncManager { private const val MAX_RELATIVE_QUOTA = 99.0 + private const val UNLIMITED_QUOTA = -3 private val syncRequestQueue: ConcurrentLinkedQueue = ConcurrentLinkedQueue() //could we use channel instead ? private val startedRequests: ConcurrentHashMap = ConcurrentHashMap() @@ -227,10 +229,13 @@ object SyncProxy: SyncRequestCollector, SyncManager { accountManager ) ?: return true + val totalQuota = accountManager.getUserData(account, ACCOUNT_DATA_TOTAL_QUOTA_KEY) + .toIntOrNull() ?: UNLIMITED_QUOTA + val relativeQuota = accountManager.getUserData(account, ACCOUNT_DATA_RELATIVE_QUOTA_KEY) ?: "$MAX_RELATIVE_QUOTA" - return relativeQuota.toFloat() >= MAX_RELATIVE_QUOTA + return totalQuota != UNLIMITED_QUOTA && relativeQuota.toFloat() >= MAX_RELATIVE_QUOTA } override fun pollSyncRequest(): SyncRequest? {