Skip to content

Commit 83785f2

Browse files
committed
fix: parse link response to show member option in all spaces
1 parent 02353fc commit 83785f2

File tree

2 files changed

+25
-7
lines changed

2 files changed

+25
-7
lines changed

owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/spaces/responses/SpacesResponse.kt

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,16 @@ data class SpecialFolderResponse(
104104

105105
@JsonClass(generateAdapter = true)
106106
data class PermissionsResponse(
107+
// Member response
107108
val expirationDateTime: String?,
108-
val grantedToV2: GrantedToV2Response,
109+
val grantedToV2: GrantedToV2Response?,
109110
val id: String?,
110-
val roles: List<String>
111+
val roles: List<String>?,
112+
113+
// Link response
114+
val createDateTime: String?,
115+
val hasPassword: Boolean?,
116+
val link: LinkInfoResponse?
111117
)
112118

113119
@JsonClass(generateAdapter = true)
@@ -132,3 +138,14 @@ data class SpacePermissionsResponse(
132138
val members: List<PermissionsResponse>
133139
)
134140

141+
@JsonClass(generateAdapter = true)
142+
data class LinkInfoResponse(
143+
@Json(name = "@libre.graph.displayName")
144+
val displayName: String,
145+
@Json(name = "@libre.graph.quickLink")
146+
val quickLink: Boolean,
147+
val preventsDownload: Boolean,
148+
val type: String,
149+
val webUrl: String,
150+
)
151+

owncloudData/src/main/java/com/owncloud/android/data/spaces/datasources/implementation/OCRemoteSpacesDataSource.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -202,12 +202,13 @@ class OCRemoteSpacesDataSource(
202202
displayName = spaceRoleResponse.displayName
203203
)
204204
},
205-
members = members.map { spaceMemberResponse ->
205+
members = members.filter { it.grantedToV2 != null }.map { spaceMemberResponse ->
206206
SpaceMember (
207207
id = spaceMemberResponse.id ?: "",
208208
expirationDateTime = spaceMemberResponse.expirationDateTime,
209-
displayName = spaceMemberResponse.grantedToV2.user?.displayName ?: spaceMemberResponse.grantedToV2.group?.displayName ?: "",
210-
roles = spaceMemberResponse.roles
209+
displayName = spaceMemberResponse.grantedToV2?.user?.displayName
210+
?: spaceMemberResponse.grantedToV2?.group?.displayName ?: "",
211+
roles = spaceMemberResponse.roles ?: emptyList()
211212
)
212213
}
213214
)
@@ -216,9 +217,9 @@ class OCRemoteSpacesDataSource(
216217
private fun getRoleForUser(root: RootResponse, userId: String, userGroups: List<String>): String? {
217218
val priorityOrder = listOf(MANAGER_ROLE, EDITOR_ROLE, VIEWER_ROLE)
218219
val matchingPermissions = root.permissions.orEmpty().filter { permission ->
219-
permission.grantedToV2.user?.id == userId || permission.grantedToV2.group?.id in userGroups
220+
permission.grantedToV2?.user?.id == userId || permission.grantedToV2?.group?.id in userGroups
220221
}
221-
return matchingPermissions.flatMap { it.roles }.minByOrNull { priorityOrder.indexOf(it) }
222+
return matchingPermissions.flatMap { it.roles.orEmpty() }.minByOrNull { priorityOrder.indexOf(it) }
222223
}
223224
}
224225
}

0 commit comments

Comments
 (0)