|
@@ -29,6 +29,8 @@ import android.util.Pair;
|
|
|
|
|
|
import com.nextcloud.client.account.User;
|
|
|
import com.nextcloud.client.account.UserAccountManager;
|
|
|
+import com.nextcloud.common.NextcloudClient;
|
|
|
+import com.nextcloud.java.util.Optional;
|
|
|
import com.nextcloud.utils.extensions.IntentExtensionsKt;
|
|
|
import com.owncloud.android.MainApp;
|
|
|
import com.owncloud.android.datamodel.ArbitraryDataProvider;
|
|
@@ -260,7 +262,7 @@ public class OperationsService extends Service {
|
|
|
*/
|
|
|
private final ConcurrentMap<OnRemoteOperationListener, Handler> mBoundListeners = new ConcurrentHashMap<>();
|
|
|
|
|
|
- private ServiceHandler mServiceHandler;
|
|
|
+ private final ServiceHandler mServiceHandler;
|
|
|
|
|
|
public OperationsServiceBinder(ServiceHandler serviceHandler) {
|
|
|
mServiceHandler = serviceHandler;
|
|
@@ -380,7 +382,7 @@ public class OperationsService extends Service {
|
|
|
OperationsService mService;
|
|
|
|
|
|
|
|
|
- private ConcurrentLinkedQueue<Pair<Target, RemoteOperation>> mPendingOperations =
|
|
|
+ private final ConcurrentLinkedQueue<Pair<Target, RemoteOperation>> mPendingOperations =
|
|
|
new ConcurrentLinkedQueue<>();
|
|
|
private RemoteOperation mCurrentOperation;
|
|
|
private Target mLastTarget;
|
|
@@ -416,11 +418,12 @@ public class OperationsService extends Service {
|
|
|
if (next != null) {
|
|
|
mCurrentOperation = next.second;
|
|
|
RemoteOperationResult result;
|
|
|
+ OwnCloudAccount ocAccount = null;
|
|
|
+
|
|
|
try {
|
|
|
/// prepare client object to send the request to the ownCloud server
|
|
|
if (mLastTarget == null || !mLastTarget.equals(next.first)) {
|
|
|
mLastTarget = next.first;
|
|
|
- OwnCloudAccount ocAccount;
|
|
|
if (mLastTarget.mAccount != null) {
|
|
|
ocAccount = new OwnCloudAccount(mLastTarget.mAccount, mService);
|
|
|
} else {
|
|
@@ -430,19 +433,21 @@ public class OperationsService extends Service {
|
|
|
getClientFor(ocAccount, mService);
|
|
|
}
|
|
|
|
|
|
- /// perform the operation
|
|
|
- result = mCurrentOperation.execute(mOwnCloudClient);
|
|
|
- } catch (AccountsException e) {
|
|
|
- if (mLastTarget.mAccount == null) {
|
|
|
- Log_OC.e(TAG, "Error while trying to get authorization for a NULL account",
|
|
|
- e);
|
|
|
- } else {
|
|
|
- Log_OC.e(TAG, "Error while trying to get authorization for " +
|
|
|
- mLastTarget.mAccount.name, e);
|
|
|
- }
|
|
|
- result = new RemoteOperationResult(e);
|
|
|
+ // perform the operation
|
|
|
+ try {
|
|
|
+ result = mCurrentOperation.execute(mOwnCloudClient);
|
|
|
+ } catch (UnsupportedOperationException e) {
|
|
|
+ // TODO remove - added to aid in transition to NextcloudClient
|
|
|
+
|
|
|
+ if (ocAccount == null) {
|
|
|
+ throw e;
|
|
|
+ }
|
|
|
|
|
|
- } catch (IOException e) {
|
|
|
+ NextcloudClient nextcloudClient = OwnCloudClientManagerFactory.getDefaultSingleton()
|
|
|
+ .getNextcloudClientFor(ocAccount, mService.getBaseContext());
|
|
|
+ result = mCurrentOperation.run(nextcloudClient);
|
|
|
+ }
|
|
|
+ } catch (AccountsException | IOException e) {
|
|
|
if (mLastTarget.mAccount == null) {
|
|
|
Log_OC.e(TAG, "Error while trying to get authorization for a NULL account",
|
|
|
e);
|
|
@@ -451,6 +456,7 @@ public class OperationsService extends Service {
|
|
|
mLastTarget.mAccount.name, e);
|
|
|
}
|
|
|
result = new RemoteOperationResult(e);
|
|
|
+
|
|
|
} catch (Exception e) {
|
|
|
if (mLastTarget.mAccount == null) {
|
|
|
Log_OC.e(TAG, "Unexpected error for a NULL account", e);
|
|
@@ -537,10 +543,6 @@ public class OperationsService extends Service {
|
|
|
false);
|
|
|
updateLinkOperation.setHideFileDownload(hideFileDownload);
|
|
|
|
|
|
-// if (operationIntent.hasExtra(EXTRA_SHARE_PUBLIC_UPLOAD)) {
|
|
|
-// updateLinkOperation.setPublicUpload(true);
|
|
|
-// }
|
|
|
-
|
|
|
if (operationIntent.hasExtra(EXTRA_SHARE_PUBLIC_LABEL)) {
|
|
|
updateLinkOperation.setLabel(operationIntent.getStringExtra(EXTRA_SHARE_PUBLIC_LABEL));
|
|
|
}
|