using Microsoft.Extensions.DependencyInjection; using Photino.Blazor; using VideoStudy.UI; using VideoStudy.Shared; namespace VideoStudy.Linux; class Program { [STAThread] static void Main(string[] args) { var ComponentsApp = typeof(VideoStudy.UI.App); var builder = PhotinoBlazorAppBuilder.CreateDefault(args); // Registro de serviços da UI Unificada builder.Services.AddVideoStudyUI(); // Configurar HttpClient para a API builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://localhost:5000"), Timeout = TimeSpan.FromMinutes(10) }); // Registrar um IPdfSaver dummy ou específico para Linux se necessário // No Linux, o Photino pode usar o explorador de arquivos nativo ou salvar direto na pasta Downloads builder.Services.AddSingleton(); builder.RootComponents.Add(ComponentsApp, "#app"); var app = builder.Build(); app.MainWindow .SetTitle("VideoStudy - Study Smarter with AI") .SetSize(1200, 800) .SetIconFile("wwwroot/favicon.ico") // Se houver .Center(); app.Run(); } } // Implementação básica de salvamento para Linux public class LinuxPdfSaver : IPdfSaver { public async Task SavePdfAsync(byte[] pdfData, string suggestedFileName) { // No Linux, por simplicidade inicial, vamos salvar na pasta Downloads do usuário var downloadsPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Downloads"); var filePath = Path.Combine(downloadsPath, suggestedFileName); await File.WriteAllBytesAsync(filePath, pdfData); // No Linux, podemos tentar abrir o arquivo usando 'xdg-open' try { System.Diagnostics.Process.Start("xdg-open", filePath); } catch { } return filePath; } }