Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions apps/code/src/renderer/navigationBridge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,3 +69,23 @@ export function isOnSettingsRoute(): boolean {
export function goBackInHistory(): void {
router.history.back();
}

export function goForwardInHistory(): void {
router.history.forward();
}

// Accessors for code that needs to read router state outside of React (e.g.
// Zustand actions, imperative event handlers). Components should prefer the
// `useRouterState` hook from `@tanstack/react-router`.
export function getCurrentMatches() {
return router.state.matches;
}

export function getCurrentLocation() {
return router.state.location;
}

export function subscribeToRouterResolved(handler: () => void): () => void {
const unsub = router.subscribe("onResolved", handler);
return unsub;
}
26 changes: 1 addition & 25 deletions apps/code/src/renderer/routes/code/tasks/$taskId.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import { TaskDetail } from "@features/task-detail/components/TaskDetail";
import { useTasks } from "@features/tasks/hooks/useTasks";
import { useNavigationStore } from "@stores/navigationStore";
import { createFileRoute } from "@tanstack/react-router";
import { useEffect } from "react";

export const Route = createFileRoute("/code/tasks/$taskId")({
component: TaskDetailRoute,
Expand All @@ -11,30 +9,8 @@ export const Route = createFileRoute("/code/tasks/$taskId")({
function TaskDetailRoute() {
const { taskId } = Route.useParams();
const { data: tasks } = useTasks();
const taskFromList = tasks?.find((t) => t.id === taskId);
const task = tasks?.find((t) => t.id === taskId);

// Silent sync of nav store to URL. Reads/writes via getState/setState so we
// don't trigger the store's navigate() helper, which would call
// router.navigate and fight with whatever navigation just landed us here.
useEffect(() => {
if (!taskFromList) return;
const state = useNavigationStore.getState();
if (
state.view.type === "task-detail" &&
state.view.data?.id === taskFromList.id
) {
return;
}
useNavigationStore.setState({
view: {
type: "task-detail",
data: taskFromList,
taskId: taskFromList.id,
},
});
}, [taskFromList]);

const task = taskFromList;
if (!task) {
return null;
}
Expand Down
Loading
Loading