From: masensio Date: Mon, 9 Mar 2015 12:47:52 +0000 (+0100) Subject: Fix bug: password is shown, when in fact we do not have permission to share X-Git-Tag: oc-android-1.7.1_signed^2~27^2~4 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/4a47e96bc7a207ba254994ad166fea2a683c3031?hp=--cc Fix bug: password is shown, when in fact we do not have permission to share --- 4a47e96bc7a207ba254994ad166fea2a683c3031 diff --git a/src/com/owncloud/android/ui/activity/FileActivity.java b/src/com/owncloud/android/ui/activity/FileActivity.java index 8eb20e4d..79c8176f 100644 --- a/src/com/owncloud/android/ui/activity/FileActivity.java +++ b/src/com/owncloud/android/ui/activity/FileActivity.java @@ -76,13 +76,14 @@ public class FileActivity extends SherlockFragmentActivity public static final String EXTRA_FILE = "com.owncloud.android.ui.activity.FILE"; public static final String EXTRA_ACCOUNT = "com.owncloud.android.ui.activity.ACCOUNT"; public static final String EXTRA_WAITING_TO_PREVIEW = "com.owncloud.android.ui.activity.WAITING_TO_PREVIEW"; - public static final String EXTRA_FROM_NOTIFICATION= "com.owncloud.android.ui.activity.FROM_NOTIFICATION"; + public static final String EXTRA_FROM_NOTIFICATION = "com.owncloud.android.ui.activity.FROM_NOTIFICATION"; public static final String TAG = FileActivity.class.getSimpleName(); private static final String DIALOG_WAIT_TAG = "DIALOG_WAIT"; private static final String KEY_WAITING_FOR_OP_ID = "WAITING_FOR_OP_ID"; private static final String DIALOG_SHARE_PASSWORD = "DIALOG_SHARE_PASSWORD"; + private static final String KEY_TRY_SHARE_AGAIN = "TRY_SHARE_AGAIN"; protected static final long DELAY_TO_REQUEST_OPERATION_ON_ACTIVITY_RESULTS = 200; @@ -120,6 +121,8 @@ public class FileActivity extends SherlockFragmentActivity protected FileDownloaderBinder mDownloaderBinder = null; protected FileUploaderBinder mUploaderBinder = null; private ServiceConnection mDownloadServiceConnection, mUploadServiceConnection = null; + + private boolean mTryShareAgain = false; /** @@ -142,6 +145,7 @@ public class FileActivity extends SherlockFragmentActivity mFileOperationsHelper.setOpIdWaitingFor( savedInstanceState.getLong(KEY_WAITING_FOR_OP_ID, Long.MAX_VALUE) ); + mTryShareAgain = savedInstanceState.getBoolean(KEY_TRY_SHARE_AGAIN); } else { account = getIntent().getParcelableExtra(FileActivity.EXTRA_ACCOUNT); mFile = getIntent().getParcelableExtra(FileActivity.EXTRA_FILE); @@ -304,6 +308,7 @@ public class FileActivity extends SherlockFragmentActivity outState.putParcelable(FileActivity.EXTRA_ACCOUNT, mAccount); outState.putBoolean(FileActivity.EXTRA_FROM_NOTIFICATION, mFromNotification); outState.putLong(KEY_WAITING_FOR_OP_ID, mFileOperationsHelper.getOpIdWaitingFor()); + outState.putBoolean(KEY_TRY_SHARE_AGAIN, mTryShareAgain); } @@ -349,7 +354,14 @@ public class FileActivity extends SherlockFragmentActivity protected boolean isRedirectingToSetupAccount() { return mRedirectingToSetupAccount; } - + + public boolean isTryShareAgain(){ + return mTryShareAgain; + } + + public void setTryShareAgain(boolean tryShareAgain) { + mTryShareAgain = tryShareAgain; + } public OperationsServiceBinder getOperationsServiceBinder() { return mOperationsServiceBinder; @@ -486,18 +498,25 @@ public class FileActivity extends SherlockFragmentActivity RemoteOperationResult result) { dismissLoadingDialog(); if (result.isSuccess()) { + mTryShareAgain = false; updateFileFromDB(); Intent sendIntent = operation.getSendIntent(); startActivity(sendIntent); - } else { // Detect Failure (403) --> needs Password if (result.getCode() == ResultCode.SHARE_FORBIDDEN) { - SharePasswordDialogFragment dialog = - SharePasswordDialogFragment.newInstance( new OCFile(operation.getPath()), - operation.getSendIntent()); - dialog.show(getSupportFragmentManager(), DIALOG_SHARE_PASSWORD); + if (!isTryShareAgain()) { + SharePasswordDialogFragment dialog = + SharePasswordDialogFragment.newInstance(new OCFile(operation.getPath()), + operation.getSendIntent()); + dialog.show(getSupportFragmentManager(), DIALOG_SHARE_PASSWORD); + } else { + Toast t = Toast.makeText(this, + ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), + Toast.LENGTH_LONG); + t.show(); + } } else { Toast t = Toast.makeText(this, ErrorMessageAdapter.getErrorCauseMessage(result, operation, getResources()), diff --git a/src/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.java b/src/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.java index a7e71b5b..d8f507b1 100644 --- a/src/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.java +++ b/src/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.java @@ -97,6 +97,9 @@ public class SharePasswordDialogFragment extends SherlockDialogFragment @Override public void onClick(DialogInterface dialog, int which) { if (which == AlertDialog.BUTTON_POSITIVE) { + // Enable the flag "Share again" + ((FileActivity) getSherlockActivity()).setTryShareAgain(true); + String password = ((TextView)(getDialog().findViewById(R.id.share_password))) .getText().toString(); @@ -113,6 +116,9 @@ public class SharePasswordDialogFragment extends SherlockDialogFragment ((FileActivity)getSherlockActivity()).getFileOperationsHelper() .shareFileWithLinkToApp(mFile, password, mSendIntent); + } else { + // Disable the flag "Share again" + ((FileActivity) getSherlockActivity()).setTryShareAgain(false); } } }