add vikunja integration

This commit is contained in:
Matthias Hochmeister
2026-03-05 18:07:18 +01:00
parent fb5acd3d52
commit e9463c1c66
13 changed files with 683 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
import { api } from './api';
import type {
VikunjaTasksResponse,
VikunjaProjectsResponse,
VikunjaTask,
} from '../types/vikunja.types';
interface ApiResponse<T> {
success: boolean;
data: T;
configured: boolean;
}
export const vikunjaApi = {
getMyTasks(): Promise<VikunjaTasksResponse> {
return api
.get<ApiResponse<VikunjaTasksResponse['data']>>('/api/vikunja/tasks')
.then((r) => ({ configured: r.data.configured, data: r.data.data }));
},
getOverdueTasks(): Promise<VikunjaTasksResponse> {
return api
.get<ApiResponse<VikunjaTasksResponse['data']>>('/api/vikunja/overdue')
.then((r) => ({ configured: r.data.configured, data: r.data.data }));
},
getProjects(): Promise<VikunjaProjectsResponse> {
return api
.get<ApiResponse<VikunjaProjectsResponse['data']>>('/api/vikunja/projects')
.then((r) => ({ configured: r.data.configured, data: r.data.data }));
},
createTask(projectId: number, title: string, dueDate?: string): Promise<{ data: VikunjaTask }> {
return api
.post<{ success: boolean; data: VikunjaTask }>('/api/vikunja/tasks', {
projectId,
title,
dueDate,
})
.then((r) => ({ data: r.data.data }));
},
};