Mark unread turn summaries in the switcher and Project rows
This commit is contained in:
Vendored
+38
-1
@@ -15,6 +15,8 @@ export const state = {
|
||||
focus: { tabs: ["transcript"], tab: "transcript" },
|
||||
leadSessions: [],
|
||||
leadTranscript: [],
|
||||
jump: undefined,
|
||||
summaryReads: {},
|
||||
};
|
||||
const listeners = new Map();
|
||||
export function on(topic, fn) {
|
||||
@@ -291,6 +293,32 @@ function markVisited(taskId) {
|
||||
}
|
||||
localStorage.setItem(visitsKey, JSON.stringify({ ...lastVisits(), [taskId]: Date.now() }));
|
||||
}
|
||||
export async function loadSummaryReads() {
|
||||
state.summaryReads = await get("/api/me/summary-reads");
|
||||
notify("summaries");
|
||||
}
|
||||
export function unreadSummary(task) {
|
||||
return task.summary_seq > (state.summaryReads[task.id] ?? 0);
|
||||
}
|
||||
function noteSummaryRead(taskId, seq) {
|
||||
if ((state.summaryReads[taskId] ?? 0) >= seq) {
|
||||
return false;
|
||||
}
|
||||
state.summaryReads[taskId] = seq;
|
||||
notify("summaries");
|
||||
return true;
|
||||
}
|
||||
export function markSummaryRead(taskId, seq) {
|
||||
if (!noteSummaryRead(taskId, seq)) {
|
||||
return;
|
||||
}
|
||||
put("/api/tasks/{taskId}/summary-read", { path: { taskId }, body: { seq } }).catch((err) => console.error("mark summary read", err));
|
||||
}
|
||||
export function openSummary(task) {
|
||||
state.jump = { taskId: task.id, seq: task.summary_seq };
|
||||
focusTask(task.id, "transcript");
|
||||
notify("jump");
|
||||
}
|
||||
export function selectTask(taskId) {
|
||||
markVisited(state.selectedTaskId);
|
||||
markVisited(taskId);
|
||||
@@ -353,8 +381,17 @@ export function handleEvent(ev) {
|
||||
case "inbox.updated":
|
||||
void loadInbox();
|
||||
break;
|
||||
case "turn.ended":
|
||||
case "turn.ended": {
|
||||
notifyTurn(ev);
|
||||
const task = ev.payload["summary"] === true && ev.task_id ? findTask(ev.task_id) : undefined;
|
||||
if (task && ev.seq > task.summary_seq) {
|
||||
task.summary_seq = ev.seq;
|
||||
notify("summaries");
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "summary.read":
|
||||
noteSummaryRead(String(ev.payload["task_id"]), Number(ev.payload["seq"]));
|
||||
break;
|
||||
case "review.started":
|
||||
case "review.finished":
|
||||
|
||||
Reference in New Issue
Block a user