mirror of
https://github.com/R0m1k3/noteflow.git
synced 2026-10-19 05:09:54 +02:00
Fix critique: Système de notes complètement refondu pour fonctionner
Problème majeur résolu: - L'éditeur de notes réinitialisait le contenu à chaque modification - Causé par dangerouslySetInnerHTML qui forçait React à synchroniser - Résultat: impossible d'éditer les notes correctement Solution: - Suppression de dangerouslySetInnerHTML du RichTextEditor - Conservation du useEffect avec deps vides pour initialisation unique - Utilisation du key prop pour forcer remount lors du changement de note - Éditeur maintenant complètement "uncontrolled" Migration complète Google Calendar vers OAuth 2.0: - Remplacement de l'API Key simple par OAuth 2.0 (Client ID + Secret) - Nouvelle table google_oauth_tokens pour stocker les tokens - Routes OAuth: * GET /api/calendar/auth-url - Génère l'URL d'authentification * GET /api/calendar/oauth-callback - Callback OAuth avec échange de code * GET /api/calendar/auth-status - Vérifier le statut de connexion * POST /api/calendar/disconnect - Déconnecter Google - Gestion automatique du rafraîchissement des tokens expirés - Interface utilisateur mise à jour: * Champs Client ID et Client Secret * Indicateur de statut de connexion (connecté/non connecté) * Bouton "Se connecter avec Google" ouvrant popup OAuth * Bouton "Déconnecter" * URI de redirection affichée pour configuration Google Cloud Console - Synchronisation maintenant avec calendrier principal de l'utilisateur - Accès complet aux données privées du calendrier Architecture: - CalendarService.ts: Nouvelles méthodes getAuthUrl(), getAuthStatus(), disconnect() - Settings: Ajout de google_client_id et google_client_secret - Popup OAuth avec communication window.postMessage - Gestion d'erreur avec re-authentification automatique si token expiré
This commit is contained in:
6 files changed
+444
-56
No files matched your search
@@ -179,6 +179,23 @@ function initDatabase() {
|
||||
)
|
||||
`);
|
||||
|
||||
// Table google_oauth_tokens (tokens OAuth pour Google Calendar)
|
||||
db.run(`
|
||||
CREATE TABLE IF NOT EXISTS google_oauth_tokens (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL,
|
||||
access_token TEXT NOT NULL,
|
||||
refresh_token TEXT,
|
||||
token_type TEXT DEFAULT 'Bearer',
|
||||
expiry_date INTEGER,
|
||||
scope TEXT,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
||||
UNIQUE(user_id)
|
||||
)
|
||||
`);
|
||||
|
||||
// Créer les index pour la performance
|
||||
db.run('CREATE INDEX IF NOT EXISTS idx_notes_user ON notes(user_id)');
|
||||
db.run('CREATE INDEX IF NOT EXISTS idx_note_todos ON note_todos(note_id)');
|
||||
|
||||
Reference in new issue
Block a user