88package com.owncloud.android.operations.e2e
99
1010import android.content.Context
11- import com.nextcloud.client.account.UserAccountManager
12- import com.nextcloud.client.di.Injectable
11+ import com.nextcloud.client.account.User
1312import com.nextcloud.client.network.ClientFactory
1413import com.nextcloud.utils.e2ee.E2EVersionHelper.isV2Plus
1514import com.owncloud.android.datamodel.FileDataStorageManager
1615import com.owncloud.android.datamodel.OCFile
1716import com.owncloud.android.datamodel.e2e.v2.decrypted.DecryptedFolderMetadataFile
17+ import com.owncloud.android.lib.common.OwnCloudClient
1818import com.owncloud.android.lib.common.utils.Log_OC
1919import com.owncloud.android.operations.RefreshFolderOperation
2020import com.owncloud.android.utils.theme.CapabilityUtils
@@ -24,57 +24,54 @@ import kotlinx.coroutines.SupervisorJob
2424import kotlinx.coroutines.cancel
2525import kotlinx.coroutines.launch
2626import 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 () {
0 commit comments