import android.accounts.AccountManager;
import android.content.Intent;
import android.net.Uri;
-import android.sax.StartElementListener;
import android.support.v4.app.DialogFragment;
import android.webkit.MimeTypeMap;
import android.widget.Toast;
import com.owncloud.android.datamodel.OCFile;
import com.owncloud.android.lib.accounts.OwnCloudAccount;
import com.owncloud.android.lib.network.webdav.WebdavUtils;
-import com.owncloud.android.lib.operations.common.ShareType;
-import com.owncloud.android.operations.CreateShareOperation;
-import com.owncloud.android.operations.UnshareLinkOperation;
import com.owncloud.android.services.OperationsService;
import com.owncloud.android.ui.activity.FileActivity;
import com.owncloud.android.ui.dialog.ActivityChooserDialog;
if (isSharedSupported(callerActivity)) {
// Unshare the file
- UnshareLinkOperation unshare = new UnshareLinkOperation(file, callerActivity);
- unshare.execute(callerActivity.getStorageManager(),
- callerActivity,
- callerActivity.getRemoteOperationListener(),
- callerActivity.getHandler(),
- callerActivity);
-
+ Intent service = new Intent(callerActivity, OperationsService.class);
+ service.setAction(OperationsService.ACTION_UNSHARE);
+ service.putExtra(OperationsService.EXTRA_ACCOUNT, callerActivity.getAccount());
+ service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath());
+ callerActivity.startService(service);
+
callerActivity.showLoadingDialog();
} else {
import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode;
import com.owncloud.android.lib.operations.remote.ExistenceCheckRemoteOperation;
import com.owncloud.android.lib.operations.remote.RemoveRemoteShareOperation;
+import com.owncloud.android.lib.utils.FileUtils;
import com.owncloud.android.operations.common.SyncOperation;
import com.owncloud.android.utils.Log_OC;
private static final String TAG = UnshareLinkOperation.class.getSimpleName();
- private OCFile mFile;
+ private String mRemotePath;
private Context mContext;
- public UnshareLinkOperation(OCFile file, Context context) {
- mFile = file;
+ public UnshareLinkOperation(String remotePath, Context context) {
+ mRemotePath = remotePath;
mContext = context;
}
RemoteOperationResult result = null;
// Get Share for a file
- String path = mFile.getRemotePath();
- if (mFile.isFolder()) {
- path = path.substring(0, path.length()-1); // Remove last /
+ String path = mRemotePath;
+ if (path.endsWith(FileUtils.PATH_SEPARATOR)) {
+ path = path.substring(0, path.length()-1); // Remove last /
}
OCShare share = getStorageManager().getShareByPath(path);
if (result.isSuccess() || result.getCode() == ResultCode.SHARE_NOT_FOUND) {
Log_OC.d(TAG, "Share id = " + share.getIdRemoteShared() + " deleted");
- mFile.setShareByLink(false);
- mFile.setPublicLink("");
- getStorageManager().saveFile(mFile);
+ OCFile file = getStorageManager().getFileByPath(mRemotePath);
+ file.setShareByLink(false);
+ file.setPublicLink("");
+ getStorageManager().saveFile(file);
getStorageManager().removeShare(share);
if (result.getCode() == ResultCode.SHARE_NOT_FOUND) {
- if (existsFile(client, mFile.getRemotePath())) {
+ if (existsFile(client, file.getRemotePath())) {
result = new RemoteOperationResult(ResultCode.OK);
} else {
- getStorageManager().removeFile(mFile, true, true);
+ getStorageManager().removeFile(file, true, true);
}
}
}
import com.owncloud.android.lib.network.OwnCloudClient;
import com.owncloud.android.operations.CreateShareOperation;
import com.owncloud.android.operations.GetSharesOperation;
+import com.owncloud.android.operations.UnshareLinkOperation;
import com.owncloud.android.operations.common.SyncOperation;
import com.owncloud.android.lib.operations.common.RemoteOperation;
import com.owncloud.android.lib.operations.common.RemoteOperationResult;
RemoteOperation operation = null;
String action = intent.getAction();
- if (action == ACTION_CREATE_SHARE) {
+ if (action == ACTION_CREATE_SHARE) { // Create Share
String remotePath = intent.getStringExtra(EXTRA_REMOTE_PATH);
Intent sendIntent = intent.getParcelableExtra(EXTRA_SEND_INTENT);
if (remotePath.length() > 0) {
operation = new CreateShareOperation(remotePath, ShareType.PUBLIC_LINK,
"", false, "", 1, sendIntent);
}
- } else if (action == ACTION_UNSHARE) {
-
+ } else if (action == ACTION_UNSHARE) { // Unshare file
+ String remotePath = intent.getStringExtra(EXTRA_REMOTE_PATH);
+ if (remotePath.length() > 0) {
+ operation = new UnshareLinkOperation(remotePath, this.getApplicationContext());
+ }
} else {
operation = new GetSharesOperation();
}