From f2f9852bb8febe4984c1c7b1088f7dc5afea4b8d Mon Sep 17 00:00:00 2001 From: znerol Date: Mon, 25 Jan 2021 18:39:35 +0100 Subject: [PATCH] feat: show exact match first in sharing widget (#112) --- ts/Common/Api.ts | 27 +++++++++++++++++++++------ ts/Common/ShareSelection.tsx | 3 +++ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/ts/Common/Api.ts b/ts/Common/Api.ts index e8deb51..56111a1 100644 --- a/ts/Common/Api.ts +++ b/ts/Common/Api.ts @@ -75,6 +75,11 @@ export interface ShareWith { users: ShareWithOption[]; groups: ShareWithOption[]; circles: ShareWithOption[]; + exact: { + users: ShareWithOption[]; + groups: ShareWithOption[]; + circles: ShareWithOption[]; + } } class Api { @@ -243,9 +248,14 @@ class Api { }); return { - users: response.data.ocs.data.exact.users, - groups: response.data.ocs.data.exact.groups, - circles: response.data.ocs.data.exact.circles || [], + users: [], + groups: [], + circles: [], + exact: { + users: response.data.ocs.data.exact.users, + groups: response.data.ocs.data.exact.groups, + circles: response.data.ocs.data.exact.circles || [], + }, }; } @@ -264,9 +274,14 @@ class Api { const data = response.data.ocs.data; return { - users: [...data.users, ...data.exact.users], - groups: [...data.groups, ...data.exact.groups], - circles: [...(data.circles || []), ...(data.exact.circles || [])], + users: data.users, + groups: data.groups, + circles: data.circles || [], + exact: { + users: data.exact.users, + groups: data.exact.groups, + circles: data.exact.circles || [], + }, }; } } diff --git a/ts/Common/ShareSelection.tsx b/ts/Common/ShareSelection.tsx index 8b57d1c..9a5a5d8 100644 --- a/ts/Common/ShareSelection.tsx +++ b/ts/Common/ShareSelection.tsx @@ -63,6 +63,9 @@ const ShareSelection: React.FC = (props) => { function renderSearchResults(options: ShareWith|undefined) { const results = options ? [ + ...options.exact.users.filter(user => !excluded.userIds.includes(user.value.shareWith)), + ...options.exact.groups.filter(group => !excluded.groupIds.includes(group.value.shareWith)), + ...options.exact.circles.filter(circle => !excluded.circleIds.includes(circle.value.shareWith)), ...options.users.filter(user => !excluded.userIds.includes(user.value.shareWith)), ...options.groups.filter(group => !excluded.groupIds.includes(group.value.shareWith)), ...options.circles.filter(circle => !excluded.circleIds.includes(circle.value.shareWith)),