using Microsoft.AspNetCore.Components.Web; using Microsoft.AspNetCore.Components.WebAssembly.Hosting; using MudBlazor.Services; using WebClientTpos.Client; using WebClientTpos.Client.Localization; using Microsoft.Extensions.Localization; using System.Globalization; using Microsoft.JSInterop; var builder = WebAssemblyHostBuilder.CreateDefault(args); builder.RootComponents.Add("#app"); builder.RootComponents.Add("head::after"); // EN: Add HttpClient for API calls // VI: Thêm HttpClient cho các cuộc gọi API builder.Services.AddSingleton(sp => new HttpClient { BaseAddress = new Uri(new Uri(builder.HostEnvironment.BaseAddress).GetLeftPart(UriPartial.Authority)) }); // EN: Add POS data service for BFF API calls // VI: Thêm POS data service cho BFF API calls builder.Services.AddScoped(); // EN: Add auth state service for role-based redirects // VI: Thêm auth state service cho điều hướng theo vai trò builder.Services.AddSingleton(); // EN: Add MudBlazor services // VI: Thêm các services của MudBlazor builder.Services.AddMudServices(); // Localization builder.Services.AddLocalization(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); // Build the host var host = builder.Build(); // Initialize Localization Cache var cache = host.Services.GetRequiredService(); // Default culture is Vietnamese var culture = new CultureInfo("vi-VN"); // Try reading saved culture preference from localStorage try { var jsRuntime = host.Services.GetRequiredService(); var savedCulture = await jsRuntime.InvokeAsync("localStorage.getItem", "aPOS_culture"); if (!string.IsNullOrEmpty(savedCulture)) { try { culture = new CultureInfo(savedCulture); } catch { } } } catch { /* JS not available yet during startup, use default */ } CultureInfo.DefaultThreadCurrentCulture = culture; CultureInfo.DefaultThreadCurrentUICulture = culture; await cache.LoadAsync(culture); await host.RunAsync();