mirror of
https://github.com/bitwarden/mobile.git
synced 2024-11-22 11:35:21 +01:00
lazy decrypt password and username for vault listing. dynamically show copy and url launch options if provided.
This commit is contained in:
parent
29c7a0ccf0
commit
31ad96ff31
@ -16,16 +16,16 @@ namespace Bit.App.Models.Page
|
|||||||
FolderId = folderId;
|
FolderId = folderId;
|
||||||
Name = site.Name?.Decrypt();
|
Name = site.Name?.Decrypt();
|
||||||
Username = site.Username?.Decrypt() ?? " ";
|
Username = site.Username?.Decrypt() ?? " ";
|
||||||
Password = site.Password?.Decrypt();
|
Password = new Lazy<string>(() => site.Password?.Decrypt());
|
||||||
Uri = site.Uri?.Decrypt();
|
Uri = new Lazy<string>(() => site.Uri?.Decrypt());
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Id { get; set; }
|
public string Id { get; set; }
|
||||||
public string FolderId { get; set; }
|
public string FolderId { get; set; }
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public string Username { get; set; }
|
public string Username { get; set; }
|
||||||
public string Password { get; set; }
|
public Lazy<string> Password { get; set; }
|
||||||
public string Uri { get; set; }
|
public Lazy<string> Uri { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Folder : List<Site>
|
public class Folder : List<Site>
|
||||||
|
@ -61,9 +61,11 @@ namespace Bit.App.Models.Page
|
|||||||
PropertyChanged(this, new PropertyChangedEventArgs(nameof(Uri)));
|
PropertyChanged(this, new PropertyChangedEventArgs(nameof(Uri)));
|
||||||
PropertyChanged(this, new PropertyChangedEventArgs(nameof(UriHost)));
|
PropertyChanged(this, new PropertyChangedEventArgs(nameof(UriHost)));
|
||||||
PropertyChanged(this, new PropertyChangedEventArgs(nameof(ShowUri)));
|
PropertyChanged(this, new PropertyChangedEventArgs(nameof(ShowUri)));
|
||||||
|
PropertyChanged(this, new PropertyChangedEventArgs(nameof(ShowLaunch)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public bool ShowUri => !string.IsNullOrWhiteSpace(Uri);
|
public bool ShowUri => !string.IsNullOrWhiteSpace(Uri);
|
||||||
|
public bool ShowLaunch => Uri.StartsWith("http://") || Uri.StartsWith("https://");
|
||||||
|
|
||||||
public string UriHost
|
public string UriHost
|
||||||
{
|
{
|
||||||
|
@ -13,6 +13,7 @@ using Bit.App.Utilities;
|
|||||||
using PushNotification.Plugin.Abstractions;
|
using PushNotification.Plugin.Abstractions;
|
||||||
using Plugin.Settings.Abstractions;
|
using Plugin.Settings.Abstractions;
|
||||||
using Plugin.Connectivity.Abstractions;
|
using Plugin.Connectivity.Abstractions;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Bit.App.Pages
|
namespace Bit.App.Pages
|
||||||
{
|
{
|
||||||
@ -121,8 +122,21 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
private async void MoreClickedAsync(VaultListPageModel.Site site)
|
private async void MoreClickedAsync(VaultListPageModel.Site site)
|
||||||
{
|
{
|
||||||
var selection = await DisplayActionSheet(site.Name, AppResources.Cancel, null,
|
var buttons = new List<string> { AppResources.View, AppResources.Edit };
|
||||||
AppResources.View, AppResources.Edit, AppResources.CopyPassword, AppResources.CopyUsername, AppResources.GoToWebsite);
|
if(!string.IsNullOrWhiteSpace(site.Password.Value))
|
||||||
|
{
|
||||||
|
buttons.Add(AppResources.CopyPassword);
|
||||||
|
}
|
||||||
|
if(!string.IsNullOrWhiteSpace(site.Username))
|
||||||
|
{
|
||||||
|
buttons.Add(AppResources.CopyUsername);
|
||||||
|
}
|
||||||
|
if(!string.IsNullOrWhiteSpace(site.Uri.Value) && (site.Uri.Value.StartsWith("http://") || site.Uri.Value.StartsWith("https://")))
|
||||||
|
{
|
||||||
|
buttons.Add(AppResources.GoToWebsite);
|
||||||
|
}
|
||||||
|
|
||||||
|
var selection = await DisplayActionSheet(site.Name, AppResources.Cancel, null, buttons.ToArray());
|
||||||
|
|
||||||
if(selection == AppResources.View)
|
if(selection == AppResources.View)
|
||||||
{
|
{
|
||||||
@ -136,7 +150,7 @@ namespace Bit.App.Pages
|
|||||||
}
|
}
|
||||||
else if(selection == AppResources.CopyPassword)
|
else if(selection == AppResources.CopyPassword)
|
||||||
{
|
{
|
||||||
Copy(site.Password, AppResources.Password);
|
Copy(site.Password.Value, AppResources.Password);
|
||||||
}
|
}
|
||||||
else if(selection == AppResources.CopyUsername)
|
else if(selection == AppResources.CopyUsername)
|
||||||
{
|
{
|
||||||
@ -144,7 +158,7 @@ namespace Bit.App.Pages
|
|||||||
}
|
}
|
||||||
else if(selection == AppResources.GoToWebsite)
|
else if(selection == AppResources.GoToWebsite)
|
||||||
{
|
{
|
||||||
Device.OpenUri(new Uri(site.Uri));
|
Device.OpenUri(new Uri(site.Uri.Value));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,6 +67,7 @@ namespace Bit.App.Pages
|
|||||||
// URI
|
// URI
|
||||||
UriCell = new LabeledValueCell(AppResources.Website, button1Text: AppResources.Launch);
|
UriCell = new LabeledValueCell(AppResources.Website, button1Text: AppResources.Launch);
|
||||||
UriCell.Value.SetBinding<VaultViewSitePageModel>(Label.TextProperty, s => s.UriHost);
|
UriCell.Value.SetBinding<VaultViewSitePageModel>(Label.TextProperty, s => s.UriHost);
|
||||||
|
UriCell.Button1.SetBinding<VaultViewSitePageModel>(IsVisibleProperty, s => s.ShowLaunch);
|
||||||
UriCell.Button1.Command = new Command(() => Device.OpenUri(new Uri(Model.Uri)));
|
UriCell.Button1.Command = new Command(() => Device.OpenUri(new Uri(Model.Uri)));
|
||||||
|
|
||||||
// Notes
|
// Notes
|
||||||
|
Loading…
Reference in New Issue
Block a user