@@ -38,7 +38,6 @@ import Share.Utils.API
3838import Share.Utils.Caching
3939import Share.Utils.Logging qualified as Logging
4040import Share.Utils.Servant.Cookies qualified as Cookies
41- import Share.Utils.URI (URIParam (.. ))
4241import Share.Web.App
4342import Share.Web.Authentication qualified as AuthN
4443import Share.Web.Authorization qualified as AuthZ
@@ -48,7 +47,7 @@ import Share.Web.Share.Branches.Impl qualified as Branches
4847import Share.Web.Share.CodeBrowsing.API (CodeBrowseAPI )
4948import Share.Web.Share.Contributions.Impl qualified as Contributions
5049import Share.Web.Share.DefinitionSearch qualified as DefinitionSearch
51- import Share.Web.Share.DisplayInfo.Types ( OrgDisplayInfo ( .. ), UserDisplayInfo ( .. ))
50+ import Share.Web.Share.DisplayInfo.Queries qualified as DisplayInfoQ
5251import Share.Web.Share.Orgs.Queries qualified as OrgQ
5352import Share.Web.Share.Orgs.Types (Org (.. ))
5453import Share.Web.Share.Projects.Impl qualified as Projects
@@ -364,17 +363,12 @@ searchEndpoint (MaybeAuthedUserID callerUserId) (Query query) (fromMaybe (Limit
364363 -- We don't have a great way to order users and projects together, so we just limit to a max
365364 -- of 5 users (who match the query as a prefix), then return the rest of the results from
366365 -- projects.
367- (users , projects) <- PG. runTransaction $ do
366+ (userLikes , projects) <- PG. runTransaction $ do
368367 userLikes <- UserQ. searchUsersByNameOrHandlePrefix userQuery (Limit 5 )
368+ userLikesWithInfo <- DisplayInfoQ. userLikeDisplayInfoOf traversed userLikes
369369 projects <- Q. searchProjects callerUserId projectUserFilter projectQuery limit
370- userResultsWithOrgInfo <- OrgQ. orgsByIdsOf (traversed . _2 . _Just) users
371- pure (userResultsWithOrgInfo, projects)
372- let userResults =
373- users
374- <&> \ (User {user_name = name, avatar_url = avatarUrl, handle, user_id = userId}, mayOrgInfo) ->
375- case mayOrgInfo of
376- Just (Org {orgId, isCommercial}) -> SearchResultOrg (OrgDisplayInfo {user = UserDisplayInfo {handle, name, avatarUrl = unpackURI <$> avatarUrl, userId}, orgId, isCommercial})
377- Nothing -> SearchResultUserLike (UserDisplayInfo {handle, name, avatarUrl = unpackURI <$> avatarUrl, userId})
370+ pure (userLikesWithInfo, projects)
371+ let userResults = SearchResultUserLike <$> userLikes
378372 let projectResults =
379373 projects
380374 <&> \ (Project {slug, summary, visibility}, ownerHandle) ->
@@ -487,23 +481,23 @@ searchDefinitionsEndpoint callerUserId (Query query) mayLimit userFilter project
487481accountInfoEndpoint :: Session -> WebApp UserAccountInfo
488482accountInfoEndpoint Session {sessionUserId} = do
489483 User {user_name, avatar_url, user_email, handle, user_id} <- PGO. expectUserById sessionUserId
490- (completedTours, organizationMemberships, isSuperadmin) <- PG. runTransaction $ do
491- tours <- Q. getCompletedToursForUser user_id
492- memberships <- Q. organizationMemberships user_id
484+ PG. runTransaction $ do
485+ completedTours <- Q. getCompletedToursForUser user_id
486+ organizationMemberships <- Q. organizationMemberships user_id
493487 isSuperadmin <- AuthZQ. isSuperadmin user_id
494- pure (tours, memberships, isSuperadmin)
495- pure $
496- UserAccountInfo
497- { handle = handle,
498- name = user_name,
499- avatarUrl = avatar_url,
500- userId = user_id,
501- primaryEmail = user_email,
502- completedTours,
503- organizationMemberships,
504- isSuperadmin,
505- displayInfo
506- }
488+ displayInfo <- DisplayInfoQ. unifiedDisplayInfoForUserOf id user_id
489+ pure $
490+ UserAccountInfo
491+ { handle = handle,
492+ name = user_name,
493+ avatarUrl = avatar_url,
494+ userId = user_id,
495+ primaryEmail = user_email,
496+ completedTours,
497+ organizationMemberships,
498+ isSuperadmin,
499+ displayInfo
500+ }
507501
508502completeToursEndpoint :: Session -> NonEmpty TourId -> WebApp NoContent
509503completeToursEndpoint Session {sessionUserId} flows = do
0 commit comments