From 1160984a3695a275b131e598995363fa1513123e 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 376e5b8dd92c..2027378efd74 100644 --- a/src/main/java/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java +++ b/src/main/java/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java @@ -81,6 +81,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; @@ -109,11 +110,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); @@ -188,6 +190,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()); @@ -241,7 +244,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 60902be4c68b..d78d5cd7d9c0 100644 --- a/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -552,13 +552,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 { @@ -566,19 +570,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);