Skip to content
Open
Changes from all commits
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
15 changes: 8 additions & 7 deletions packages/happy-app/sources/sync/storage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ export interface SessionRowData {
hasUnread: boolean;
}

function buildSessionRowData(session: Session, unreadSessionIds?: Set<string>): SessionRowData {
function buildSessionRowData(session: Session, unreadSessionIds: Set<string>): SessionRowData {
const isOnline = session.presence === "online";
const hasPermissions = !!(session.agentState?.requests && Object.keys(session.agentState.requests).length > 0);

Expand Down Expand Up @@ -125,7 +125,7 @@ function buildSessionRowData(session: Session, unreadSessionIds?: Set<string>):
homeDir: session.metadata?.homeDir ?? null,
completedTodosCount: session.todos?.filter(todo => todo.status === 'completed').length ?? 0,
totalTodosCount: session.todos?.length ?? 0,
hasUnread: unreadSessionIds?.has(session.id) ?? false,
hasUnread: unreadSessionIds.has(session.id),
};
}

Expand Down Expand Up @@ -233,7 +233,7 @@ interface StorageState {
// Helper function to build unified list view data from sessions and machines
function buildSessionListViewData(
sessions: Record<string, Session>,
unreadSessionIds?: Set<string>,
unreadSessionIds: Set<string>,
): SessionListViewItem[] {
// Separate active and inactive sessions
const activeSessions: Session[] = [];
Expand Down Expand Up @@ -1007,7 +1007,7 @@ export const storage = create<StorageState>()((set, get) => {
return {
...state,
sessions: updatedSessions,
sessionListViewData: buildSessionListViewData(updatedSessions)
sessionListViewData: buildSessionListViewData(updatedSessions, state.unreadSessionIds)
};
}),
updateSessionPermissionMode: (sessionId: string, mode: string | null) => set((state) => {
Expand Down Expand Up @@ -1150,7 +1150,8 @@ export const storage = create<StorageState>()((set, get) => {

// Rebuild sessionListViewData to reflect machine changes
const sessionListViewData = buildSessionListViewData(
state.sessions
state.sessions,
state.unreadSessionIds,
);

return {
Expand All @@ -1167,7 +1168,7 @@ export const storage = create<StorageState>()((set, get) => {
return {
...state,
machines: remaining,
sessionListViewData: buildSessionListViewData(state.sessions)
sessionListViewData: buildSessionListViewData(state.sessions, state.unreadSessionIds)
};
}),
// Artifact methods
Expand Down Expand Up @@ -1241,7 +1242,7 @@ export const storage = create<StorageState>()((set, get) => {
saveSessionEffortLevels(effortLevels);

// Rebuild sessionListViewData without the deleted session
const sessionListViewData = buildSessionListViewData(remainingSessions);
const sessionListViewData = buildSessionListViewData(remainingSessions, state.unreadSessionIds);

return {
...state,
Expand Down
Loading