frontend client for gemstone. decentralised workplace app

feat: group handshakes by lattice

serenity a1f4f43c b9799e2b

+11 -8
src/providers/authed/ChannelsProvider.tsx
···
const { memberships, isInitialising: membershipsInitialising } =
useMemberships();
-
// TODO: group channel memberships by
-
const channelsQueries = useQueries({
-
queries: memberships.map((membershipObjects) => ({
-
enabled: !membershipsInitialising,
-
queryKey: ["channel", membershipObjects.membership.channel.uri],
-
queryFn: () => channelQueryFn(membershipObjects.channelAtUri),
-
staleTime: DEFAULT_STALE_TIME,
-
})),
});
const isInitialising = channelsQueries.some((q) => q.isLoading);
···
const { memberships, isInitialising: membershipsInitialising } =
useMemberships();
+
// TODO: group channel memberships by lattices
+
// TODO: move this to own query hook
+
const channelsQueries = useQueries({
+
queries: memberships.map((membershipObjects) => {
+
return {
+
enabled: !membershipsInitialising,
+
queryKey: ["channel", membershipObjects.membership.channel.uri],
+
queryFn: () => channelQueryFn(membershipObjects.channelAtUri),
+
staleTime: DEFAULT_STALE_TIME,
+
};
+
}),
});
const isInitialising = channelsQueries.some((q) => q.isLoading);
+28 -13
src/providers/authed/HandshakesProvider.tsx
···
} = oauth;
const isOAuthReady = !isOauthLoading && !!oAuthAgent && !!oAuthSession;
const handshakeQueries = useQueries({
-
queries: channels.map((channelObj) => ({
-
enabled: !channelsInitialising && !membershipsInitialising,
-
queryKey: ["handshakes", channelObj.channel.name],
-
queryFn: () =>
-
handshakesQueryFn({
-
channel: channelObj.channel,
-
memberships: memberships.map(
-
({ membership }) => membership,
-
),
-
oauth,
-
}),
-
staleTime: Infinity,
-
})),
});
const isInitialising =
···
} = oauth;
const isOAuthReady = !isOauthLoading && !!oAuthAgent && !!oAuthSession;
+
const channelsMap = new Map<string, typeof channels>();
+
channels.forEach((channelData) => {
+
const key = channelData.channel.routeThrough.cid;
+
+
const existingGroup = channelsMap.get(key) ?? [];
+
+
existingGroup.push(channelData);
+
+
channelsMap.set(key, existingGroup);
+
});
+
+
// TODO: move this to own query hook
const handshakeQueries = useQueries({
+
queries: channelsMap
+
.values()
+
.map((channelObjs) => ({
+
enabled: !channelsInitialising && !membershipsInitialising,
+
queryKey: ["handshakes", channelObjs[0].channel.name],
+
queryFn: () =>
+
handshakesQueryFn({
+
channel: channelObjs[0].channel,
+
memberships: memberships.map(
+
({ membership }) => membership,
+
),
+
oauth,
+
}),
+
staleTime: Infinity,
+
}))
+
.toArray(),
});
const isInitialising =
+1
src/providers/authed/MembershipsProvider.tsx
···
const { session, isLoading, agent } = oauth;
const isOAuthReady = !isLoading && !!agent && !!session;
const membershipsQuery = useQuery({
queryKey: ["membership", session?.did],
enabled: isOAuthReady,
···
const { session, isLoading, agent } = oauth;
const isOAuthReady = !isLoading && !!agent && !!session;
+
// TODO: move this to own query hook
const membershipsQuery = useQuery({
queryKey: ["membership", session?.did],
enabled: isOAuthReady,
+1 -2
src/providers/authed/SessionsProvider.tsx
···
useHandshakes();
const handshakes = handshakesMap.entries().toArray();
const endpointQueries = useQueries({
queries: handshakes.map((handshake) => ({
enabled: !handshakesInitialising,
···
staleTime: DEFAULT_STALE_TIME,
})),
});
-
-
console.log(endpointQueries);
const isInitialising =
handshakesInitialising || endpointQueries.some((q) => q.isLoading);
···
useHandshakes();
const handshakes = handshakesMap.entries().toArray();
+
// TODO: move this to own query hook
const endpointQueries = useQueries({
queries: handshakes.map((handshake) => ({
enabled: !handshakesInitialising,
···
staleTime: DEFAULT_STALE_TIME,
})),
});
const isInitialising =
handshakesInitialising || endpointQueries.some((q) => q.isLoading);