@page "/" @using hassio_onedrive_backup.Contracts; @using hassio_onedrive_backup.Graph; @using hassio_onedrive_backup; @using onedrive_backup.Extensions; @using onedrive_backup.Hass; @using onedrive_backup.Models; @using static hassio_onedrive_backup.Contracts.HassBackupsResponse; @inject IGraphHelper GraphHelper @inject Orchestrator Orchestrator @inject HassContext HassContext;
@foreach (var backup in Backups) {
}
@code { private List Backups => GetBackupModels(); protected override void OnInitialized() { base.OnInitialized(); GraphHelper.AuthStatusChangedEventHandler += OnStateChanged; Orchestrator.BackupManager.OneDriveBackupsUpdated += OnStateChanged; Orchestrator.BackupManager.LocalBackupsUpdated += OnStateChanged; } private List GetBackupModels() { var ret = new List(); var _localBackups = Orchestrator.BackupManager.LocalBackups?.Select(backup => backup.ToBackupModel(HassContext)) ?? Enumerable.Empty(); var _onedriveBackups = Orchestrator.BackupManager.OnlineBackups?.Select(backup => backup.ToBackupModel(HassContext)) ?? Enumerable.Empty(); ret.AddRange(_onedriveBackups); foreach (var localBackup in _localBackups) { if (_onedriveBackups.Any(oneDriveBackup => oneDriveBackup.Slug == localBackup.Slug)) { var syncedBackup = ret.Find(backup => backup.Slug == localBackup.Slug); syncedBackup.Location = BackupModel.BackupLocation.Both; continue; } ret.Add(localBackup); } ret = ret.OrderByDescending(backup => backup.Date).ToList(); return ret; } private async void OnStateChanged() { await InvokeAsync(() => { StateHasChanged(); }); } }