DesktopController is a route root that had grown a controller's worth of session-list plumbing inline. Extract the cohesive fetch/paging cluster into a focused hook and a tested pure helper, per AGENTS.md's "keep route roots thin" guidance: - use-session-list-actions.ts: refreshSessions / loadMoreSessions / loadMoreSessionsForProfile / loadMoreMessagingForPlatform / refreshCronJobs (plus the private cron/messaging refreshers, sessionsToKeep, and the excluded-source constants) - desktop-controller-utils.ts: pure sameCronSignature helper (+ unit tests) Pure restructuring, no behavior change. desktop-controller.tsx: 1,441 -> 1,233.
11 lines
401 B
TypeScript
11 lines
401 B
TypeScript
import type { SessionInfo } from '@/hermes'
|
|
|
|
// Cheap signature compare so a poll only swaps the atom (and re-renders the
|
|
// sidebar) when the visible rows actually changed.
|
|
export function sameCronSignature(a: SessionInfo[], b: SessionInfo[]): boolean {
|
|
if (a.length !== b.length) {
|
|
return false
|
|
}
|
|
|
|
return a.every((session, i) => session.id === b[i]?.id && session.title === b[i]?.title)
|
|
}
|