using System.Collections.Generic; using System.Threading.Tasks; using Bit.App.Resources; using Bit.Core.Abstractions; using Bit.Core.Models.Domain; using Bit.Core.Utilities; using Xamarin.Forms; namespace Bit.App.Pages { public class GeneratorHistoryPageViewModel : BaseViewModel { private readonly IPlatformUtilsService _platformUtilsService; private readonly IPasswordGenerationService _passwordGenerationService; private readonly IClipboardService _clipboardService; private readonly ILogger _logger; private bool _showNoData; public GeneratorHistoryPageViewModel() { _platformUtilsService = ServiceContainer.Resolve("platformUtilsService"); _passwordGenerationService = ServiceContainer.Resolve("passwordGenerationService"); _clipboardService = ServiceContainer.Resolve("clipboardService"); _logger = ServiceContainer.Resolve("logger"); PageTitle = AppResources.PasswordHistory; History = new ExtendedObservableCollection(); CopyCommand = new Command(CopyAsync); } public Command CopyCommand { get; set; } public ExtendedObservableCollection History { get; set; } public bool ShowNoData { get => _showNoData; set => SetProperty(ref _showNoData, value); } public async Task InitAsync() { var history = await _passwordGenerationService.GetHistoryAsync(); Device.BeginInvokeOnMainThread(() => { History.ResetWithRange(history ?? new List()); ShowNoData = History.Count == 0; }); } public async Task ClearAsync() { History.ResetWithRange(new List()); ShowNoData = true; await _passwordGenerationService.ClearAsync(); } private async void CopyAsync(GeneratedPasswordHistory ph) { await _clipboardService.CopyTextAsync(ph.Password); _platformUtilsService.ShowToast("info", null, string.Format(AppResources.ValueHasBeenCopied, AppResources.Password)); } public async Task UpdateOnThemeChanged() { try { await Device.InvokeOnMainThreadAsync(() => History.ResetWithRange(new List())); await InitAsync(); } catch (System.Exception ex) { _logger.Exception(ex); } } } }