mirror of
https://github.com/R0m1k3/noteflow.git
synced 2026-10-11 17:29:37 +02:00
Cette mise à jour majeure transforme l'application en une plateforme complète de gestion de notes et de tâches avec de nombreuses nouvelles fonctionnalités. Nouvelles fonctionnalités: 1. **Éditeur de texte enrichi** - Barre d'outils complète avec formatage (gras, italique, souligné) - Support des titres (H1, H2, H3) - Listes à puces et numérotées - Alignement du texte (gauche, centre, droite) - Citations et blocs de code - Insertion de liens - Raccourcis clavier (Ctrl+B, Ctrl+I, Ctrl+U) 2. **Box Tâches globales (sidebar droite)** - Liste de tâches accessible depuis toute l'application - Ajout/suppression de tâches - Marquage des tâches comme complétées - Persistance des données 3. **Box Flux RSS (sidebar droite)** - Affichage des derniers articles RSS - Rafraîchissement manuel des flux - Ouverture des articles dans un nouvel onglet - Gestion des flux dans l'admin 4. **Support des fichiers joints dans les notes** - Upload de tous types de fichiers - Affichage de la taille des fichiers - Téléchargement et suppression des fichiers - Interface utilisateur intuitive 5. **Panel d'administration enrichi** - Onglet "Flux RSS" : gestion des flux RSS - Onglet "OpenRouter" : configuration de l'API IA - Onglet "Paramètres" : configuration de l'intervalle de rafraîchissement RSS - Interface organisée avec 4 onglets 6. **Amélioration de l'interface** - Layout à 3 colonnes responsive (Notes | Éditeur | Tâches+RSS) - Badges pour indiquer le nombre de tâches, images et fichiers par note - Design moderne et cohérent - Animations et transitions fluides 7. **Mise à jour de l'identité** - Nom de l'application : "NoteFlow" - Nouveau titre de page - Favicon SVG configuré - Logo mis à jour dans l'interface Services ajoutés: - RssService.ts : gestion des flux RSS et articles - TodosService.ts : gestion des tâches globales - SettingsService.ts : gestion des paramètres de l'application Composants ajoutés: - RichTextEditor.tsx : éditeur de texte enrichi avec barre d'outils Modifications techniques: - Ajout de la propriété "files" au type Note - Résolution du conflit de nommage avec Settings - Mise à jour de package.json avec la nouvelle description - Mise à jour de index.html avec favicon et titre Cette version représente une évolution majeure de l'application avec une expérience utilisateur nettement améliorée et de nombreuses fonctionnalités demandées.
77 lines
1.9 KiB
TypeScript
77 lines
1.9 KiB
TypeScript
import axios from 'axios';
|
|
|
|
export interface Todo {
|
|
id?: number;
|
|
text: string;
|
|
completed: boolean;
|
|
priority?: 'low' | 'medium' | 'high';
|
|
due_date?: string;
|
|
created_at?: string;
|
|
}
|
|
|
|
class TodosService {
|
|
private baseURL = '/api/todos';
|
|
|
|
private getAuthHeader() {
|
|
const token = localStorage.getItem('token');
|
|
return {
|
|
headers: {
|
|
'Authorization': `Bearer ${token}`,
|
|
'Content-Type': 'application/json'
|
|
}
|
|
};
|
|
}
|
|
|
|
async getTodos(): Promise<Todo[]> {
|
|
try {
|
|
const response = await axios.get(this.baseURL, this.getAuthHeader());
|
|
return response.data;
|
|
} catch (error) {
|
|
console.error('Error fetching todos:', error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
async createTodo(text: string, priority?: 'low' | 'medium' | 'high'): Promise<Todo> {
|
|
try {
|
|
const response = await axios.post(this.baseURL, { text, priority, completed: false }, this.getAuthHeader());
|
|
return response.data;
|
|
} catch (error) {
|
|
console.error('Error creating todo:', error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
async updateTodo(todo: Todo): Promise<boolean> {
|
|
try {
|
|
await axios.put(`${this.baseURL}/${todo.id}`, todo, this.getAuthHeader());
|
|
return true;
|
|
} catch (error) {
|
|
console.error('Error updating todo:', error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
async deleteTodo(todoId: number): Promise<boolean> {
|
|
try {
|
|
await axios.delete(`${this.baseURL}/${todoId}`, this.getAuthHeader());
|
|
return true;
|
|
} catch (error) {
|
|
console.error('Error deleting todo:', error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
async toggleComplete(todoId: number): Promise<boolean> {
|
|
try {
|
|
await axios.patch(`${this.baseURL}/${todoId}/toggle`, {}, this.getAuthHeader());
|
|
return true;
|
|
} catch (error) {
|
|
console.error('Error toggling todo:', error);
|
|
throw error;
|
|
}
|
|
}
|
|
}
|
|
|
|
export default new TodosService();
|