Mark unread turn summaries in the switcher and Project rows
This commit is contained in:
Vendored
+14
-4
@@ -1,7 +1,8 @@
|
||||
import { get, post } from "./api.js";
|
||||
import { errorText, h, replace, showAlert } from "./dom.js";
|
||||
import { focusLead } from "./panes.js";
|
||||
import { activeTasks, findTask, focusedProject, focusProject, focusTab, focusTask, lastVisits, onEach, state, taskState } from "./state.js";
|
||||
import { summaryMark } from "./project.js";
|
||||
import { activeTasks, findTask, focusedProject, focusProject, focusTab, focusTask, lastVisits, onEach, openSummary, state, taskState, unreadSummary } from "./state.js";
|
||||
import { confirmMerge, models } from "./task.js";
|
||||
import { taskStyle } from "./taskcolor.js";
|
||||
export function bindShortcuts() {
|
||||
@@ -90,7 +91,7 @@ export function openSwitcher() {
|
||||
let selected = 0;
|
||||
let rows = [];
|
||||
let picking = null;
|
||||
const offs = onEach(["projects", "tasks", "sessions", "inbox"], () => render());
|
||||
const offs = onEach(["projects", "tasks", "sessions", "inbox", "summaries"], () => render());
|
||||
const onEscape = (e) => {
|
||||
if (e.key !== "Escape") {
|
||||
return;
|
||||
@@ -116,7 +117,16 @@ export function openSwitcher() {
|
||||
};
|
||||
const go = (taskId) => {
|
||||
close();
|
||||
focusTask(taskId, state.inbox.some((item) => item.task_id === taskId) ? "inbox" : "transcript");
|
||||
const task = findTask(taskId);
|
||||
if (state.inbox.some((item) => item.task_id === taskId)) {
|
||||
focusTask(taskId, "inbox");
|
||||
}
|
||||
else if (task && unreadSummary(task)) {
|
||||
openSummary(task);
|
||||
}
|
||||
else {
|
||||
focusTask(taskId, "transcript");
|
||||
}
|
||||
};
|
||||
const create = async (projectId, title, workflow) => {
|
||||
close();
|
||||
@@ -188,7 +198,7 @@ export function openSwitcher() {
|
||||
.sort((a, b) => Number(b.count > 0) - Number(a.count > 0) || a.visited - b.visited);
|
||||
rows = matches.map(({ project, task, count }) => {
|
||||
const ts = taskState(task);
|
||||
const el = h("li", { style: taskStyle(task.id) }, h("span", { class: `dot ${ts.kind}`, title: ts.title }), h("span", { class: "task-title" }, h("span", { class: "project-name" }, project.name), " ", task.parent_task_id !== undefined && h("span", { class: "subtask-mark" }, `${findTask(task.parent_task_id)?.title ?? task.parent_task_id} ↳ `), h("span", { class: "task-name" }, task.title)), count > 0 && h("span", { class: "badge", title: "inbox items" }, count), h("span", { class: `task-state ${ts.kind}`, title: ts.title }, ts.label));
|
||||
const el = h("li", { style: taskStyle(task.id) }, h("span", { class: `dot ${ts.kind}`, title: ts.title }), h("span", { class: "task-title" }, h("span", { class: "project-name" }, project.name), " ", task.parent_task_id !== undefined && h("span", { class: "subtask-mark" }, `${findTask(task.parent_task_id)?.title ?? task.parent_task_id} ↳ `), h("span", { class: "task-name" }, task.title)), count > 0 && h("span", { class: "badge", title: "inbox items" }, count), summaryMark(task), h("span", { class: `task-state ${ts.kind}`, title: ts.title }, ts.label));
|
||||
return { el, pick: () => go(task.id) };
|
||||
});
|
||||
for (const p of (targets ?? state.projects).filter((p) => `${p.name} project`.toLowerCase().includes(q))) {
|
||||
|
||||
Reference in New Issue
Block a user