Lock the right pane while focused, add project focus, quiet lead
This commit is contained in:
Vendored
+11
-1
@@ -94,24 +94,34 @@ export async function loadFocus() {
|
||||
}
|
||||
export function applyFocus(f) {
|
||||
state.focus = f;
|
||||
const hash = f.task_id ? `#/task/${f.task_id}` : "#/";
|
||||
const hash = f.task_id ? `#/task/${f.task_id}` : f.project_id ? `#/project/${f.project_id}` : "#/";
|
||||
if (location.hash !== hash && !(hash === "#/" && location.hash === "")) {
|
||||
location.hash = hash;
|
||||
}
|
||||
notify("focus");
|
||||
}
|
||||
export function focusedProject() {
|
||||
return state.projects.find((p) => p.id === state.focus.project_id);
|
||||
}
|
||||
export async function setFocus(change) {
|
||||
const taskId = change.task_id === undefined ? state.focus.task_id : (change.task_id ?? undefined);
|
||||
const projectId = taskId ? findTask(taskId)?.project_id : change.project_id === undefined ? state.focus.project_id : (change.project_id ?? undefined);
|
||||
const next = { tabs: state.focus.tabs, tab: change.tab ?? state.focus.tab };
|
||||
if (taskId) {
|
||||
next.task_id = taskId;
|
||||
}
|
||||
if (projectId) {
|
||||
next.project_id = projectId;
|
||||
}
|
||||
applyFocus(next);
|
||||
applyFocus(await put("/api/me/focus", { body: next }));
|
||||
}
|
||||
export function focusTask(taskId, tab = "transcript") {
|
||||
setFocus({ task_id: taskId, tab }).catch((err) => console.error("set focus", err));
|
||||
}
|
||||
export function focusProject(projectId) {
|
||||
setFocus({ task_id: null, project_id: projectId, tab: "todo" }).catch((err) => console.error("set focus", err));
|
||||
}
|
||||
export function focusTab(tab) {
|
||||
setFocus({ tab }).catch((err) => console.error("set focus", err));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user