@using Microsoft.Extensions.Configuration @using Bimix.UI.Shared.Services @inject IJSRuntime JS @inject IConfiguration Configuration @inject AuthService AuthService @inject NavigationManager NavigationManager Witaj w Bimix Zaloguj się używając konta Google @if (_isLoading) { } else { Zaloguj z Google } @if (!string.IsNullOrEmpty(_errorMessage)) { @_errorMessage } @code { private bool _isLoading = false; private string _errorMessage = string.Empty; private static LoginCard? _instance; protected override void OnInitialized() { _instance = this; } private async Task HandleGoogleSignIn() { try { _isLoading = true; _errorMessage = string.Empty; StateHasChanged(); var clientId = Configuration["GoogleAuth:ClientId"]; if (string.IsNullOrEmpty(clientId)) { throw new Exception("Google ClientId is not configured."); } await JS.InvokeVoidAsync("initGoogleSignIn", clientId); } catch (Exception ex) { _errorMessage = "Błąd podczas logownia. Spróbuj ponownie"; _isLoading = false; StateHasChanged(); } } [JSInvokable] public static async Task OnGoogleSignInSuccess(string idToken) { Console.WriteLine($"Google ID Token: {idToken}"); if (_instance != null) { await _instance.AuthService.SetAuthenticationAsync(idToken); _instance._isLoading = false; _instance._errorMessage = string.Empty; _instance.NavigationManager.NavigateTo("/dashboard", replace:true); await _instance.InvokeAsync(() => _instance.StateHasChanged()); } } [JSInvokable] public static async Task OnGoggleSignInError(string error) { Console.WriteLine($"Google SignIn Error: {error}"); if (_instance != null) { _instance._isLoading = false; _instance._errorMessage = "Błąd logowanie Google. Spróbuj ponownie"; await _instance.InvokeAsync(() => _instance.StateHasChanged()); } } }