chore: initial commit of TaskTracker project
Existing ASP.NET API with vanilla JS SPA, WindowWatcher, Chrome extension, and MCP server. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
48
TaskTracker.Api/wwwroot/js/api.js
Normal file
48
TaskTracker.Api/wwwroot/js/api.js
Normal file
@@ -0,0 +1,48 @@
|
||||
const BASE = '/api';
|
||||
|
||||
async function request(path, options = {}) {
|
||||
const res = await fetch(`${BASE}${path}`, {
|
||||
headers: { 'Content-Type': 'application/json', ...options.headers },
|
||||
...options,
|
||||
});
|
||||
const json = await res.json();
|
||||
if (!json.success) throw new Error(json.error || 'Request failed');
|
||||
return json.data;
|
||||
}
|
||||
|
||||
export const tasks = {
|
||||
list: (status, { parentId, includeSubTasks } = {}) => {
|
||||
const params = new URLSearchParams();
|
||||
if (status) params.set('status', status);
|
||||
if (parentId != null) params.set('parentId', parentId);
|
||||
if (includeSubTasks) params.set('includeSubTasks', 'true');
|
||||
const qs = params.toString();
|
||||
return request(`/tasks${qs ? `?${qs}` : ''}`);
|
||||
},
|
||||
subtasks: (parentId) => request(`/tasks?parentId=${parentId}`),
|
||||
active: () => request('/tasks/active'),
|
||||
get: (id) => request(`/tasks/${id}`),
|
||||
create: (body) => request('/tasks', { method: 'POST', body: JSON.stringify(body) }),
|
||||
start: (id) => request(`/tasks/${id}/start`, { method: 'PUT' }),
|
||||
pause: (id, note) => request(`/tasks/${id}/pause`, { method: 'PUT', body: JSON.stringify({ note }) }),
|
||||
resume: (id, note) => request(`/tasks/${id}/resume`, { method: 'PUT', body: JSON.stringify({ note }) }),
|
||||
complete: (id) => request(`/tasks/${id}/complete`, { method: 'PUT' }),
|
||||
abandon: (id) => request(`/tasks/${id}`, { method: 'DELETE' }),
|
||||
};
|
||||
|
||||
export const notes = {
|
||||
list: (taskId) => request(`/tasks/${taskId}/notes`),
|
||||
create: (taskId, body) => request(`/tasks/${taskId}/notes`, { method: 'POST', body: JSON.stringify(body) }),
|
||||
};
|
||||
|
||||
export const context = {
|
||||
recent: (minutes = 30) => request(`/context/recent?minutes=${minutes}`),
|
||||
summary: () => request('/context/summary'),
|
||||
};
|
||||
|
||||
export const mappings = {
|
||||
list: () => request('/mappings'),
|
||||
create: (body) => request('/mappings', { method: 'POST', body: JSON.stringify(body) }),
|
||||
update: (id, body) => request(`/mappings/${id}`, { method: 'PUT', body: JSON.stringify(body) }),
|
||||
remove: (id) => request(`/mappings/${id}`, { method: 'DELETE' }),
|
||||
};
|
||||
Reference in New Issue
Block a user