Skip to content

Commit 0ec64c9

Browse files
alperozturk96backportbot[bot]
authored andcommitted
fix(upload-list): handle conflict actions
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
1 parent bd00774 commit 0ec64c9

2 files changed

Lines changed: 24 additions & 4 deletions

File tree

app/src/main/java/com/nextcloud/utils/OCFileUtils.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ object OCFileUtils {
5555
return fallbackPair
5656
}
5757

58-
private fun getExifSize(path: String): Pair<Int, Int>? = try {
58+
fun getExifSize(path: String): Pair<Int, Int>? = try {
5959
val exif = ExifInterface(path)
6060
var w = exif.getAttributeInt(ExifInterface.TAG_IMAGE_WIDTH, 0)
6161
var h = exif.getAttributeInt(ExifInterface.TAG_IMAGE_LENGTH, 0)
@@ -78,7 +78,7 @@ object OCFileUtils {
7878
null
7979
}
8080

81-
private fun getBitmapSize(path: String): Pair<Int, Int>? = try {
81+
fun getBitmapSize(path: String): Pair<Int, Int>? = try {
8282
val options = android.graphics.BitmapFactory.Options().apply { inJustDecodeBounds = true }
8383
android.graphics.BitmapFactory.decodeFile(path, options)
8484
val w = options.outWidth

app/src/main/java/com/nextcloud/utils/extensions/RemoteFileExtensions.kt

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,40 @@
77

88
package com.nextcloud.utils.extensions
99

10+
import com.nextcloud.utils.OCFileUtils
1011
import com.nextcloud.utils.TimeConstants
1112
import com.owncloud.android.lib.resources.files.model.RemoteFile
1213
import com.owncloud.android.utils.FileUtil
14+
import com.owncloud.android.utils.MimeTypeUtil
1315

1416
fun RemoteFile.isSame(path: String?): Boolean {
1517
val localFile = path?.toFile() ?: return false
1618

17-
// remote file timestamp in milli not micro sec
19+
// remote file timestamp in millisecond not microsecond
1820
val localLastModifiedTimestamp = localFile.lastModified() / TimeConstants.MILLIS_PER_SECOND
1921
val localCreationTimestamp = FileUtil.getCreationTimestamp(localFile)
2022
val localSize: Long = localFile.length()
2123

2224
return size == localSize &&
2325
localCreationTimestamp != null &&
2426
localCreationTimestamp == creationTimestamp &&
25-
modifiedTimestamp == localLastModifiedTimestamp * TimeConstants.MILLIS_PER_SECOND
27+
modifiedTimestamp == localLastModifiedTimestamp * TimeConstants.MILLIS_PER_SECOND &&
28+
this.areImageDimensionsSame(path)
29+
}
30+
31+
@Suppress("ReturnCount")
32+
private fun RemoteFile.areImageDimensionsSame(path: String): Boolean {
33+
if (!MimeTypeUtil.isImage(mimeType)) {
34+
// can't compare it's not image
35+
return true
36+
}
37+
38+
val localFileImageDimension = OCFileUtils.getExifSize(path) ?: OCFileUtils.getBitmapSize(path)
39+
if (localFileImageDimension == null) {
40+
// can't compare local file image dimension is not determined
41+
return true
42+
}
43+
44+
return localFileImageDimension.first.toFloat() == imageDimension?.width &&
45+
localFileImageDimension.second.toFloat() == imageDimension?.height
2646
}

0 commit comments

Comments
 (0)