Files
stack/apps/web/src/lib/api/tasks.ts
Jason Woltje c510d6fbc6
Some checks failed
ci/woodpecker/push/web Pipeline failed
feat(web): wire tasks page to real API data
Replace mock data with real fetchTasks() API call. Add workspace-aware
data fetching, MosaicSpinner loading state, empty state card, and
error state with retry using design tokens throughout.

Refs #467
2026-02-22 21:49:38 -06:00

37 lines
1.0 KiB
TypeScript

/**
* Task API Client
* Handles task-related API requests
*/
import type { Task } from "@mosaic/shared";
import type { TaskStatus, TaskPriority } from "@mosaic/shared";
import { apiGet, type ApiResponse } from "./client";
export interface TaskFilters {
status?: TaskStatus;
priority?: TaskPriority;
workspaceId?: string;
}
/**
* Fetch tasks with optional filters
*/
export async function fetchTasks(filters?: TaskFilters): Promise<Task[]> {
const params = new URLSearchParams();
// Add filter parameters (not workspace ID - that goes in header)
if (filters?.status) {
params.append("status", filters.status);
}
if (filters?.priority) {
params.append("priority", filters.priority);
}
const queryString = params.toString();
const endpoint = queryString ? `/api/tasks?${queryString}` : "/api/tasks";
// Pass workspaceId via header (X-Workspace-Id) instead of query string
const response = await apiGet<ApiResponse<Task[]>>(endpoint, filters?.workspaceId);
return response.data;
}