mirror of
https://github.com/bitwarden/mobile
synced 2025-12-16 00:03:22 +00:00
* Refactored CustomFields to stop using RepeaterView and use BindableLayout and divided the different types on different files and added a factory to create them * Fix formatting
71 lines
2.5 KiB
C#
71 lines
2.5 KiB
C#
using System;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Input;
|
|
using Bit.App.Utilities;
|
|
using Bit.Core.Abstractions;
|
|
using Bit.Core.Models.View;
|
|
using Xamarin.CommunityToolkit.ObjectModel;
|
|
using Xamarin.Forms;
|
|
|
|
namespace Bit.App.Lists.ItemViewModels.CustomFields
|
|
{
|
|
public class HiddenCustomFieldItemViewModel : BaseCustomFieldItemViewModel
|
|
{
|
|
private readonly CipherView _cipher;
|
|
private readonly IPasswordPromptable _passwordPromptable;
|
|
private readonly IEventService _eventService;
|
|
private bool _showHiddenValue;
|
|
|
|
public HiddenCustomFieldItemViewModel(FieldView field,
|
|
bool isEditing,
|
|
ICommand fieldOptionsCommand,
|
|
CipherView cipher,
|
|
IPasswordPromptable passwordPromptable,
|
|
IEventService eventService,
|
|
ICommand copyFieldCommand)
|
|
: base(field, isEditing, fieldOptionsCommand)
|
|
{
|
|
_cipher = cipher;
|
|
_passwordPromptable = passwordPromptable;
|
|
_eventService = eventService;
|
|
|
|
CopyFieldCommand = new Command(() => copyFieldCommand?.Execute(Field));
|
|
ToggleHiddenValueCommand = new AsyncCommand(ToggleHiddenValueAsync, (Func<bool>)null, ex =>
|
|
{
|
|
#if !FDROID
|
|
Microsoft.AppCenter.Crashes.Crashes.TrackError(ex);
|
|
#endif
|
|
});
|
|
}
|
|
|
|
public ICommand CopyFieldCommand { get; }
|
|
|
|
public ICommand ToggleHiddenValueCommand { get; set; }
|
|
|
|
public bool ShowHiddenValue
|
|
{
|
|
get => _showHiddenValue;
|
|
set => SetProperty(ref _showHiddenValue, value);
|
|
}
|
|
|
|
public bool ShowViewHidden => _cipher.ViewPassword || (_isEditing && _field.NewField);
|
|
|
|
public override bool ShowCopyButton => !_isEditing && _cipher.ViewPassword && !string.IsNullOrWhiteSpace(Field.Value);
|
|
|
|
public async Task ToggleHiddenValueAsync()
|
|
{
|
|
if (!_isEditing && !await _passwordPromptable.PromptPasswordAsync())
|
|
{
|
|
return;
|
|
}
|
|
|
|
ShowHiddenValue = !ShowHiddenValue;
|
|
if (ShowHiddenValue && (!_isEditing || _cipher?.Id != null))
|
|
{
|
|
await _eventService.CollectAsync(
|
|
Core.Enums.EventType.Cipher_ClientToggledHiddenFieldVisible, _cipher.Id);
|
|
}
|
|
}
|
|
}
|
|
}
|