@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();
});
}
}