Skip to content

Commit 35a7c52

Browse files
committed
feat: federated calendar sharing
Signed-off-by: Richard Steinmetz <[email protected]>
1 parent 7c9387a commit 35a7c52

File tree

1 file changed

+50
-1
lines changed

1 file changed

+50
-1
lines changed

src/components/AppNavigation/EditCalendarModal/SharingSearch.vue

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,11 +133,13 @@ export default {
133133
if (query.length > 0) {
134134
const davPromise = this.findShareesFromDav(query, hiddenPrincipalSchemes, hiddenUrls)
135135
const ocsPromise = this.findShareesFromCircles(query, hiddenPrincipalSchemes, hiddenUrls)
136+
const remotePromise = this.findRemoteSharees(query)
136137
137-
const [davResults, ocsResults] = await Promise.all([davPromise, ocsPromise])
138+
const [davResults, ocsResults, remoteResults] = await Promise.all([davPromise, ocsPromise, remotePromise])
138139
this.usersOrGroups = [
139140
...davResults,
140141
...ocsResults,
142+
...remoteResults,
141143
]
142144
143145
this.isLoading = false
@@ -250,6 +252,53 @@ export default {
250252
search: query,
251253
}))
252254
},
255+
/**
256+
*
257+
* @param {string} query The search query
258+
* @return {Promise<object[]>}
259+
*/
260+
async findRemoteSharees(query) {
261+
let results
262+
try {
263+
results = await HttpClient.get(generateOcsUrl('apps/files_sharing/api/v1/') + 'sharees', {
264+
params: {
265+
format: 'json',
266+
search: query,
267+
perPage: 200,
268+
itemType: 'calendar',
269+
shareType: [4, 6, 9],
270+
lookup: false,
271+
},
272+
})
273+
} catch (error) {
274+
return []
275+
}
276+
277+
if (results.data.ocs.meta.status === 'failure') {
278+
return []
279+
}
280+
281+
let remoteUsers = []
282+
if (Array.isArray(results.data.ocs.data.remotes)) {
283+
remoteUsers.push(...results.data.ocs.data.remotes)
284+
}
285+
if (Array.isArray(results.data.ocs.data.exact.remotes)) {
286+
remoteUsers.push(...results.data.ocs.data.exact.remotes)
287+
}
288+
289+
console.log('findRemoteSharees', remoteUsers)
290+
291+
return remoteUsers.map((user) => ({
292+
user: user.uuid,
293+
displayName: user.label,
294+
icon: 'icon-circle',
295+
uri: `principal:principals/remote-users/${btoa(user.value.shareWith)}`,
296+
isGroup: false,
297+
isCircle: false,
298+
isNoUser: true,
299+
search: query,
300+
}))
301+
},
253302
},
254303
}
255304
</script>

0 commit comments

Comments
 (0)