Skip to content

Commit 77530db

Browse files
committed
fix(onboarding): prevents discovery re-trigger on repo select
1 parent 753add4 commit 77530db

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

src/app/components/onboarding/RepoSelector.tsx

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {
22
createSignal,
33
createEffect,
44
createMemo,
5+
untrack,
56
Show,
67
Index,
78
For,
@@ -141,27 +142,29 @@ export default function RepoSelector(props: RepoSelectorProps) {
141142
await Promise.allSettled(promises);
142143
}
143144

144-
// After all org repos have loaded, trigger upstream discovery if enabled
145+
// After all org repos have loaded, trigger upstream discovery if enabled.
146+
// Use untrack to prevent reactive prop reads from re-triggering the effect.
145147
if (props.showUpstreamDiscovery && version === effectVersion) {
146-
const currentUser = user();
148+
const currentUser = untrack(() => user());
147149
const discoveryClient = getClient();
148150
if (currentUser && discoveryClient) {
149151
setDiscoveringUpstream(true);
150152
setDiscoveredRepos([]);
151153
setDiscoveryCapped(false);
152-
// Build exclude set from all org repos + already-selected repos + current upstream repos
153154
const allOrgFullNames = new Set<string>();
154155
for (const state of orgStates()) {
155156
for (const repo of state.repos) {
156157
allOrgFullNames.add(repo.fullName);
157158
}
158159
}
159-
for (const repo of props.selected) {
160-
allOrgFullNames.add(repo.fullName);
161-
}
162-
for (const repo of props.upstreamRepos ?? []) {
163-
allOrgFullNames.add(repo.fullName);
164-
}
160+
untrack(() => {
161+
for (const repo of props.selected) {
162+
allOrgFullNames.add(repo.fullName);
163+
}
164+
for (const repo of props.upstreamRepos ?? []) {
165+
allOrgFullNames.add(repo.fullName);
166+
}
167+
});
165168
void discoverUpstreamRepos(discoveryClient, currentUser.login, allOrgFullNames)
166169
.then((repos) => {
167170
if (version !== effectVersion) return;

0 commit comments

Comments
 (0)