You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
2.2 KiB

1 year ago
using CommunityToolkit.Mvvm.ComponentModel;
1 year ago
using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.Messaging;
1 year ago
using System;
using System.Collections.Generic;
1 year ago
using System.Collections.ObjectModel;
1 year ago
using System.Linq;
using System.Text;
using System.Threading.Tasks;
1 year ago
using UseRestService.Data;
1 year ago
namespace UseRestService.ViewModels
{
1 year ago
internal partial class PartsViewModel : ObservableObject
1 year ago
{
1 year ago
[ObservableProperty]
ObservableCollection<Part> _parts;
[ObservableProperty]
bool _isRefreshing = false;
[ObservableProperty]
bool _isBusy = false;
[ObservableProperty]
Part _selectedPart;
public PartsViewModel()
{
_parts = new ObservableCollection<Part>();
WeakReferenceMessenger.Default.Register<RefreshMessage>(this, async (r, m) =>
{
await LoadData();
});
Task.Run(LoadData);
}
[RelayCommand]
async Task PartSelected()
{
if (SelectedPart == null)
return;
var navigationParameter = new Dictionary<string, object>()
{
{ "part", SelectedPart }
};
await Shell.Current.GoToAsync("addpart", navigationParameter);
MainThread.BeginInvokeOnMainThread(() => SelectedPart = null);
}
[RelayCommand]
async Task LoadData()
{
if (IsBusy)
return;
try
{
IsRefreshing = true;
IsBusy = true;
var partsCollection = await PartsManager.GetAll();
MainThread.BeginInvokeOnMainThread(() =>
{
Parts.Clear();
foreach (Part part in partsCollection)
{
Parts.Add(part);
}
});
}
finally
{
IsRefreshing = false;
IsBusy = false;
}
}
[RelayCommand]
async Task AddNewPart()
{
await Shell.Current.GoToAsync("addpart");
}
1 year ago
}
}