From 65739489a79e3bb7933c951a26a1f65c8fd04222 Mon Sep 17 00:00:00 2001 From: Matt Portune Date: Mon, 17 Jan 2022 21:58:04 -0500 Subject: [PATCH] wip --- src/App/App.xaml.cs | 30 +- .../AccountViewCell/AccountViewCell.xaml | 4 +- .../AccountViewCellViewModel.cs | 14 +- src/App/Controls/AvatarImageSource.cs | 3 +- src/App/Models/AppOptions.cs | 2 - src/App/Pages/Accounts/HomePage.xaml | 2 +- src/App/Pages/Accounts/HomePage.xaml.cs | 23 +- src/App/Pages/Accounts/HomePageViewModel.cs | 4 +- src/App/Pages/Accounts/LockPage.xaml | 2 +- src/App/Pages/Accounts/LockPage.xaml.cs | 8 +- src/App/Pages/Accounts/LockPageViewModel.cs | 4 +- src/App/Pages/Accounts/LoginPage.xaml | 2 +- src/App/Pages/Accounts/LoginPage.xaml.cs | 24 +- src/App/Pages/Accounts/LoginPageViewModel.cs | 4 +- src/App/Pages/BaseContentPage.cs | 20 +- .../Vault/GroupingsPage/GroupingsPage.xaml | 2 +- .../GroupingsPage/GroupingsPageViewModel.cs | 4 +- src/App/Utilities/AppHelpers.cs | 25 +- src/Core/Abstractions/ICryptoService.cs | 1 + src/Core/Abstractions/IStateService.cs | 294 +++-- src/Core/Abstractions/IUserService.cs | 31 - src/Core/Abstractions/IVaultTimeoutService.cs | 2 +- src/Core/Constants.cs | 4 - src/Core/Models/Domain/Account.cs | 25 +- src/Core/Models/View/AccountView.cs | 11 +- src/Core/Services/ApiService.cs | 6 +- src/Core/Services/AuthService.cs | 2 +- src/Core/Services/CipherService.cs | 2 +- src/Core/Services/CollectionService.cs | 2 +- src/Core/Services/CryptoService.cs | 94 +- src/Core/Services/FolderService.cs | 2 +- src/Core/Services/OrganizationService.cs | 4 +- .../Services/PasswordGenerationService.cs | 3 +- src/Core/Services/PolicyService.cs | 2 +- src/Core/Services/SendService.cs | 2 +- src/Core/Services/SettingsService.cs | 3 +- src/Core/Services/StateService.cs | 1014 +++++++++-------- src/Core/Services/SyncService.cs | 6 +- src/Core/Services/TokenService.cs | 11 +- src/Core/Services/UserService.cs | 221 ---- src/Core/Services/VaultTimeoutService.cs | 31 +- src/Core/Utilities/ServiceContainer.cs | 8 +- src/iOS/AppDelegate.cs | 3 +- 43 files changed, 893 insertions(+), 1068 deletions(-) delete mode 100644 src/Core/Abstractions/IUserService.cs delete mode 100644 src/Core/Services/UserService.cs diff --git a/src/App/App.xaml.cs b/src/App/App.xaml.cs index 93efef606..ff35cb435 100644 --- a/src/App/App.xaml.cs +++ b/src/App/App.xaml.cs @@ -80,11 +80,12 @@ namespace Bit.App } else if (message.Command == "logout") { - var extras = message.Data as Tuple; - var expired = extras?.Item1; - var userId = extras?.Item2; + var extras = message.Data as Tuple; + var userId = extras?.Item1; + var userInitiated = extras?.Item2; + var expired = extras?.Item3; Device.BeginInvokeOnMainThread(async () => - await LogOutAsync(expired.GetValueOrDefault(), userId)); + await LogOutAsync(userId, userInitiated, expired)); } else if (message.Command == "loggedOut") { @@ -111,7 +112,7 @@ namespace Bit.App } else if (message.Command == "switchedAccount") { - await SwitchedAccount(); + await SwitchedAccountAsync(); } else if (message.Command == "migrated") { @@ -241,13 +242,13 @@ namespace Bit.App new System.Globalization.UmAlQuraCalendar(); } - private async Task LogOutAsync(bool expired, string userId) + private async Task LogOutAsync(string userId, bool? userInitiated, bool? expired) { - await AppHelpers.LogOutAsync(userId); + await AppHelpers.LogOutAsync(userId, userInitiated.GetValueOrDefault(true)); + await SetMainPageAsync(); _authService.LogOut(() => { - Current.MainPage = new NavigationPage(new HomePage(Options)); - if (expired) + if (expired.GetValueOrDefault()) { _platformUtilsService.ShowToast("warning", null, AppResources.LoginExpired); } @@ -258,14 +259,14 @@ namespace Bit.App { Device.BeginInvokeOnMainThread(async () => { - Options.ShowAccountSwitcher = true; Current.MainPage = new NavigationPage(new HomePage(Options)); }); } - private async Task SwitchedAccount() + private async Task SwitchedAccountAsync() { - await AppHelpers.ClearServiceCache(); + await AppHelpers.OnAccountSwitchAsync(); + UpdateTheme(); Device.BeginInvokeOnMainThread(async () => { await SetMainPageAsync(); @@ -274,10 +275,7 @@ namespace Bit.App private async Task SetMainPageAsync() { - if (await _stateService.HasMultipleAccountsAsync()) - { - Options.ShowAccountSwitcher = true; - } + await _stateService.RefreshAccountViews(); var authed = await _stateService.IsAuthenticatedAsync(); if (authed) { diff --git a/src/App/Controls/AccountViewCell/AccountViewCell.xaml b/src/App/Controls/AccountViewCell/AccountViewCell.xaml index 4e6819c01..a9c74c992 100644 --- a/src/App/Controls/AccountViewCell/AccountViewCell.xaml +++ b/src/App/Controls/AccountViewCell/AccountViewCell.xaml @@ -45,13 +45,13 @@