"""
Configuration pour le client desktop MyMind
"""
import os
import json
from pathlib import Path

class Config:
    """Gestion de la configuration du client"""
    
    def __init__(self):
        # Dossier de configuration dans le répertoire utilisateur
        self.config_dir = Path.home() / '.mymind'
        self.config_dir.mkdir(exist_ok=True)
        self.config_file = self.config_dir / 'config.json'
        
        # Configuration par défaut
        self.default_config = {
            'api_url': 'http://mymind.myndkor.fr:5005/api',
            'api_urls': [
                'http://mymind.myndkor.fr:5005/api'',
                'http://localhost:5005/api'
            ],
            'client_id': None,
            'group_id': None,
            'enabled': True,
            'trigger_keys': ['space', 'enter', 'tab'],
            'auto_replace_delay': 300,  # ms
            'reload_interval': 30,  # secondes,
            'minimize_to_tray': True,
            'check_updates': True,
            'update_check_interval': 300,  # secondes (5 minutes par défaut)
            'force_update_on_mandatory': True,  # Forcer la mise à jour si mandatory=true
            # Identifiants d'authentification (optionnels) pour le backend MyMind
            'auth_email': '',
            'auth_password': ''
        }
        
        self.config = self.load_config()
    
    def load_config(self):
        """Charge la configuration depuis le fichier"""
        if self.config_file.exists():
            try:
                with open(self.config_file, 'r', encoding='utf-8') as f:
                    config = json.load(f)
                    # Fusionner avec les valeurs par défaut pour les nouvelles clés
                    merged = self.default_config.copy()
                    merged.update(config)
                    # Migration : remplacer l'ancien serveur dev-iadesk par le nouveau
                    new_base = 'http://mymind.myndkor.fr:5005'
                    changed = False
                    if 'dev-iadesk' in (merged.get('api_url') or ''):
                        merged['api_url'] = (merged.get('api_url') or '').replace('http://mymind.myndkor.fr:5005', new_base)
                        changed = True
                    urls = merged.get('api_urls') or []
                    if any('dev-iadesk' in (u or '') for u in urls):
                        merged['api_urls'] = [(u or '').replace('http://mymind.myndkor.fr:5005', new_base) for u in urls]
                        changed = True
                    if changed:
                        self.config = merged
                        self.save_config()
                    return merged
            except Exception as e:
                print(f"Erreur lors du chargement de la config: {e}")
                return self.default_config.copy()
        return self.default_config.copy()
    
    def save_config(self):
        """Sauvegarde la configuration dans le fichier"""
        try:
            with open(self.config_file, 'w', encoding='utf-8') as f:
                json.dump(self.config, f, indent=2, ensure_ascii=False)
            return True
        except Exception as e:
            print(f"Erreur lors de la sauvegarde de la config: {e}")
            return False
    
    def get(self, key, default=None):
        """Récupère une valeur de configuration"""
        return self.config.get(key, default)
    
    def set(self, key, value):
        """Définit une valeur de configuration"""
        self.config[key] = value
        self.save_config()
    
    def get_api_url(self):
        """Récupère l'URL de l'API (première de la liste)"""
        return self.config.get('api_url', self.default_config['api_url'])
    
    def get_api_urls(self):
        """Récupère toutes les URLs API possibles"""
        return self.config.get('api_urls', self.default_config['api_urls'])

