55 lines
1.3 KiB
JavaScript
55 lines
1.3 KiB
JavaScript
// hooks/useTaskTroveTasks.js
|
|
|
|
import { useState, useEffect } from 'react';
|
|
import { TASKTROVE_API, TASKTROVE_TOKEN } from '../config.js';
|
|
|
|
async function fetchTaskTroveTasks() {
|
|
try {
|
|
const response = await fetch(TASKTROVE_API, {
|
|
headers: {
|
|
Authorization: `Bearer ${TASKTROVE_TOKEN}`
|
|
}
|
|
});
|
|
|
|
if (!response.ok) return [];
|
|
|
|
const data = await response.json();
|
|
const tasks = data.tasks || [];
|
|
const today = new Date().toISOString().split('T')[0];
|
|
|
|
return tasks
|
|
.filter(task => {
|
|
if (task.completed) return false;
|
|
const isDueToday = task.dueDate === today;
|
|
const isP1 = task.priority === 1;
|
|
const isP2 = task.priority === 2;
|
|
return isDueToday || isP1 || isP2;
|
|
})
|
|
.map(task => ({
|
|
title: task.title,
|
|
priority: task.priority,
|
|
dueDate: task.dueDate
|
|
}));
|
|
|
|
} catch (err) {
|
|
return [];
|
|
}
|
|
}
|
|
|
|
export function useTaskTroveTasks() {
|
|
const [tasks, setTasks] = useState(null);
|
|
|
|
async function updateTasks() {
|
|
const tsks = await fetchTaskTroveTasks();
|
|
setTasks(tsks);
|
|
}
|
|
|
|
useEffect(() => {
|
|
updateTasks();
|
|
const interval = setInterval(updateTasks, 60000);
|
|
return () => clearInterval(interval);
|
|
}, []);
|
|
|
|
return { tasks };
|
|
}
|