Skip to content

Commit f8ae2da

Browse files
committed
wip
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
1 parent d1cb26e commit f8ae2da

3 files changed

Lines changed: 32 additions & 33 deletions

File tree

app/src/main/java/com/owncloud/android/operations/UploadFileOperation.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,8 @@ private RemoteOperationResult encryptedUpload(OwnCloudClient client, OCFile pare
526526
return result;
527527
}
528528

529-
long counter = e2eeCounterFetchOperation.resolveE2EECounter(parentFile, getStorageManager(), mContext);
529+
long lastCounter = e2eeCounterFetchOperation.fetch(mContext, parentFile, getStorageManager(), user, client);
530+
long counter = lastCounter + 1;
530531

531532
try {
532533
token = getFolderUnlockTokenOrLockFolder(client, parentFile, counter);

app/src/main/java/com/owncloud/android/operations/e2e/E2EECounterFetchOperation.kt

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
package com.owncloud.android.operations.e2e
99

1010
import android.content.Context
11-
import com.nextcloud.client.account.UserAccountManager
12-
import com.nextcloud.client.di.Injectable
11+
import com.nextcloud.client.account.User
1312
import com.nextcloud.client.network.ClientFactory
1413
import com.nextcloud.utils.e2ee.E2EVersionHelper.isV2Plus
1514
import com.owncloud.android.datamodel.FileDataStorageManager
1615
import com.owncloud.android.datamodel.OCFile
1716
import com.owncloud.android.datamodel.e2e.v2.decrypted.DecryptedFolderMetadataFile
17+
import com.owncloud.android.lib.common.OwnCloudClient
1818
import com.owncloud.android.lib.common.utils.Log_OC
1919
import com.owncloud.android.operations.RefreshFolderOperation
2020
import com.owncloud.android.utils.theme.CapabilityUtils
@@ -24,57 +24,54 @@ import kotlinx.coroutines.SupervisorJob
2424
import kotlinx.coroutines.cancel
2525
import kotlinx.coroutines.launch
2626
import kotlinx.coroutines.withContext
27-
import javax.inject.Inject
28-
29-
class E2EECounterFetchOperation: Injectable {
30-
@Inject
31-
lateinit var accountManager: UserAccountManager
32-
33-
@Inject
34-
lateinit var clientFactory: ClientFactory
3527

28+
class E2EECounterFetchOperation {
3629
private val scope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
3730

3831
companion object {
3932
private const val TAG = "E2EECounterFetchOperation"
4033
}
4134

4235
fun fetchAsync(
36+
context: Context,
4337
file: OCFile,
4438
storageManager: FileDataStorageManager,
45-
context: Context,
39+
user: User,
40+
clientFactory: ClientFactory,
4641
onComplete: (Long) -> Unit
4742
) {
4843
scope.launch {
49-
val counter = resolveE2EECounter(file, storageManager, context)
44+
val client = clientFactory.create(user)
45+
val counter = fetch(context, file, storageManager, user, client)
5046
withContext(Dispatchers.Main) {
5147
onComplete(counter)
5248
}
5349
}
5450
}
5551

56-
fun resolveE2EECounter(
52+
fun fetch(
53+
context: Context,
5754
file: OCFile,
5855
storageManager: FileDataStorageManager,
59-
context: Context
60-
): Long {
61-
return try {
62-
val client = clientFactory.create(accountManager.user)
63-
val metadata = RefreshFolderOperation
64-
.getDecryptedFolderMetadata(true, file, client, accountManager.user, context)
65-
if (metadata is DecryptedFolderMetadataFile) {
66-
file.setE2eCounter(metadata.metadata.counter)
67-
storageManager.saveFile(file)
68-
Log_OC.i(TAG, "latest counter fetched")
69-
metadata.metadata.counter
70-
} else {
71-
Log_OC.w(TAG, "local counter is used")
72-
getFallbackCounter(context, file)
73-
}
74-
} catch (e: Exception) {
75-
Log_OC.e(TAG, "error refreshing E2E counter: ${e.message}")
76-
getFallbackCounter(context, file)
56+
user: User,
57+
client: OwnCloudClient
58+
): Long = try {
59+
val metadata = RefreshFolderOperation
60+
.getDecryptedFolderMetadata(true, file, client, user, context)
61+
if (metadata is DecryptedFolderMetadataFile) {
62+
val result = metadata.metadata.counter
63+
file.setE2eCounter(result)
64+
storageManager.saveFile(file)
65+
Log_OC.i(TAG, "latest counter fetched, counter is: $result")
66+
result
67+
} else {
68+
val result = getFallbackCounter(context, file)
69+
Log_OC.w(TAG, "local counter is used, counter is: $result")
70+
result
7771
}
72+
} catch (e: Exception) {
73+
Log_OC.e(TAG, "error refreshing E2E counter: ${e.message}")
74+
getFallbackCounter(context, file)
7875
}
7976

8077
fun stop() {

app/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,8 @@ private void setupView() {
352352
binding.internalShareDescription.setVisibility(View.VISIBLE);
353353
binding.externalSharesHeadline.setText(getResources().getString(R.string.create_end_to_end_encrypted_share_title));
354354
final Context context = requireContext();
355-
e2eeCounterFetchOperation.fetchAsync(file, fileDataStorageManager, context, counter -> {
355+
356+
e2eeCounterFetchOperation.fetchAsync(context, file, fileDataStorageManager, user, clientFactory, counter -> {
356357
if (binding == null) {
357358
return Unit.INSTANCE;
358359
}

0 commit comments

Comments
 (0)