frontend client for gemstone. decentralised workplace app
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: group handshakes by lattice

serenity a1f4f43c b9799e2b

+41 -23
+11 -8
src/providers/authed/ChannelsProvider.tsx
··· 63 63 const { memberships, isInitialising: membershipsInitialising } = 64 64 useMemberships(); 65 65 66 - // TODO: group channel memberships by 66 + // TODO: group channel memberships by lattices 67 + // TODO: move this to own query hook 68 + const channelsQueries = useQueries({ 69 + queries: memberships.map((membershipObjects) => { 67 70 68 - const channelsQueries = useQueries({ 69 - queries: memberships.map((membershipObjects) => ({ 70 - enabled: !membershipsInitialising, 71 - queryKey: ["channel", membershipObjects.membership.channel.uri], 72 - queryFn: () => channelQueryFn(membershipObjects.channelAtUri), 73 - staleTime: DEFAULT_STALE_TIME, 74 - })), 71 + return { 72 + enabled: !membershipsInitialising, 73 + queryKey: ["channel", membershipObjects.membership.channel.uri], 74 + queryFn: () => channelQueryFn(membershipObjects.channelAtUri), 75 + staleTime: DEFAULT_STALE_TIME, 76 + }; 77 + }), 75 78 }); 76 79 77 80 const isInitialising = channelsQueries.some((q) => q.isLoading);
+28 -13
src/providers/authed/HandshakesProvider.tsx
··· 64 64 } = oauth; 65 65 const isOAuthReady = !isOauthLoading && !!oAuthAgent && !!oAuthSession; 66 66 67 + const channelsMap = new Map<string, typeof channels>(); 68 + channels.forEach((channelData) => { 69 + const key = channelData.channel.routeThrough.cid; 70 + 71 + const existingGroup = channelsMap.get(key) ?? []; 72 + 73 + existingGroup.push(channelData); 74 + 75 + channelsMap.set(key, existingGroup); 76 + }); 77 + 78 + // TODO: move this to own query hook 67 79 const handshakeQueries = useQueries({ 68 - queries: channels.map((channelObj) => ({ 69 - enabled: !channelsInitialising && !membershipsInitialising, 70 - queryKey: ["handshakes", channelObj.channel.name], 71 - queryFn: () => 72 - handshakesQueryFn({ 73 - channel: channelObj.channel, 74 - memberships: memberships.map( 75 - ({ membership }) => membership, 76 - ), 77 - oauth, 78 - }), 79 - staleTime: Infinity, 80 - })), 80 + queries: channelsMap 81 + .values() 82 + .map((channelObjs) => ({ 83 + enabled: !channelsInitialising && !membershipsInitialising, 84 + queryKey: ["handshakes", channelObjs[0].channel.name], 85 + queryFn: () => 86 + handshakesQueryFn({ 87 + channel: channelObjs[0].channel, 88 + memberships: memberships.map( 89 + ({ membership }) => membership, 90 + ), 91 + oauth, 92 + }), 93 + staleTime: Infinity, 94 + })) 95 + .toArray(), 81 96 }); 82 97 83 98 const isInitialising =
+1
src/providers/authed/MembershipsProvider.tsx
··· 94 94 const { session, isLoading, agent } = oauth; 95 95 const isOAuthReady = !isLoading && !!agent && !!session; 96 96 97 + // TODO: move this to own query hook 97 98 const membershipsQuery = useQuery({ 98 99 queryKey: ["membership", session?.did], 99 100 enabled: isOAuthReady,
+1 -2
src/providers/authed/SessionsProvider.tsx
··· 37 37 useHandshakes(); 38 38 const handshakes = handshakesMap.entries().toArray(); 39 39 40 + // TODO: move this to own query hook 40 41 const endpointQueries = useQueries({ 41 42 queries: handshakes.map((handshake) => ({ 42 43 enabled: !handshakesInitialising, ··· 47 48 staleTime: DEFAULT_STALE_TIME, 48 49 })), 49 50 }); 50 - 51 - console.log(endpointQueries); 52 51 53 52 const isInitialising = 54 53 handshakesInitialising || endpointQueries.some((q) => q.isLoading);