From 5431eeab6c2777f59cc3ae4a91f7b2bdec897525 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Thu, 10 Jan 2019 14:25:43 +0100 Subject: [PATCH] - fix wrong mapping from room to group - take type into account when checking if already shared Signed-off-by: tobiasKaminsky --- .../UsersAndGroupsSearchProvider.java | 7 +++-- .../ui/activity/FileDisplayActivity.java | 29 +++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java b/src/main/java/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java index 67d133f91e30..196eaf8d82aa 100644 --- a/src/main/java/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java +++ b/src/main/java/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java @@ -82,6 +82,7 @@ public class UsersAndGroupsSearchProvider extends ContentProvider { public static String DATA_USER; public static String DATA_GROUP; + public static String DATA_ROOM; public static String DATA_REMOTE; private UriMatcher mUriMatcher; @@ -110,11 +111,12 @@ public boolean onCreate() { ACTION_SHARE_WITH = getContext().getResources().getString(R.string.users_and_groups_share_with); DATA_USER = AUTHORITY + ".data.user"; DATA_GROUP = AUTHORITY + ".data.group"; + DATA_ROOM = AUTHORITY + ".data.room"; DATA_REMOTE = AUTHORITY + ".data.remote"; sShareTypes.put(DATA_USER, ShareType.USER); sShareTypes.put(DATA_GROUP, ShareType.GROUP); - sShareTypes.put(DATA_GROUP, ShareType.ROOM); + sShareTypes.put(DATA_ROOM, ShareType.ROOM); sShareTypes.put(DATA_REMOTE, ShareType.FEDERATED); sShareTypes.put(DATA_REMOTE, ShareType.EMAIL); @@ -189,6 +191,7 @@ private Cursor searchForUsersOrGroups(Uri uri) { Uri userBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_USER).build(); Uri groupBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_GROUP).build(); + Uri roomBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_ROOM).build(); Uri remoteBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_REMOTE).build(); FileDataStorageManager manager = new FileDataStorageManager(account, getContext().getContentResolver()); @@ -242,7 +245,7 @@ private Cursor searchForUsersOrGroups(Uri uri) { case ROOM: icon = R.drawable.ic_chat_bubble; displayName = getContext().getString(R.string.share_room_clarification, userName); - dataUri = Uri.withAppendedPath(groupBaseUri, shareWith); + dataUri = Uri.withAppendedPath(roomBaseUri, shareWith); break; default: diff --git a/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java index f87c5425856d..e6a733c330cc 100644 --- a/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -553,13 +553,17 @@ protected void onNewIntent(Intent intent) { String dataString = intent.getDataString(); String shareWith = dataString.substring(dataString.lastIndexOf('/') + 1); - ArrayList shareeNames = new ArrayList<>(); - for (OCShare share : getStorageManager().getSharesWithForAFile(getFile().getRemotePath(), getAccount().name)) { - shareeNames.add(share.getShareWith()); + ArrayList existingSharees = new ArrayList<>(); + for (OCShare share : getStorageManager().getSharesWithForAFile(getFile().getRemotePath(), + getAccount().name)) { + existingSharees.add(share.getShareType() + "_" + share.getShareWith()); } - if (!shareeNames.contains(shareWith)) { - doShareWith(shareWith, data.getAuthority()); + String dataAuthority = data.getAuthority(); + ShareType shareType = UsersAndGroupsSearchProvider.getShareType(dataAuthority); + + if (!existingSharees.contains(shareType + "_" + shareWith)) { + doShareWith(shareWith, shareType); } } else { @@ -567,19 +571,12 @@ protected void onNewIntent(Intent intent) { } } - private void doShareWith(String shareeName, String dataAuthority) { - - ShareType shareType = UsersAndGroupsSearchProvider.getShareType(dataAuthority); - - getFileOperationsHelper().shareFileWithSharee( - getFile(), - shareeName, - shareType, - getAppropiatePermissions(shareType) - ); + private void doShareWith(String shareeName, ShareType shareType) { + getFileOperationsHelper().shareFileWithSharee(getFile(), shareeName, shareType, + getAppropriatePermissions(shareType)); } - private int getAppropiatePermissions(ShareType shareType) { + private int getAppropriatePermissions(ShareType shareType) { // check if the Share is FEDERATED boolean isFederated = ShareType.FEDERATED.equals(shareType);