# app/routes/main.py
from flask import Blueprint, render_template, redirect, url_for, request, jsonify
from app.utils.helpers import load_configs, load_default_sounds
from app.state import current_config, reset_state

from config import Config

main_bp = Blueprint('main', __name__)

@main_bp.route('/')
def index():
    configs = load_configs()
    return render_template('index.html', configs=configs)

"""
@app.route('/')
def index():
    return render_template('index.html', configs=load_configs())
"""

@main_bp.route('/configs/<path:filename>')

def serve_config_file(filename):
    return send_from_directory(app.config['CONFIG_DIR'], filename)


@main_bp.route('/load_config/<filename>')
def load_config(filename):
    global current_config
    path = os.path.join(app.config['CONFIG_DIR'], filename)
    
    if not os.path.exists(path):
        logger.error(f"Config nicht gefunden: {path}")
        return "Konfiguration nicht gefunden", 404
    
    try:
        with open(path, 'r', encoding='utf-8') as f:
            current_config = json.load(f)
        current_config['filename'] = filename
        logger.info(f"Config erfolgreich geladen: {filename} mit {len(current_config.get('channels', []))} Kanälen")
        return redirect(url_for('main.control_page'))
    except json.JSONDecodeError as e:
        logger.error(f"Ungültiges JSON in {filename}: {e}")
        return "Ungültiges JSON-Format in der Konfigurationsdatei", 500
    except Exception as e:
        logger.error(f"Ladefehler {filename}: {e}")
        return "Fehler beim Laden der Konfiguration", 500


@main_bp.route('/control')
def control_page():
    if current_config is None:
        logger.warning("current_config ist None → Redirect zu index")
        return redirect(url_for('main.index'))
    
    # Globale Sounds immer laden
    global_sounds = load_default_sounds()
    
    logger.info(f"Übergebe config an Template: {current_config}")
    print("DEBUG: config hat channels?", 'channels' in current_config, len(current_config.get('channels', [])))
    
    return render_template(
        'control.html',
        config=current_config,
        global_sounds=global_sounds
    )


@main_bp.route('/soundboard')
def soundboard():
    if current_config is None or 'sounds' not in current_config:
        return redirect(url_for('main.index'))
    
    sounds = current_config.get('sounds', [])
    return render_template('soundboard.html', sounds=sounds, config=current_config)
    pass