Skip to content

Commit

Permalink
[SG-223] Mobile username generator (#2033)
Browse files Browse the repository at this point in the history
* SG-223 - Changed page title and password title

* SG-223 - Refactored generated field
* Changed position of generated field
* Replaced buttons generate and copy for icons

* SG-223 - Refactor type to passwordType

* SG-223 - Added password or username selector
* Added string for label type selection

* SG-223 - Added logic for different types of username
* Added strings of new types

* [SG-223] - Added UI components for different username types
* Added static strings for new labels
* Added viewmodel properties to support username generation and their respective options

* [SG-223] Added control over type picker visibility

* [SG-223] Refactored username entry on add edit page and added generate icon
* Added GenerateUsername command

* [SG-223] - Implemented service for username generation

* [SG-223] - Added support for username generation for item creation flow
* Implemented cache for username options
* Added exception handling for api calls

* [SG-223] - Remove unused code

* [SG-223] - Added a new display field for username generated and respective command
* Added description label for each type of username
* Changed defautl value of username from string.Empty to -

* [SG-223] - Removed some StackLayouts and refactored some controls

* [SG-223] - Refactored properties name

* [SG-223] - Added visibility toggle icon for api keys of forwarded email username types

* [SG-223] - Refactored nested StackLayouts into grids.

* [SG-223] - Refactor and pr fixing

* [SG-223] - Removed string keys from Resolve
- Added static string to resources

* [SG-223] - Refactored Copy_Clicked as AsyncCommand
- Improved exception handling
- Refactored TypeSelected as GeneratorTypeSelected

* [SG-223] - Renamed PasswordFormatter

* [SG-223] - Refactored VM properties to use UsernameGenerationOptions
* Removed LoadUsernameOptions

* [SG-223] - Refactored added pickers to use SelectedItem instead SelectedIndex
* Deleted PickerIndexToBoolConverter as it isn't needed anymore

* [SG-223] -  Refactored and simplified Grid row and column definitions

* [SG-223] - Refactored Command into async command
* Added exception handling and feedback to the user

* [SG-223] - Refactored GeneratorType picker to use Enum GeneratorType instead of string

* [SG-223] - Changed some resource keys

* [SG-223] - Refactor method name

* [SG-223] - Refactored code and added logs for switch default cases

* [SG-223] - Added flag to control visibility when in edit mode

* [SG-223] - Added suffix Parenthesis to keys to prevent future conflicts

* [SG-223] - Refactored multiple methods into one, GetUsernameFromAsync
* Removed unused Extensions from enums

* [SG-223] - Added exception message

* [SG-223] - Added localizable enum values through LocalizableEnumConverter

* [SG-223] - Fixed space between controls

* [SG-223] - Removed unused code and refactored some variables and methods names

* [SG-223] - Removed unused code and refactored constant name to be more elucidative

* [SG-223] - Removed unused variable
  • Loading branch information
LRNcardozoWDF committed Aug 26, 2022
1 parent 673ba9f commit b1fb867
Show file tree
Hide file tree
Showing 25 changed files with 1,469 additions and 98 deletions.
335 changes: 291 additions & 44 deletions src/App/Pages/Generator/GeneratorPage.xaml

Large diffs are not rendered by default.

43 changes: 26 additions & 17 deletions src/App/Pages/Generator/GeneratorPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public partial class GeneratorPage : BaseContentPage, IThemeDirtablePage
private readonly Action<string> _selectAction;
private readonly TabsPage _tabsPage;

public GeneratorPage(bool fromTabPage, Action<string> selectAction = null, TabsPage tabsPage = null)
public GeneratorPage(bool fromTabPage, Action<string> selectAction = null, TabsPage tabsPage = null, bool isUsernameGenerator = false, string emailWebsite = null, bool editMode = false)
{
_tabsPage = tabsPage;
InitializeComponent();
Expand All @@ -27,6 +27,10 @@ public GeneratorPage(bool fromTabPage, Action<string> selectAction = null, TabsP
_vm.Page = this;
_fromTabPage = fromTabPage;
_selectAction = selectAction;
_vm.ShowTypePicker = fromTabPage;
_vm.IsUsername = isUsernameGenerator;
_vm.EmailWebsite = emailWebsite;
_vm.EditMode = editMode;
var isIos = Device.RuntimePlatform == Device.iOS;
if (selectAction != null)
{
Expand All @@ -47,10 +51,12 @@ public GeneratorPage(bool fromTabPage, Action<string> selectAction = null, TabsP
ToolbarItems.Add(_historyItem);
}
}
if (isIos)
{
_typePicker.On<Xamarin.Forms.PlatformConfiguration.iOS>().SetUpdateMode(UpdateMode.WhenFinished);
}
_typePicker.On<Xamarin.Forms.PlatformConfiguration.iOS>().SetUpdateMode(UpdateMode.WhenFinished);
_passwordTypePicker.On<Xamarin.Forms.PlatformConfiguration.iOS>().SetUpdateMode(UpdateMode.WhenFinished);
_usernameTypePicker.On<Xamarin.Forms.PlatformConfiguration.iOS>().SetUpdateMode(UpdateMode.WhenFinished);
_serviceTypePicker.On<Xamarin.Forms.PlatformConfiguration.iOS>().SetUpdateMode(UpdateMode.WhenFinished);
_plusAddressedEmailTypePicker.On<Xamarin.Forms.PlatformConfiguration.iOS>().SetUpdateMode(UpdateMode.WhenFinished);
_catchallEmailTypePicker.On<Xamarin.Forms.PlatformConfiguration.iOS>().SetUpdateMode(UpdateMode.WhenFinished);
}

public async Task InitAsync()
Expand Down Expand Up @@ -97,16 +103,6 @@ protected override bool OnBackButtonPressed()
return base.OnBackButtonPressed();
}

private async void Regenerate_Clicked(object sender, EventArgs e)
{
await _vm.RegenerateAsync();
}

private async void Copy_Clicked(object sender, EventArgs e)
{
await _vm.CopyAsync();
}

private async void More_Clicked(object sender, EventArgs e)
{
if (!DoOnce())
Expand All @@ -124,7 +120,7 @@ private async void More_Clicked(object sender, EventArgs e)

private void Select_Clicked(object sender, EventArgs e)
{
_selectAction?.Invoke(_vm.Password);
_selectAction?.Invoke(_vm.IsUsername ? _vm.Username : _vm.Password);
}

private async void History_Clicked(object sender, EventArgs e)
Expand All @@ -150,7 +146,20 @@ public override async Task UpdateOnThemeChanged()
{
await base.UpdateOnThemeChanged();

await Device.InvokeOnMainThreadAsync(() => _vm?.RedrawPassword());
await Device.InvokeOnMainThreadAsync(() =>
{
if (_vm != null)
{
if (_vm.IsUsername)
{
_vm.RedrawUsername();
}
else
{
_vm.RedrawPassword();
}
}
});
}
}
}
Loading

0 comments on commit b1fb867

Please sign in to comment.