27 lines
824 B
TypeScript
27 lines
824 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) => {
|
|
const other = b[i]
|
|
|
|
return (
|
|
other != null &&
|
|
session.id === other.id &&
|
|
session._lineage_root_id === other._lineage_root_id &&
|
|
session.title === other.title &&
|
|
session.source === other.source &&
|
|
session.profile === other.profile &&
|
|
session.preview === other.preview &&
|
|
session.message_count === other.message_count &&
|
|
session.last_active === other.last_active &&
|
|
session.ended_at === other.ended_at
|
|
)
|
|
})
|
|
}
|