import SwiftUI

/// Punto de entrada principal de la aplicación MangaReader.
///
/// `MangaReaderApp` es el struct raíz que conforma al protocolo `App`,
/// responsable de inicializar la aplicación y configurar su ciclo de vida.
///
/// # Funciones
/// - Inicializa el servicio de almacenamiento compartido
/// - Configura la ventana principal con `ContentView`
/// - Imprime información de debug al iniciar
///
/// # Example
/// El app se inicializa automáticamente cuando el usuario la abre.
/// No es necesario crear instancias manualmente.
@main
struct MangaReaderApp: App {
    // MARK: - Properties

    /// Instancia compartida del servicio de almacenamiento
    @StateObject private var storage = StorageService.shared

    // MARK: - App Lifecycle

    /// Configura la escena principal de la aplicación.
    ///
    /// Crea un `WindowGroup` que contiene la `ContentView` principal
    /// y ejecuta la configuración inicial cuando aparece.
    ///
    /// - Returns: La escena configurada de la app
    var body: some Scene {
        WindowGroup {
            ContentView()
                .onAppear {
                    setupApp()
                }
        }
    }

    // MARK: - Setup

    /// Realiza la configuración inicial de la aplicación.
    ///
    /// Esta función se ejecuta cuando la vista principal aparece por primera vez.
    /// Imprime información de debug útil para desarrollo:
    /// - Confirmación de inicio
    /// - Ubicación del almacenamiento local
    /// - Tamaño total usado por descargas
    private func setupApp() {
        // Configurar app
        print("MangaReader iniciado")
        print("Storage location: \(StorageService.shared.documentsDirectory.path)")

        // Log storage info
        let storageSize = StorageService.shared.getStorageSize()
        print("Total storage used: \(StorageService.shared.formatFileSize(storageSize))")
    }
}
