From 2d8c6b1d02889a2e0c1e36f3f54cfc2b50fab8c4 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Fri, 29 Nov 2019 10:12:13 +0100 Subject: [PATCH 1/2] Initial work on v2 with activity Signed-off-by: tobiasKaminsky --- build.gradle | 6 +++++- .../com/nextcloud/client/network/ClientFactory.java | 3 +++ .../nextcloud/client/network/ClientFactoryImpl.java | 13 +++++++++++++ .../com/owncloud/android/jobs/NotificationJob.java | 2 -- .../DetectAuthenticationMethodOperation.java | 3 ++- .../android/services/OperationsService.java | 4 ---- .../android/ui/activities/ActivitiesActivity.java | 4 ++-- .../android/ui/activities/ActivitiesContract.java | 4 ++-- .../android/ui/activities/ActivitiesPresenter.java | 4 ++-- .../data/activities/ActivitiesRepository.java | 4 ++-- .../data/activities/ActivitiesServiceApi.java | 4 ++-- .../data/activities/ActivitiesServiceApiImpl.java | 13 ++++++------- .../data/activities/RemoteActivitiesRepository.java | 4 ++-- .../activities/data/files/FilesServiceApiImpl.java | 1 - .../android/ui/activity/NotificationsActivity.java | 1 - .../ui/adapter/ActivityAndVersionListAdapter.java | 4 ++-- .../android/ui/adapter/ActivityListAdapter.java | 6 +++--- .../ui/fragment/FileDetailActivitiesFragment.java | 9 ++++++--- 18 files changed, 52 insertions(+), 37 deletions(-) diff --git a/build.gradle b/build.gradle index aeb25b865553..6f9a9325cfe9 100644 --- a/build.gradle +++ b/build.gradle @@ -27,6 +27,7 @@ buildscript { classpath 'gradle.plugin.com.github.spotbugs:spotbugs-gradle-plugin:1.6.6' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.2.0" + classpath "commons-httpclient:commons-httpclient:3.1@jar" // remove after entire switch to lib v2 } } @@ -60,7 +61,7 @@ ext { daggerVersion = "2.25.2" markwonVersion = "4.2.0" prismVersion = "2.0.0" - androidLibraryVersion = "master-SNAPSHOT" + androidLibraryVersion = "v2withActivity-SNAPSHOT" travisBuild = System.getenv("TRAVIS") == "true" @@ -272,6 +273,9 @@ dependencies { gplayImplementation "com.github.nextcloud:android-library:$androidLibraryVersion" versionDevImplementation "com.github.nextcloud:android-library:$androidLibraryVersion" qaImplementation "com.github.nextcloud:android-library:$androidLibraryVersion" + compileOnly 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2' // remove after entire switch to lib v2 + implementation "commons-httpclient:commons-httpclient:3.1@jar" // remove after entire switch to lib v2 + implementation 'org.apache.jackrabbit:jackrabbit-webdav:2.13.1' // remove after entire switch to lib v2 implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'com.google.android.material:material:1.1.0-beta01' diff --git a/src/main/java/com/nextcloud/client/network/ClientFactory.java b/src/main/java/com/nextcloud/client/network/ClientFactory.java index 9f8694bab25f..af0779b5d963 100644 --- a/src/main/java/com/nextcloud/client/network/ClientFactory.java +++ b/src/main/java/com/nextcloud/client/network/ClientFactory.java @@ -27,6 +27,7 @@ import android.net.Uri; import com.nextcloud.client.account.User; +import com.nextcloud.common.NextcloudClient; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.accounts.AccountUtils; @@ -55,6 +56,8 @@ class CreationException extends Exception { OwnCloudClient create(User user) throws CreationException; + NextcloudClient createNextcloudClient(User user) throws CreationException; + @Deprecated OwnCloudClient create(Account account) throws OperationCanceledException, AuthenticatorException, IOException, diff --git a/src/main/java/com/nextcloud/client/network/ClientFactoryImpl.java b/src/main/java/com/nextcloud/client/network/ClientFactoryImpl.java index ff88a8487f9b..7aa1f8eb4bd9 100644 --- a/src/main/java/com/nextcloud/client/network/ClientFactoryImpl.java +++ b/src/main/java/com/nextcloud/client/network/ClientFactoryImpl.java @@ -28,6 +28,7 @@ import android.net.Uri; import com.nextcloud.client.account.User; +import com.nextcloud.common.NextcloudClient; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.OwnCloudClientFactory; import com.owncloud.android.lib.common.accounts.AccountUtils; @@ -54,6 +55,18 @@ public OwnCloudClient create(User user) throws CreationException { } } + @Override + public NextcloudClient createNextcloudClient(User user) throws CreationException { + try { + return OwnCloudClientFactory.createNextcloudClient(user.toPlatformAccount(), context); + } catch (OperationCanceledException | + AuthenticatorException | + IOException | + AccountUtils.AccountNotFoundException e) { + throw new CreationException(e); + } + } + @Override public OwnCloudClient create(Account account) throws OperationCanceledException, AuthenticatorException, IOException, diff --git a/src/main/java/com/owncloud/android/jobs/NotificationJob.java b/src/main/java/com/owncloud/android/jobs/NotificationJob.java index 6407d1dbe512..353e08148696 100644 --- a/src/main/java/com/owncloud/android/jobs/NotificationJob.java +++ b/src/main/java/com/owncloud/android/jobs/NotificationJob.java @@ -253,7 +253,6 @@ private void fetchCompleteNotification(Account account, DecryptedPushMessage dec OwnCloudAccount ocAccount = new OwnCloudAccount(currentAccount, context); OwnCloudClient client = OwnCloudClientManagerFactory.getDefaultSingleton() .getClientFor(ocAccount, context); - client.setOwnCloudVersion(accountManager.getServerVersion(currentAccount)); RemoteOperationResult result = new GetNotificationRemoteOperation(decryptedPushMessage.nid) .execute(client); @@ -306,7 +305,6 @@ public void onReceive(Context context, Intent intent) { OwnCloudAccount ocAccount = new OwnCloudAccount(currentAccount, context); OwnCloudClient client = OwnCloudClientManagerFactory.getDefaultSingleton() .getClientFor(ocAccount, context); - client.setOwnCloudVersion(accountManager.getServerVersion(currentAccount)); String actionType = intent.getStringExtra(KEY_NOTIFICATION_ACTION_TYPE); String actionLink = intent.getStringExtra(KEY_NOTIFICATION_ACTION_LINK); diff --git a/src/main/java/com/owncloud/android/operations/DetectAuthenticationMethodOperation.java b/src/main/java/com/owncloud/android/operations/DetectAuthenticationMethodOperation.java index 9e43670b9c83..c15c8f8fef2d 100644 --- a/src/main/java/com/owncloud/android/operations/DetectAuthenticationMethodOperation.java +++ b/src/main/java/com/owncloud/android/operations/DetectAuthenticationMethodOperation.java @@ -30,6 +30,7 @@ import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.files.ExistenceCheckRemoteOperation; +import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpStatus; import java.util.ArrayList; @@ -119,7 +120,7 @@ protected RemoteOperationResult run(OwnCloudClient client) { Log_OC.d(TAG, "Authentication method found: " + authenticationMethodToString(authMethod)); if (authMethod != AuthenticationMethod.UNKNOWN) { - result = new RemoteOperationResult(true, result.getHttpCode(), result.getHttpPhrase(), null); + result = new RemoteOperationResult(true, result.getHttpCode(), result.getHttpPhrase(), new Header[0]); } ArrayList data = new ArrayList<>(); data.add(authMethod); diff --git a/src/main/java/com/owncloud/android/services/OperationsService.java b/src/main/java/com/owncloud/android/services/OperationsService.java index cb2c71bd9350..9e13fd7c420d 100644 --- a/src/main/java/com/owncloud/android/services/OperationsService.java +++ b/src/main/java/com/owncloud/android/services/OperationsService.java @@ -51,7 +51,6 @@ import com.owncloud.android.lib.resources.files.RestoreFileVersionRemoteOperation; import com.owncloud.android.lib.resources.files.model.FileVersion; import com.owncloud.android.lib.resources.shares.ShareType; -import com.owncloud.android.lib.resources.status.OwnCloudVersion; import com.owncloud.android.lib.resources.users.GetUserInfoRemoteOperation; import com.owncloud.android.operations.CheckCurrentCredentialsOperation; import com.owncloud.android.operations.CopyFileOperation; @@ -443,9 +442,6 @@ private void nextOperation() { mOwnCloudClient = OwnCloudClientManagerFactory.getDefaultSingleton(). getClientFor(ocAccount, mService); - OwnCloudVersion version = accountManager.getServerVersion(mLastTarget.mAccount); - mOwnCloudClient.setOwnCloudVersion(version); - mStorageManager = new FileDataStorageManager( mLastTarget.mAccount, mService.getContentResolver() diff --git a/src/main/java/com/owncloud/android/ui/activities/ActivitiesActivity.java b/src/main/java/com/owncloud/android/ui/activities/ActivitiesActivity.java index 4c36bce115b8..1329e2389856 100644 --- a/src/main/java/com/owncloud/android/ui/activities/ActivitiesActivity.java +++ b/src/main/java/com/owncloud/android/ui/activities/ActivitiesActivity.java @@ -29,10 +29,10 @@ import android.widget.TextView; import android.widget.Toast; +import com.nextcloud.common.NextcloudClient; import com.owncloud.android.R; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.activities.model.RichObject; import com.owncloud.android.lib.resources.files.FileUtils; @@ -238,7 +238,7 @@ public void onActivityClicked(RichObject richObject) { } @Override - public void showActivities(List activities, OwnCloudClient client, int lastGiven) { + public void showActivities(List activities, NextcloudClient client, int lastGiven) { boolean clear = false; if (this.lastGiven == UNDEFINED) { clear = true; diff --git a/src/main/java/com/owncloud/android/ui/activities/ActivitiesContract.java b/src/main/java/com/owncloud/android/ui/activities/ActivitiesContract.java index ccc005411b23..8ab3b55eda37 100644 --- a/src/main/java/com/owncloud/android/ui/activities/ActivitiesContract.java +++ b/src/main/java/com/owncloud/android/ui/activities/ActivitiesContract.java @@ -18,8 +18,8 @@ */ package com.owncloud.android.ui.activities; +import com.nextcloud.common.NextcloudClient; import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.ui.activity.BaseActivity; import java.util.List; @@ -27,7 +27,7 @@ public interface ActivitiesContract { interface View { - void showActivities(List activities, OwnCloudClient client, int lastGiven); + void showActivities(List activities, NextcloudClient client, int lastGiven); void showActivitiesLoadError(String error); void showActivityDetailUI(OCFile ocFile); void showActivityDetailUIIsNull(); diff --git a/src/main/java/com/owncloud/android/ui/activities/ActivitiesPresenter.java b/src/main/java/com/owncloud/android/ui/activities/ActivitiesPresenter.java index fc75b82a4f0e..bab61e165f0e 100644 --- a/src/main/java/com/owncloud/android/ui/activities/ActivitiesPresenter.java +++ b/src/main/java/com/owncloud/android/ui/activities/ActivitiesPresenter.java @@ -19,8 +19,8 @@ package com.owncloud.android.ui.activities; +import com.nextcloud.common.NextcloudClient; import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.ui.activities.data.activities.ActivitiesRepository; import com.owncloud.android.ui.activities.data.files.FilesRepository; import com.owncloud.android.ui.activity.BaseActivity; @@ -51,7 +51,7 @@ public void loadActivities(int lastGiven) { activitiesView.setProgressIndicatorState(true); activitiesRepository.getActivities(lastGiven, new ActivitiesRepository.LoadActivitiesCallback() { @Override - public void onActivitiesLoaded(List activities, OwnCloudClient client, int lastGiven) { + public void onActivitiesLoaded(List activities, NextcloudClient client, int lastGiven) { if (!activityStopped) { activitiesView.setProgressIndicatorState(false); diff --git a/src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesRepository.java b/src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesRepository.java index eaa8d980a11d..e8c54e9e74ab 100644 --- a/src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesRepository.java +++ b/src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesRepository.java @@ -18,7 +18,7 @@ */ package com.owncloud.android.ui.activities.data.activities; -import com.owncloud.android.lib.common.OwnCloudClient; +import com.nextcloud.common.NextcloudClient; import java.util.List; @@ -29,7 +29,7 @@ */ public interface ActivitiesRepository { interface LoadActivitiesCallback { - void onActivitiesLoaded(List activities, OwnCloudClient client, int lastGiven); + void onActivitiesLoaded(List activities, NextcloudClient client, int lastGiven); void onActivitiesLoadedError(String error); } diff --git a/src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesServiceApi.java b/src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesServiceApi.java index 55cb665844a7..419a5c0ba884 100644 --- a/src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesServiceApi.java +++ b/src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesServiceApi.java @@ -18,7 +18,7 @@ */ package com.owncloud.android.ui.activities.data.activities; -import com.owncloud.android.lib.common.OwnCloudClient; +import com.nextcloud.common.NextcloudClient; import com.owncloud.android.lib.resources.activities.model.Activity; import java.util.List; @@ -31,7 +31,7 @@ public interface ActivitiesServiceApi { interface ActivitiesServiceCallback { - void onLoaded(T activities, OwnCloudClient client, int lastGiven); + void onLoaded(T activities, NextcloudClient client, int lastGiven); void onError (String error); } diff --git a/src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesServiceApiImpl.java b/src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesServiceApiImpl.java index 360c2458881e..987f0c2320fc 100644 --- a/src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesServiceApiImpl.java +++ b/src/main/java/com/owncloud/android/ui/activities/data/activities/ActivitiesServiceApiImpl.java @@ -30,10 +30,10 @@ import com.nextcloud.client.account.User; import com.nextcloud.client.account.UserAccountManager; +import com.nextcloud.common.NextcloudClient; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.lib.common.OwnCloudAccount; -import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.utils.Log_OC; @@ -75,7 +75,7 @@ private static class GetActivityListTask extends AsyncTask private UserAccountManager accountManager; private int lastGiven; private String errorMessage; - private OwnCloudClient ownCloudClient; + private NextcloudClient client; private GetActivityListTask(Account account, UserAccountManager accountManager, @@ -95,9 +95,8 @@ protected Boolean doInBackground(Void... voids) { OwnCloudAccount ocAccount; try { ocAccount = new OwnCloudAccount(account, context); - ownCloudClient = OwnCloudClientManagerFactory.getDefaultSingleton(). - getClientFor(ocAccount, MainApp.getAppContext()); - ownCloudClient.setOwnCloudVersion(accountManager.getServerVersion(account)); + client = OwnCloudClientManagerFactory.getDefaultSingleton(). + getNextcloudClientFor(ocAccount, MainApp.getAppContext()); GetActivitiesRemoteOperation getRemoteActivitiesOperation; if (lastGiven > 0) { @@ -106,7 +105,7 @@ protected Boolean doInBackground(Void... voids) { getRemoteActivitiesOperation = new GetActivitiesRemoteOperation(); } - final RemoteOperationResult result = getRemoteActivitiesOperation.execute(ownCloudClient); + final RemoteOperationResult result = getRemoteActivitiesOperation.execute(client); if (result.isSuccess() && result.getData() != null) { final ArrayList data = result.getData(); @@ -145,7 +144,7 @@ protected Boolean doInBackground(Void... voids) { protected void onPostExecute(Boolean success) { super.onPostExecute(success); if (success) { - callback.onLoaded(activities, ownCloudClient, lastGiven); + callback.onLoaded(activities, client, lastGiven); } else { callback.onError(errorMessage); } diff --git a/src/main/java/com/owncloud/android/ui/activities/data/activities/RemoteActivitiesRepository.java b/src/main/java/com/owncloud/android/ui/activities/data/activities/RemoteActivitiesRepository.java index 2e2fac0d5b18..524c8dbcf730 100644 --- a/src/main/java/com/owncloud/android/ui/activities/data/activities/RemoteActivitiesRepository.java +++ b/src/main/java/com/owncloud/android/ui/activities/data/activities/RemoteActivitiesRepository.java @@ -18,7 +18,7 @@ */ package com.owncloud.android.ui.activities.data.activities; -import com.owncloud.android.lib.common.OwnCloudClient; +import com.nextcloud.common.NextcloudClient; import java.util.List; @@ -38,7 +38,7 @@ public void getActivities(int lastGiven, @NonNull LoadActivitiesCallback callbac activitiesServiceApi.getAllActivities(lastGiven, new ActivitiesServiceApi.ActivitiesServiceCallback>() { @Override - public void onLoaded(List activities, OwnCloudClient client, int lastGiven) { + public void onLoaded(List activities, NextcloudClient client, int lastGiven) { callback.onActivitiesLoaded(activities, client, lastGiven); } diff --git a/src/main/java/com/owncloud/android/ui/activities/data/files/FilesServiceApiImpl.java b/src/main/java/com/owncloud/android/ui/activities/data/files/FilesServiceApiImpl.java index 8492a0751a4f..8f2fd0ba0986 100644 --- a/src/main/java/com/owncloud/android/ui/activities/data/files/FilesServiceApiImpl.java +++ b/src/main/java/com/owncloud/android/ui/activities/data/files/FilesServiceApiImpl.java @@ -97,7 +97,6 @@ protected Boolean doInBackground(Void... voids) { final Context context = MainApp.getAppContext(); try { OwnCloudClient ownCloudClient = clientFactory.create(user); - ownCloudClient.setOwnCloudVersion(user.getServer().getVersion()); // always update file as it could be an old state saved in database RemoteOperationResult resultRemoteFileOp = new ReadFileRemoteOperation(fileUrl).execute(ownCloudClient); diff --git a/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.java b/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.java index 261d12497aee..8203139a6d5c 100644 --- a/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.java @@ -256,7 +256,6 @@ private void fetchAndSetData() { try { User user = optionalUser.get(); client = clientFactory.create(user); - client.setOwnCloudVersion(user.getServer().getVersion()); } catch (ClientFactory.CreationException e) { Log_OC.e(TAG, "Error initializing client", e); } diff --git a/src/main/java/com/owncloud/android/ui/adapter/ActivityAndVersionListAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/ActivityAndVersionListAdapter.java index 161450ac759c..1f96921bdecf 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/ActivityAndVersionListAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/ActivityAndVersionListAdapter.java @@ -32,9 +32,9 @@ import android.widget.TextView; import com.nextcloud.client.account.CurrentAccountProvider; +import com.nextcloud.common.NextcloudClient; import com.owncloud.android.R; import com.owncloud.android.datamodel.FileDataStorageManager; -import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.resources.activities.model.Activity; import com.owncloud.android.lib.resources.files.model.FileVersion; import com.owncloud.android.lib.resources.status.OCCapability; @@ -69,7 +69,7 @@ public ActivityAndVersionListAdapter( this.versionListInterface = versionListInterface; } - public void setActivityAndVersionItems(List items, OwnCloudClient newClient, boolean clear) { + public void setActivityAndVersionItems(List items, NextcloudClient newClient, boolean clear) { if (client == null) { client = newClient; } diff --git a/src/main/java/com/owncloud/android/ui/adapter/ActivityListAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/ActivityListAdapter.java index 018dd33fb24d..fa48e990a66e 100644 --- a/src/main/java/com/owncloud/android/ui/adapter/ActivityListAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/ActivityListAdapter.java @@ -52,11 +52,11 @@ import com.caverock.androidsvg.SVG; import com.nextcloud.client.account.CurrentAccountProvider; import com.nextcloud.client.network.ClientFactory; +import com.nextcloud.common.NextcloudClient; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.activities.model.Activity; import com.owncloud.android.lib.resources.activities.model.RichElement; @@ -91,7 +91,7 @@ public class ActivityListAdapter extends RecyclerView.Adapter activityItems, OwnCloudClient client, boolean clear) { + public void setActivityItems(List activityItems, NextcloudClient client, boolean clear) { this.client = client; String sTime = ""; diff --git a/src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java b/src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java index ce4d1e37c202..1a495b0fb8b3 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java @@ -42,6 +42,7 @@ import com.nextcloud.client.account.UserAccountManager; import com.nextcloud.client.di.Injectable; import com.nextcloud.client.network.ClientFactory; +import com.nextcloud.common.NextcloudClient; import com.owncloud.android.R; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; @@ -99,6 +100,7 @@ public class FileDetailActivitiesFragment extends Fragment implements private ActivityAndVersionListAdapter adapter; private Unbinder unbinder; private OwnCloudClient ownCloudClient; + private NextcloudClient nextcloudClient; private OCFile file; private Account account; @@ -313,7 +315,8 @@ private void fetchAndSetData(int lastGiven) { Thread t = new Thread(() -> { try { ownCloudClient = clientFactory.create(user); - ownCloudClient.setOwnCloudVersion(user.getServer().getVersion()); + nextcloudClient = clientFactory.createNextcloudClient(user); + isLoadingActivities = true; GetActivitiesRemoteOperation getRemoteNotificationOperation; @@ -325,7 +328,7 @@ private void fetchAndSetData(int lastGiven) { } Log_OC.d(TAG, "BEFORE getRemoteActivitiesOperation.execute"); - final RemoteOperationResult result = getRemoteNotificationOperation.execute(ownCloudClient); + final RemoteOperationResult result = getRemoteNotificationOperation.execute(nextcloudClient); ArrayList versions = null; if (restoreFileVersionSupported) { @@ -401,7 +404,7 @@ public void markCommentsAsRead() { } private void populateList(List activities, boolean clear) { - adapter.setActivityAndVersionItems(activities, ownCloudClient, clear); + adapter.setActivityAndVersionItems(activities, nextcloudClient, clear); } private void setEmptyContent(String headline, String message) { From 787e266b6b41e457dff575822ba6ddaa87d1c9b2 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Tue, 1 Oct 2019 07:38:07 +0200 Subject: [PATCH 2/2] v2: change userInfoRemoteOperation Signed-off-by: tobiasKaminsky --- .idea/codeStyles/Project.xml | 2 +- build.gradle | 2 +- .../AuthenticatorAsyncTask.java | 6 +++-- .../DetectAuthenticationMethodOperation.java | 2 +- .../operations/GetUserProfileOperation.java | 25 ++++++++++++++++--- .../operations/RefreshFolderOperation.java | 2 +- .../operations/common/SyncOperation.java | 24 ++++++++++++++++++ .../android/ui/activity/DrawerActivity.java | 3 ++- .../android/ui/activity/UserInfoActivity.java | 2 +- 9 files changed, 56 insertions(+), 12 deletions(-) diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index 59ad8e8d5438..3fd34d857ad8 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -193,4 +193,4 @@ - \ No newline at end of file + diff --git a/build.gradle b/build.gradle index 6f9a9325cfe9..c3a1af2d2a13 100644 --- a/build.gradle +++ b/build.gradle @@ -61,7 +61,7 @@ ext { daggerVersion = "2.25.2" markwonVersion = "4.2.0" prismVersion = "2.0.0" - androidLibraryVersion = "v2withActivity-SNAPSHOT" + androidLibraryVersion = "v2-SNAPSHOT" travisBuild = System.getenv("TRAVIS") == "true" diff --git a/src/main/java/com/owncloud/android/authentication/AuthenticatorAsyncTask.java b/src/main/java/com/owncloud/android/authentication/AuthenticatorAsyncTask.java index 071c64a258a2..d7f649cc744b 100644 --- a/src/main/java/com/owncloud/android/authentication/AuthenticatorAsyncTask.java +++ b/src/main/java/com/owncloud/android/authentication/AuthenticatorAsyncTask.java @@ -24,6 +24,7 @@ import android.net.Uri; import android.os.AsyncTask; +import com.nextcloud.common.NextcloudClient; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.OwnCloudClientFactory; import com.owncloud.android.lib.common.OwnCloudCredentials; @@ -78,8 +79,9 @@ protected RemoteOperationResult doInBackground(Object... params) { // Operation - get display name if (result.isSuccess()) { - GetUserInfoRemoteOperation remoteUserNameOperation = new GetUserInfoRemoteOperation(); - result = remoteUserNameOperation.execute(client); + NextcloudClient nextcloudClient = OwnCloudClientFactory.createNextcloudClient(uri, context, true); + nextcloudClient.setCredentials(credentials.toOkHttpCredentials()); + result = new GetUserInfoRemoteOperation().execute(nextcloudClient); } } else { diff --git a/src/main/java/com/owncloud/android/operations/DetectAuthenticationMethodOperation.java b/src/main/java/com/owncloud/android/operations/DetectAuthenticationMethodOperation.java index c15c8f8fef2d..4004193828b8 100644 --- a/src/main/java/com/owncloud/android/operations/DetectAuthenticationMethodOperation.java +++ b/src/main/java/com/owncloud/android/operations/DetectAuthenticationMethodOperation.java @@ -126,7 +126,7 @@ protected RemoteOperationResult run(OwnCloudClient client) { data.add(authMethod); result.setData(data); return result; // same result instance, so that other errors - // can be handled by the caller transparently + // can be handled by the caller transparently } private String authenticationMethodToString(AuthenticationMethod value) { diff --git a/src/main/java/com/owncloud/android/operations/GetUserProfileOperation.java b/src/main/java/com/owncloud/android/operations/GetUserProfileOperation.java index d9990160113f..7e556a42dbd7 100644 --- a/src/main/java/com/owncloud/android/operations/GetUserProfileOperation.java +++ b/src/main/java/com/owncloud/android/operations/GetUserProfileOperation.java @@ -19,9 +19,9 @@ */ package com.owncloud.android.operations; -import android.accounts.Account; import android.accounts.AccountManager; +import com.nextcloud.common.NextcloudClient; import com.owncloud.android.MainApp; import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.lib.common.UserInfo; @@ -44,13 +44,28 @@ public class GetUserProfileOperation extends SyncOperation { * * Stored account is implicit in {@link #getStorageManager()}. * - * @return Result of the operation. If successful, includes an instance of + * @return Result of the operation. If successful, includes an instance of * {@link String} with the display name retrieved from the server. * Call {@link RemoteOperationResult#getData()}.get(0) to get it. */ @Override + @Deprecated protected RemoteOperationResult run(OwnCloudClient client) { + throw new UnsupportedOperationException("Not used anymore"); + } + /** + * Performs the operation. + *

+ * Target user account is implicit in 'client'. + *

+ * Stored account is implicit in {@link #getStorageManager()}. + * + * @return Result of the operation. If successful, includes an instance of {@link String} with the display name + * retrieved from the server. Call {@link RemoteOperationResult#getData()}.get(0) to get it. + */ + @Override + protected RemoteOperationResult run(NextcloudClient client) { // get display name GetUserInfoRemoteOperation getDisplayName = new GetUserInfoRemoteOperation(); RemoteOperationResult result = getDisplayName.execute(client); @@ -59,9 +74,11 @@ protected RemoteOperationResult run(OwnCloudClient client) { // store display name with account data AccountManager accountManager = AccountManager.get(MainApp.getAppContext()); UserInfo userInfo = (UserInfo) result.getData().get(0); - Account storedAccount = getStorageManager().getAccount(); - accountManager.setUserData(storedAccount, AccountUtils.Constants.KEY_DISPLAY_NAME, userInfo.getDisplayName()); + accountManager.setUserData(getStorageManager().getAccount(), + AccountUtils.Constants.KEY_DISPLAY_NAME, + userInfo.getDisplayName()); } + return result; } diff --git a/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java b/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java index a6d4afea197f..e809719036bb 100644 --- a/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java +++ b/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java @@ -266,7 +266,7 @@ private void updateOCVersion(OwnCloudClient client) { private void updateUserProfile() { GetUserProfileOperation update = new GetUserProfileOperation(); - RemoteOperationResult result = update.execute(mStorageManager, mContext); + RemoteOperationResult result = update.executeNextcloudClient(mStorageManager, mContext); if (!result.isSuccess()) { Log_OC.w(TAG, "Couldn't update user profile from server"); } else { diff --git a/src/main/java/com/owncloud/android/operations/common/SyncOperation.java b/src/main/java/com/owncloud/android/operations/common/SyncOperation.java index 399ce87da668..1df4eac8de77 100644 --- a/src/main/java/com/owncloud/android/operations/common/SyncOperation.java +++ b/src/main/java/com/owncloud/android/operations/common/SyncOperation.java @@ -66,6 +66,30 @@ public RemoteOperationResult execute(FileDataStorageManager storageManager, Cont return super.execute(this.storageManager.getAccount(), context); } + /** + * Synchronously executes the operation on the received Nextcloud account. + *

+ * Do not call this method from the main thread. + *

+ * This method should be used whenever a Nextcloud account is available, instead of {@link #execute(NetxcloudClient, + * com.owncloud.android.datamodel.FileDataStorageManager)}. + * + * @param storageManager + * @param context Android context for the component calling the method. + * @return Result of the operation. + */ + public RemoteOperationResult executeNextcloudClient(FileDataStorageManager storageManager, Context context) { + if (storageManager == null) { + throw new IllegalArgumentException("Trying to execute a sync operation with a " + + "NULL storage manager"); + } + if (storageManager.getAccount() == null) { + throw new IllegalArgumentException("Trying to execute a sync operation with a " + + "storage manager for a NULL account"); + } + this.storageManager = storageManager; + return super.executeNextcloudClient(this.storageManager.getAccount(), context); + } /** * Synchronously executes the remote operation diff --git a/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java b/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java index 5984380b1f6a..0497844f24ff 100644 --- a/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java @@ -1030,7 +1030,8 @@ public void run() { } final Context context = MainApp.getAppContext(); - RemoteOperationResult result = new GetUserInfoRemoteOperation().execute(user.toPlatformAccount(), context); + RemoteOperationResult result = new GetUserInfoRemoteOperation().executeNextcloudClient(currentAccount, + context); if (result.isSuccess() && result.getData() != null) { final UserInfo userInfo = (UserInfo) result.getData().get(0); diff --git a/src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java b/src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java index db5e18e2e782..13d093cc80ae 100644 --- a/src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java @@ -366,7 +366,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) { private void fetchAndSetData() { Thread t = new Thread(() -> { RemoteOperation getRemoteUserInfoOperation = new GetUserInfoRemoteOperation(); - RemoteOperationResult result = getRemoteUserInfoOperation.execute(account, this); + RemoteOperationResult result = getRemoteUserInfoOperation.executeNextcloudClient(account, this); if (result.isSuccess() && result.getData() != null) { userInfo = (UserInfo) result.getData().get(0);