mirror of
https://github.com/stablyai/orca.git
synced 2026-09-23 00:02:29 +00:00
* fix: stop unchanged worktree refresh churn * fix: preserve smart sort telemetry recomputations * fix: preserve duplicate worktree host identities * perf: skip reconciled catalog traversal * test: strengthen worktree refresh regressions
33 lines
885 B
TypeScript
33 lines
885 B
TypeScript
export type WorktreeSortOrderUpdate = {
|
|
worktreeId: string
|
|
sortOrder: number
|
|
}
|
|
|
|
type WorktreeSortOrderMeta = {
|
|
sortOrder?: number
|
|
}
|
|
|
|
export function planWorktreeSortOrderUpdates(
|
|
orderedIds: readonly string[],
|
|
getMeta: (worktreeId: string) => WorktreeSortOrderMeta | undefined,
|
|
now: number
|
|
): WorktreeSortOrderUpdate[] {
|
|
const uniqueIds = [...new Set(orderedIds)]
|
|
const existing = uniqueIds.flatMap((worktreeId) => {
|
|
const meta = getMeta(worktreeId)
|
|
return meta ? [{ worktreeId, sortOrder: meta.sortOrder }] : []
|
|
})
|
|
const alreadyOrdered = existing.every(
|
|
(entry, index) =>
|
|
Number.isFinite(entry.sortOrder) &&
|
|
(index === 0 || existing[index - 1].sortOrder! > entry.sortOrder!)
|
|
)
|
|
if (alreadyOrdered) {
|
|
return []
|
|
}
|
|
return existing.map((entry, index) => ({
|
|
worktreeId: entry.worktreeId,
|
|
sortOrder: now - index * 1000
|
|
}))
|
|
}
|