Skip to content

Commit ff5c488

Browse files
committed
Add federated groups
1 parent 40931f4 commit ff5c488

8 files changed

Lines changed: 36 additions & 2 deletions

File tree

app/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1889,12 +1889,14 @@ public List<OCShare> getSharesWithForAFile(String filePath, String accountName)
18891889
+ ProviderTableMeta.OCSHARES_SHARE_TYPE + " = ? OR "
18901890
+ ProviderTableMeta.OCSHARES_SHARE_TYPE + " = ? OR "
18911891
+ ProviderTableMeta.OCSHARES_SHARE_TYPE + " = ? OR "
1892+
+ ProviderTableMeta.OCSHARES_SHARE_TYPE + " = ? OR "
18921893
+ ProviderTableMeta.OCSHARES_SHARE_TYPE + " = ? ) ";
18931894
String[] selectionArgs = new String[]{filePath, accountName,
18941895
Integer.toString(ShareType.USER.getValue()),
18951896
Integer.toString(ShareType.GROUP.getValue()),
18961897
Integer.toString(ShareType.EMAIL.getValue()),
18971898
Integer.toString(ShareType.FEDERATED.getValue()),
1899+
Integer.toString(ShareType.FEDERATED_GROUP.getValue()),
18981900
Integer.toString(ShareType.ROOM.getValue()),
18991901
Integer.toString(ShareType.CIRCLE.getValue())
19001902
};

app/src/main/java/com/owncloud/android/operations/CreateShareWithShareeOperation.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ public class CreateShareWithShareeOperation extends SyncOperation {
6262
private static final Set<ShareType> supportedShareTypes = new HashSet<>(Arrays.asList(ShareType.USER,
6363
ShareType.GROUP,
6464
ShareType.FEDERATED,
65+
ShareType.FEDERATED_GROUP,
6566
ShareType.EMAIL,
6667
ShareType.ROOM,
6768
ShareType.CIRCLE));

app/src/main/java/com/owncloud/android/operations/UnshareOperation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ protected RemoteOperationResult run(OwnCloudClient client) {
128128
if (ShareType.PUBLIC_LINK == share.getShareType()) {
129129
file.setSharedViaLink(false);
130130
} else if (ShareType.USER == share.getShareType() || ShareType.GROUP == share.getShareType()
131-
|| ShareType.FEDERATED == share.getShareType()) {
131+
|| ShareType.FEDERATED == share.getShareType() || ShareType.FEDERATED_GROUP == share.getShareType()) {
132132
// Check if it is the last share
133133
List<OCShare> sharesWith = getStorageManager().
134134
getSharesWithForAFile(remotePath,

app/src/main/java/com/owncloud/android/operations/UpdateSharePermissionsOperation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public UpdateSharePermissionsOperation(long shareId, FileDataStorageManager stor
4949
@Override
5050
protected RemoteOperationResult run(OwnCloudClient client) {
5151

52-
OCShare share = getStorageManager().getShareById(shareId); // ShareType.USER | ShareType.GROUP
52+
OCShare share = getStorageManager().getShareById(shareId); // ShareType.USER | ShareType.GROUP | ShareType.FEDERATED_GROUP
5353

5454
if (share == null) {
5555
// TODO try to get remote share before failing?

app/src/main/java/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ public class UsersAndGroupsSearchProvider extends ContentProvider {
100100
private String DATA_GROUP;
101101
private String DATA_ROOM;
102102
private String DATA_REMOTE;
103+
private String DATA_REMOTE_GROUP;
103104
private String DATA_EMAIL;
104105
private String DATA_CIRCLE;
105106

@@ -142,13 +143,15 @@ public boolean onCreate() {
142143
DATA_GROUP = AUTHORITY + ".data.group";
143144
DATA_ROOM = AUTHORITY + ".data.room";
144145
DATA_REMOTE = AUTHORITY + ".data.remote";
146+
DATA_REMOTE_GROUP = AUTHORITY + ".data.remote_group";
145147
DATA_EMAIL = AUTHORITY + ".data.email";
146148
DATA_CIRCLE = AUTHORITY + ".data.circle";
147149

148150
sShareTypes.put(DATA_USER, ShareType.USER);
149151
sShareTypes.put(DATA_GROUP, ShareType.GROUP);
150152
sShareTypes.put(DATA_ROOM, ShareType.ROOM);
151153
sShareTypes.put(DATA_REMOTE, ShareType.FEDERATED);
154+
sShareTypes.put(DATA_REMOTE_GROUP, ShareType.FEDERATED_GROUP);
152155
sShareTypes.put(DATA_EMAIL, ShareType.EMAIL);
153156
sShareTypes.put(DATA_CIRCLE, ShareType.CIRCLE);
154157

@@ -228,6 +231,7 @@ private Cursor searchForUsersOrGroups(Uri uri) {
228231
Uri groupBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_GROUP).build();
229232
Uri roomBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_ROOM).build();
230233
Uri remoteBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_REMOTE).build();
234+
Uri remoteGroupBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_REMOTE_GROUP).build();
231235
Uri emailBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_EMAIL).build();
232236
Uri circleBaseUri = new Uri.Builder().scheme(CONTENT).authority(DATA_CIRCLE).build();
233237

@@ -297,6 +301,24 @@ private Cursor searchForUsersOrGroups(Uri uri) {
297301
}
298302
break;
299303

304+
case FEDERATED_GROUP:
305+
if (federatedShareAllowed) {
306+
icon = R.drawable.ic_group;
307+
dataUri = Uri.withAppendedPath(remoteGroupBaseUri, shareWith);
308+
309+
if (userName.equals(shareWith)) {
310+
displayName = name;
311+
subline = getContext().getString(R.string.remote);
312+
subline = "";
313+
} else {
314+
String[] uriSplitted = shareWith.split("@");
315+
displayName = name;
316+
subline = getContext().getString(R.string.share_known_remote_on_clarification,
317+
uriSplitted[uriSplitted.length - 1]);
318+
}
319+
}
320+
break;
321+
300322
case USER:
301323
displayName = userName;
302324
subline = (status.getMessage() == null || status.getMessage().isEmpty()) ? null :

app/src/main/java/com/owncloud/android/ui/AvatarGroupLayout.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ public void setAvatars(@NonNull User user,
110110
viewThemeUtils.files.createAvatar(sharee.getShareType(), avatar, context);
111111
break;
112112
case FEDERATED:
113+
case FEDERATED_GROUP:
113114
showFederatedShareAvatar(context,
114115
sharee.getUserId(),
115116
avatarRadius,

app/src/main/java/com/owncloud/android/ui/adapter/ShareViewHolder.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,10 @@ public void bind(OCShare share,
8383
name = context.getString(R.string.share_remote_clarification, name);
8484
setImage(binding.icon, share.getSharedWithDisplayName(), R.drawable.ic_user);
8585
break;
86+
case FEDERATED_GROUP:
87+
name = context.getString(R.string.share_remote_clarification, name);
88+
setImage(binding.icon, share.getSharedWithDisplayName(), R.drawable.ic_user);
89+
break;
8690
case USER:
8791
binding.icon.setTag(share.getShareWith());
8892
float avatarRadius = context.getResources().getDimension(R.dimen.list_item_avatar_icon_radius);

app/src/main/java/com/owncloud/android/utils/theme/FilesSpecificViewThemeUtils.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ class FilesSpecificViewThemeUtils @Inject constructor(
7373
createAvatarBase(R.drawable.ic_group)
7474
androidViewThemeUtils.colorImageViewBackgroundAndIcon(avatar)
7575
}
76+
ShareType.FEDERATED_GROUP -> {
77+
createAvatarBase(R.drawable.ic_group)
78+
androidViewThemeUtils.colorImageViewBackgroundAndIcon(avatar)
79+
}
7680
ShareType.ROOM -> {
7781
createAvatarBase(R.drawable.first_run_talk, AvatarPadding.LARGE)
7882
androidViewThemeUtils.colorImageViewBackgroundAndIcon(avatar)

0 commit comments

Comments
 (0)