public GroupingOrCipherDataTemplateSelector(VaultListCiphersPage page) { GroupingTemplate = new DataTemplate(() => new VaultGroupingViewCell()); CipherTemplate = new DataTemplate(() => new VaultListViewCell( (Cipher c) => Helpers.CipherMoreClickedAsync(page, c, !string.IsNullOrWhiteSpace(page._uri)), true)); }
private async void GroupingOrCipherSelected(object sender, SelectedItemChangedEventArgs e) { var groupingOrCipher = e.SelectedItem as GroupingOrCipher; if (groupingOrCipher == null) { return; } if (groupingOrCipher.Grouping != null) { Page page; if (groupingOrCipher.Grouping.Node.Folder) { page = new VaultListCiphersPage(folder: true, folderId: groupingOrCipher.Grouping.Node.Id, groupingName: groupingOrCipher.Grouping.Node.Name); } else { page = new VaultListCiphersPage(collectionId: groupingOrCipher.Grouping.Node.Id, groupingName: groupingOrCipher.Grouping.Node.Name); } await Navigation.PushAsync(page); } else if (groupingOrCipher.Cipher != null) { var page = new VaultViewCipherPage(groupingOrCipher.Cipher.Type, groupingOrCipher.Cipher.Id); await Navigation.PushForDeviceAsync(page); } ((ListView)sender).SelectedItem = null; }
private async void GroupingSelected(object sender, SelectedItemChangedEventArgs e) { var grouping = e.SelectedItem as Grouping; if (grouping == null) { return; } Page page; if (grouping.Folder) { page = new VaultListCiphersPage(folder: true, folderId: grouping.Id, groupingName: grouping.Name); } else { page = new VaultListCiphersPage(collectionId: grouping.Id, groupingName: grouping.Name); } await Navigation.PushAsync(page); ((ListView)sender).SelectedItem = null; }
private async void GroupingOrCipherSelected(object sender, SelectedItemChangedEventArgs e) { var groupingOrCipher = e.SelectedItem as GroupingOrCipher; if (groupingOrCipher == null) { return; } if (groupingOrCipher.Grouping != null) { Page page; if (groupingOrCipher.Grouping.Node.Folder) { page = new VaultListCiphersPage(folder: true, folderId: groupingOrCipher.Grouping.Node.Id, groupingName: groupingOrCipher.Grouping.Node.Name); } else { page = new VaultListCiphersPage(collectionId: groupingOrCipher.Grouping.Node.Id, groupingName: groupingOrCipher.Grouping.Node.Name); } await Navigation.PushAsync(page); } else if (groupingOrCipher.Cipher != null) { var cipher = groupingOrCipher.Cipher; string selection = null; if (!string.IsNullOrWhiteSpace(_uri)) { var options = new List <string> { AppResources.Autofill }; if (cipher.Type == Enums.CipherType.Login && _connectivity.IsConnected) { options.Add(AppResources.AutofillAndSave); } options.Add(AppResources.View); selection = await DisplayActionSheet(AppResources.AutofillOrView, AppResources.Cancel, null, options.ToArray()); } if (selection == AppResources.View || string.IsNullOrWhiteSpace(_uri)) { var page = new VaultViewCipherPage(cipher.Type, cipher.Id); await Navigation.PushForDeviceAsync(page); } else if (selection == AppResources.Autofill || selection == AppResources.AutofillAndSave) { if (selection == AppResources.AutofillAndSave) { if (!_connectivity.IsConnected) { Helpers.AlertNoConnection(this); } else { var uris = cipher.CipherModel.Login?.Uris?.ToList(); if (uris == null) { uris = new List <Models.LoginUri>(); } uris.Add(new Models.LoginUri { Uri = _uri.Encrypt(cipher.CipherModel.OrganizationId), Match = null }); cipher.CipherModel.Login.Uris = uris; await _deviceActionService.ShowLoadingAsync(AppResources.Saving); var saveTask = await _cipherService.SaveAsync(cipher.CipherModel); await _deviceActionService.HideLoadingAsync(); if (saveTask.Succeeded) { _googleAnalyticsService.TrackAppEvent("AddedLoginUriDuringAutofill"); } } } if (_deviceInfoService.Version < 21) { Helpers.CipherMoreClickedAsync(this, cipher, !string.IsNullOrWhiteSpace(_uri)); } else { _googleAnalyticsService.TrackExtensionEvent("AutoFilled", _uri.StartsWith("http") ? "Website" : "App"); _deviceActionService.Autofill(cipher); } } } ((ListView)sender).SelectedItem = null; }