X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/729a9b7c77eddad66f25b9ca8cb934d84ea8ee20..a99a28cc61d48eca63803c3d661ea1be14f99aec:/src/com/owncloud/android/operations/CreateShareViaLinkOperation.java diff --git a/src/com/owncloud/android/operations/CreateShareViaLinkOperation.java b/src/com/owncloud/android/operations/CreateShareViaLinkOperation.java index 52baa417..e9cb7d2d 100644 --- a/src/com/owncloud/android/operations/CreateShareViaLinkOperation.java +++ b/src/com/owncloud/android/operations/CreateShareViaLinkOperation.java @@ -41,6 +41,8 @@ import com.owncloud.android.lib.resources.shares.OCShare; import com.owncloud.android.lib.resources.shares.ShareType; import com.owncloud.android.operations.common.SyncOperation; +import java.util.ArrayList; + public class CreateShareViaLinkOperation extends SyncOperation { private String mPath; @@ -73,10 +75,21 @@ public class CreateShareViaLinkOperation extends SyncOperation { // Check if the share link already exists RemoteOperation operation = new GetRemoteSharesForFileOperation(mPath, false, false); RemoteOperationResult result = operation.execute(client); - // TODO - fix this check; if the user already shared the file with users or group, a share via link will not be created - if (!result.isSuccess() || result.getData().size() <= 0) { - operation = new CreateRemoteShareOperation( + boolean shareByLink = false; + // Check if the file is shared by link + if (result.isSuccess() && result.getData().size() > 0){ + ArrayList shares = result.getData(); + for(Object object: shares){ + if (((OCShare) object).getShareType() == ShareType.PUBLIC_LINK){ + shareByLink = true; + break; + } + } + } + + if (!result.isSuccess() || !shareByLink) { + CreateRemoteShareOperation createOp = new CreateRemoteShareOperation( mPath, ShareType.PUBLIC_LINK, "", @@ -84,7 +97,8 @@ public class CreateShareViaLinkOperation extends SyncOperation { mPassword, OCShare.DEFAULT_PERMISSION ); - result = operation.execute(client); + createOp.setGetShareDetails(true); + result = createOp.execute(client); } if (result.isSuccess()) {