Files
Wino-Mail/Wino.Mail.ViewModels/LanguageTimePageViewModel.cs

48 lines
1.6 KiB
C#
Raw Normal View History

2024-04-27 13:50:18 +02:00
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using CommunityToolkit.Mvvm.ComponentModel;
using Wino.Core.Domain.Interfaces;
using Wino.Core.Domain.Models.Navigation;
using Wino.Core.Domain.Models.Translations;
namespace Wino.Mail.ViewModels
2024-04-27 13:50:18 +02:00
{
public partial class LanguageTimePageViewModel(IPreferencesService preferencesService, ITranslationService translationService) : MailBaseViewModel
{
public IPreferencesService PreferencesService { get; } = preferencesService;
private readonly ITranslationService _translationService = translationService;
2024-04-27 13:50:18 +02:00
[ObservableProperty]
private List<AppLanguageModel> _availableLanguages;
2024-04-27 13:50:18 +02:00
[ObservableProperty]
private AppLanguageModel _selectedLanguage;
2024-04-27 13:50:18 +02:00
private bool isInitialized = false;
2024-04-27 13:50:18 +02:00
public override void OnNavigatedTo(NavigationMode mode, object parameters)
{
base.OnNavigatedTo(mode, parameters);
2024-04-27 13:50:18 +02:00
AvailableLanguages = _translationService.GetAvailableLanguages();
2024-04-27 13:50:18 +02:00
SelectedLanguage = AvailableLanguages.FirstOrDefault(a => a.Language == PreferencesService.CurrentLanguage);
2024-04-27 13:50:18 +02:00
isInitialized = true;
}
2024-04-27 13:50:18 +02:00
protected override async void OnPropertyChanged(PropertyChangedEventArgs e)
{
base.OnPropertyChanged(e);
2024-04-27 13:50:18 +02:00
if (!isInitialized) return;
2024-04-27 13:50:18 +02:00
if (e.PropertyName == nameof(SelectedLanguage))
{
await _translationService.InitializeLanguageAsync(SelectedLanguage.Language);
}
2024-04-27 13:50:18 +02:00
}
}
}