@page "/" @attribute [Authorize] @using CommunityToolkit.Mvvm.Messaging @using salesbook.Shared.Core.Interface @using salesbook.Shared.Components.Layout.Spinner @using salesbook.Shared.Core.Interface.System.Network @using salesbook.Shared.Core.Interface.System.Notification @using salesbook.Shared.Core.Messages.Notification.Loaded @using salesbook.Shared.Core.Services @inject IFormFactor FormFactor @inject INetworkService NetworkService @inject IFirebaseNotificationService FirebaseNotificationService @inject IShinyNotificationManager NotificationManager @inject INotificationService NotificationService @inject PreloadService PreloadService @inject IMessenger Messenger @code { protected override async Task OnInitializedAsync() { NetworkService.ConnectionAvailable = NetworkService.IsNetworkAvailable(); await LoadNotification(); await CheckAndRequestPermissions(); try { await FirebaseNotificationService.InitFirebase(); } catch (Exception e) { Console.WriteLine($"Firebase init: {e.Message}"); } var lastSyncDate = LocalStorage.Get("last-sync"); if (!FormFactor.IsWeb() && NetworkService.ConnectionAvailable && lastSyncDate.Equals(DateTime.MinValue)) { NavigationManager.NavigateTo("/sync"); return; } _ = StartSyncUser(); NavigationManager.NavigateTo("/Calendar"); } private async Task LoadNotification() { await NotificationService.LoadNotification(); Messenger.Send(new NotificationsLoadedMessage()); } private async Task CheckAndRequestPermissions() { await NotificationManager.RequestAccess(); } private Task StartSyncUser() { return Task.Run(() => { _ = PreloadService.PreloadUsersAsync(); }); } }