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

47 lines
1.5 KiB
C#
Raw Permalink 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;
2025-02-16 11:54:23 +01:00
namespace Wino.Mail.ViewModels;
public partial class LanguageTimePageViewModel(IPreferencesService preferencesService, ITranslationService translationService) : MailBaseViewModel
2024-04-27 13:50:18 +02:00
{
2025-02-16 11:54:23 +01:00
public IPreferencesService PreferencesService { get; } = preferencesService;
private readonly ITranslationService _translationService = translationService;
2024-04-27 13:50:18 +02:00
2025-02-16 11:54:23 +01:00
[ObservableProperty]
private List<AppLanguageModel> _availableLanguages;
2024-04-27 13:50:18 +02:00
2025-02-16 11:54:23 +01:00
[ObservableProperty]
private AppLanguageModel _selectedLanguage;
2024-04-27 13:50:18 +02:00
2025-02-16 11:54:23 +01:00
private bool isInitialized = false;
2024-04-27 13:50:18 +02:00
2025-02-16 11:54:23 +01:00
public override void OnNavigatedTo(NavigationMode mode, object parameters)
{
base.OnNavigatedTo(mode, parameters);
2024-04-27 13:50:18 +02:00
2025-02-16 11:54:23 +01:00
AvailableLanguages = _translationService.GetAvailableLanguages();
2024-04-27 13:50:18 +02:00
2025-02-16 11:54:23 +01:00
SelectedLanguage = AvailableLanguages.FirstOrDefault(a => a.Language == PreferencesService.CurrentLanguage);
2024-04-27 13:50:18 +02:00
2025-02-16 11:54:23 +01:00
isInitialized = true;
}
2024-04-27 13:50:18 +02:00
2025-02-16 11:54:23 +01:00
protected override async void OnPropertyChanged(PropertyChangedEventArgs e)
{
base.OnPropertyChanged(e);
2024-04-27 13:50:18 +02:00
2025-02-16 11:54:23 +01:00
if (!isInitialized) return;
2024-04-27 13:50:18 +02:00
2025-02-16 11:54:23 +01:00
if (e.PropertyName == nameof(SelectedLanguage))
{
await _translationService.InitializeLanguageAsync(SelectedLanguage.Language);
2024-04-27 13:50:18 +02:00
}
}
}