From: David A. Velasco Date: Fri, 23 Oct 2015 13:28:54 +0000 (+0200) Subject: Show error messages from server when share-specific errors occur while sharing or... X-Git-Tag: oc-android-1.9^2~30^2~16 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/cc0fb41554e50429ebbee1bdbb55a43664001370 Show error messages from server when share-specific errors occur while sharing or unsharing --- diff --git a/src/com/owncloud/android/operations/UnshareOperation.java b/src/com/owncloud/android/operations/UnshareOperation.java index dcc4bdc6..41678314 100644 --- a/src/com/owncloud/android/operations/UnshareOperation.java +++ b/src/com/owncloud/android/operations/UnshareOperation.java @@ -67,14 +67,14 @@ public class UnshareOperation extends SyncOperation { mShareType, mShareWith); if (share != null) { + OCFile file = getStorageManager().getFileByPath(mRemotePath); RemoveRemoteShareOperation operation = new RemoveRemoteShareOperation((int) share.getIdRemoteShared()); result = operation.execute(client); - if (result.isSuccess() || result.getCode() == ResultCode.SHARE_NOT_FOUND) { + if (result.isSuccess()) { Log_OC.d(TAG, "Share id = " + share.getIdRemoteShared() + " deleted"); - OCFile file = getStorageManager().getFileByPath(mRemotePath); if (mShareType == ShareType.PUBLIC_LINK) { file.setShareViaLink(false); file.setPublicLink(""); @@ -91,15 +91,11 @@ public class UnshareOperation extends SyncOperation { getStorageManager().saveFile(file); getStorageManager().removeShare(share); - if (result.getCode() == ResultCode.SHARE_NOT_FOUND) { - if (existsFile(client, file.getRemotePath())) { - result = new RemoteOperationResult(ResultCode.OK); - } else { - getStorageManager().removeFile(file, true, true); - } - } - } - + } else if (!existsFile(client, file.getRemotePath())) { + // unshare failed because file was deleted before + getStorageManager().removeFile(file, true, true); + } + } else { result = new RemoteOperationResult(ResultCode.SHARE_NOT_FOUND); } diff --git a/src/com/owncloud/android/ui/activity/ShareActivity.java b/src/com/owncloud/android/ui/activity/ShareActivity.java index 0aacdeb5..5336d36e 100644 --- a/src/com/owncloud/android/ui/activity/ShareActivity.java +++ b/src/com/owncloud/android/ui/activity/ShareActivity.java @@ -41,6 +41,7 @@ import com.owncloud.android.operations.CreateShareWithShareeOperation; import com.owncloud.android.operations.UnshareOperation; import com.owncloud.android.ui.fragment.SearchFragment; import com.owncloud.android.ui.fragment.ShareFileFragment; +import com.owncloud.android.utils.ErrorMessageAdapter; import com.owncloud.android.utils.GetShareWithUsersAsyncTask; import java.util.ArrayList; @@ -131,11 +132,6 @@ public class ShareActivity extends FileActivity } private void doShareWith(String shareeName, boolean isGroup) { - if (isGroup) { - Log_OC.d(TAG, "You want to SHARE with GROUP [" + shareeName + "]"); - } else { - Log_OC.d(TAG, "You want to SHARE with USER [" + shareeName + "]"); - } getFileOperationsHelper().shareFileWithSharee( getFile(), shareeName, @@ -204,12 +200,25 @@ public class ShareActivity extends FileActivity @Override public void onRemoteOperationFinish(RemoteOperation operation, RemoteOperationResult result) { super.onRemoteOperationFinish(operation, result); - if (operation instanceof UnshareOperation) { - refreshUsersInLists(); - } else if(operation instanceof CreateShareWithShareeOperation){ - refreshUsersInLists(); - // Clean action - getIntent().setAction(null); + if (operation instanceof UnshareOperation || + operation instanceof CreateShareWithShareeOperation) { + + if (result.isSuccess()) { + refreshUsersInLists(); + if (operation instanceof CreateShareWithShareeOperation) { + // Clean action + getIntent().setAction(null); + } + } else { + Toast.makeText( + this, + ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), + Toast.LENGTH_LONG + ).show(); + } + + /*} else if (operation instanceof GetSharesForFileOperation) { + onGetSharesForFileOperationFinish((GetSharesForFileOperation) operation, result);*/ } } diff --git a/src/com/owncloud/android/utils/ErrorMessageAdapter.java b/src/com/owncloud/android/utils/ErrorMessageAdapter.java index fe6f6506..5d764a80 100644 --- a/src/com/owncloud/android/utils/ErrorMessageAdapter.java +++ b/src/com/owncloud/android/utils/ErrorMessageAdapter.java @@ -173,7 +173,11 @@ public class ErrorMessageAdapter { } } else if (operation instanceof CreateShareViaLinkOperation || operation instanceof CreateShareWithShareeOperation) { - if (result.getCode() == ResultCode.SHARE_NOT_FOUND) { // Error --> SHARE_NOT_FOUND + + if (result.getData() != null && result.getData().size() > 0) { + message = (String) result.getData().get(0); // share API sends its own error messages + + } else if (result.getCode() == ResultCode.SHARE_NOT_FOUND) { message = res.getString(R.string.share_link_file_no_exist); } else if (result.getCode() == ResultCode.SHARE_FORBIDDEN) { @@ -191,7 +195,10 @@ public class ErrorMessageAdapter { } else if (operation instanceof UnshareOperation) { - if (result.getCode() == ResultCode.SHARE_NOT_FOUND) { // Error --> SHARE_NOT_FOUND + if (result.getData() != null && result.getData().size() > 0) { + message = (String) result.getData().get(0); // share API sends its own error messages + + } else if (result.getCode() == ResultCode.SHARE_NOT_FOUND) { message = res.getString(R.string.unshare_link_file_no_exist); } else if (result.getCode() == ResultCode.SHARE_FORBIDDEN) {