History

Require bootstrap IDs for root thread auto-navigation

- Remove snapshot fallback lookup for missing bootstrap project/thread IDs - Only expand project and navigate when server payload includes both IDs

Julius Marminge committed 8 months ago

Commit 9e8363c1 parent 080752a1 file · +5 −30Browse files

Unified · Split

apps/web/src/routes/__root.tsx+5−30
@@ -198,52 +198,27 @@ function EventRouter() { · 197 unmodified lines
198 return;198 return;
199 }199 }
200 200
201 const fallbackSnapshot =201 if (!payload.bootstrapProjectId || !payload.bootstrapThreadId) {
202 payload.bootstrapProjectId && payload.bootstrapThreadId
203 ? null
204 : await api.orchestration.getSnapshot().catch(() => null);
205 if (disposed) {
206 return;
207 }
208
209 const bootstrapProjectId =
210 payload.bootstrapProjectId ??
211 fallbackSnapshot?.projects.find(
212 (project) => project.workspaceRoot === payload.cwd && project.deletedAt === null,
213 )?.id;
214 if (!bootstrapProjectId) {
215 return;202 return;
216 }203 }
217 dispatch({204 dispatch({
218 type: "SET_PROJECT_EXPANDED",205 type: "SET_PROJECT_EXPANDED",
219 projectId: bootstrapProjectId,206 projectId: payload.bootstrapProjectId,
220 expanded: true,207 expanded: true,
221 });208 });
222 209
223 const bootstrapThreadId =
224 payload.bootstrapThreadId ??
225 fallbackSnapshot?.threads
226 .filter((thread) => thread.projectId === bootstrapProjectId && thread.deletedAt === null)
227 .toSorted((a, b) => {
228 const byDate = new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime();
229 if (byDate !== 0) return byDate;
230 return b.id.localeCompare(a.id);
231 })[0]?.id;
232 if (!bootstrapThreadId) {
233 return;
234 }
235 if (pathnameRef.current !== "/") {210 if (pathnameRef.current !== "/") {
236 return;211 return;
237 }212 }
238 if (handledBootstrapThreadIdRef.current === bootstrapThreadId) {213 if (handledBootstrapThreadIdRef.current === payload.bootstrapThreadId) {
239 return;214 return;
240 }215 }
241 await navigate({216 await navigate({
242 to: "/$threadId",217 to: "/$threadId",
243 params: { threadId: bootstrapThreadId },218 params: { threadId: payload.bootstrapThreadId },
244 replace: true,219 replace: true,
245 });220 });
246 handledBootstrapThreadIdRef.current = bootstrapThreadId;221 handledBootstrapThreadIdRef.current = payload.bootstrapThreadId;
247 })().catch(() => undefined);222 })().catch(() => undefined);
248 });223 });
249 const unsubServerConfigUpdated = onServerConfigUpdated((payload) => {224 const unsubServerConfigUpdated = onServerConfigUpdated((payload) => {