Skip to content

Commit 753add4

Browse files
committed
fix(onboarding): runs upstream discovery even with zero org repos
1 parent 601afd3 commit 753add4

File tree

1 file changed

+48
-49
lines changed

1 file changed

+48
-49
lines changed

src/app/components/onboarding/RepoSelector.tsx

Lines changed: 48 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,6 @@ export default function RepoSelector(props: RepoSelectorProps) {
5959
// Version counter: if selectedOrgs changes while fetches are in-flight,
6060
// stale callbacks check this and bail out instead of writing to state.
6161
const version = ++effectVersion;
62-
if (orgs.length === 0) {
63-
setOrgStates([]);
64-
setLoadedCount(0);
65-
return;
66-
}
67-
68-
// Initialize all orgs as loading
6962
setOrgStates(
7063
orgs.map((org) => ({
7164
org,
@@ -77,6 +70,10 @@ export default function RepoSelector(props: RepoSelectorProps) {
7770
);
7871
setLoadedCount(0);
7972

73+
if (orgs.length === 0 && !props.showUpstreamDiscovery) {
74+
return;
75+
}
76+
8077
const client = getClient();
8178
if (!client) {
8279
setOrgStates(
@@ -89,58 +86,60 @@ export default function RepoSelector(props: RepoSelectorProps) {
8986
}))
9087
);
9188
setLoadedCount(orgs.length);
92-
return;
89+
if (!props.showUpstreamDiscovery) return;
9390
}
9491

9592
// Fetch org type info first, then repos incrementally
9693
void (async () => {
97-
let entries: OrgEntry[];
98-
if (preloadedEntries != null) {
99-
entries = preloadedEntries;
100-
} else {
101-
try {
102-
entries = await fetchOrgs(client);
103-
} catch {
104-
entries = [];
94+
if (orgs.length > 0 && client) {
95+
let entries: OrgEntry[];
96+
if (preloadedEntries != null) {
97+
entries = preloadedEntries;
98+
} else {
99+
try {
100+
entries = await fetchOrgs(client);
101+
} catch {
102+
entries = [];
103+
}
105104
}
106-
}
107105

108-
if (version !== effectVersion) return;
106+
if (version !== effectVersion) return;
109107

110-
const typeMap = new Map<string, "org" | "user">(
111-
entries.map((e) => [e.login, e.type])
112-
);
108+
const typeMap = new Map<string, "org" | "user">(
109+
entries.map((e) => [e.login, e.type])
110+
);
113111

114-
// Fetch repos for each org independently so results trickle in
115-
const promises = orgs.map(async (org) => {
116-
const type = typeMap.get(org) ?? "org";
117-
try {
118-
const repos = await fetchRepos(client, org, type);
119-
if (version !== effectVersion) return;
120-
setOrgStates((prev) =>
121-
prev.map((s) =>
122-
s.org === org ? { ...s, type, repos, loading: false } : s
123-
)
124-
);
125-
} catch (err) {
126-
if (version !== effectVersion) return;
127-
const message =
128-
err instanceof Error ? err.message : "Failed to load repositories";
129-
setOrgStates((prev) =>
130-
prev.map((s) =>
131-
s.org === org
132-
? { ...s, type, repos: [], loading: false, error: message }
133-
: s
134-
)
135-
);
136-
} finally {
137-
if (version === effectVersion) {
138-
setLoadedCount((c) => c + 1);
112+
// Fetch repos for each org independently so results trickle in
113+
const promises = orgs.map(async (org) => {
114+
const type = typeMap.get(org) ?? "org";
115+
try {
116+
const repos = await fetchRepos(client, org, type);
117+
if (version !== effectVersion) return;
118+
setOrgStates((prev) =>
119+
prev.map((s) =>
120+
s.org === org ? { ...s, type, repos, loading: false } : s
121+
)
122+
);
123+
} catch (err) {
124+
if (version !== effectVersion) return;
125+
const message =
126+
err instanceof Error ? err.message : "Failed to load repositories";
127+
setOrgStates((prev) =>
128+
prev.map((s) =>
129+
s.org === org
130+
? { ...s, type, repos: [], loading: false, error: message }
131+
: s
132+
)
133+
);
134+
} finally {
135+
if (version === effectVersion) {
136+
setLoadedCount((c) => c + 1);
137+
}
139138
}
140-
}
141-
});
139+
});
142140

143-
await Promise.allSettled(promises);
141+
await Promise.allSettled(promises);
142+
}
144143

145144
// After all org repos have loaded, trigger upstream discovery if enabled
146145
if (props.showUpstreamDiscovery && version === effectVersion) {

0 commit comments

Comments
 (0)