Exemple #1
0
 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;
        }
Exemple #3
0
        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;
        }
Exemple #4
0
        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;
        }