diff --git a/app/src/main/java/com/infomaniak/drive/data/models/UploadFile.kt b/app/src/main/java/com/infomaniak/drive/data/models/UploadFile.kt index 97bc26bcd3..7ce32a27cd 100644 --- a/app/src/main/java/com/infomaniak/drive/data/models/UploadFile.kt +++ b/app/src/main/java/com/infomaniak/drive/data/models/UploadFile.kt @@ -105,13 +105,9 @@ open class UploadFile( fun uploadConflictOption() = if (replaceOnConflict()) ConflictOption.VERSION else ConflictOption.RENAME fun resetUploadToken() { - getRealmInstance().use { realm -> - uploadFileByUriQuery(realm, uri).findFirst()?.apply { - realm.executeTransaction { - uploadToken = null - uploadHost = null - } - } + updateDbInstance { + it.uploadToken = null + it.uploadHost = null } } @@ -127,24 +123,19 @@ open class UploadFile( } fun updateFileSize(newFileSize: Long) { - getRealmInstance().use { realm -> - uploadFileByUriQuery(realm, uri).findFirst()?.let { uploadFile -> - realm.executeTransaction { uploadFile.fileSize = newFileSize } - } + update { + it.fileSize = newFileSize } - fileSize = newFileSize } fun updateUploadToken(newUploadToken: String, uploadHost: String) { - getRealmInstance().use { realm -> - uploadFileByUriQuery(realm, uri).findFirst()?.let { uploadFile -> - realm.executeTransaction { - uploadFile.uploadToken = newUploadToken - uploadFile.uploadHost = uploadHost - } - } + updateDbInstance { + it.uploadToken = newUploadToken + it.uploadHost = uploadHost + } + updateCurrentInstance { + it.uploadToken = newUploadToken } - uploadToken = newUploadToken } fun deleteIfExists(keepFile: Boolean = false, customRealm: Realm? = null) { @@ -169,6 +160,23 @@ open class UploadFile( } } + private fun update(transaction: (UploadFile) -> Unit) { + updateDbInstance(transaction) + updateCurrentInstance(transaction) + } + + private fun updateDbInstance(transactionBlock: (UploadFile) -> Unit) { + getRealmInstance().use { realm -> + uploadFileByUriQuery(realm, uri) + .findFirst() + ?.let { uploadFile -> realm.executeTransaction { transactionBlock(uploadFile) } } + } + } + + private fun updateCurrentInstance(transactionBlock: (UploadFile) -> Unit) { + transactionBlock(this) + } + enum class Type { SYNC, UPLOAD, SHARED_FILE, SYNC_OFFLINE, CLOUD_STORAGE }