* [bug] Pull serverUrl directly from stateService for the account switcher
Create a small extended Account model for handling the switchers server url, and pull environment urls from disk where they actually live
* [refactor] Add a message handler for switching accounts
* This allows for logic reuse between manually switching accounts and automatically switching accounts on login
* This commit also adds a loading spinner to app root while syncing after a switch
* [bug] Remove vertical scrollbar
* An old styling fix to add extra height and padding seems to be now creating an unecassary scroll bar. It is likely that since making more use of flexbox for our containers that this issue has been resolved without the manually added extra hight & padding
* [refactor] Turn down activity monitoring
Saving last activity is a disk call, and we currently do this a lot more than is necassary. For example:
* We track mousedown & click, which is redundant
* We track every mouse movement regardless of if an action is taken. This seems inappropriate for use in locking behavior.
* [bug] Address potential race condition when locking
Sometimes when swapping between an unlocked account and a locked account a race condition occurs that swaps the user but doesn't redirect to the lock screen
This commit just adds some awaits and restructures lock order of operations to be more in line with other message handlers
* [refactor] Change click event to mousedown event for the account switcher
This is simply a little snappier, and ensures we stay ahead of change detection and don't get stuck not properly interpreting the action
* [chore] Update jslib
* [chore] Linter fixes
* [chore] Linter fixes
* [chore] Update jslib
* [chore] Update jslib
* aligned dark theme variables to the new WV dark theme
* Update plugins.scss
updated toast close button color
* Run prettier on plugins.scss
Co-authored-by: Daniel James Smith <djsmith@web.de>
* [bug] Fully initilize environmentUrls default value
We want the full environmentUrls object to be saved to storage with null values as an indicator of using BW cloud.
Currently the initilization behavior creates an empty object instead. Setting property values returns the correct behavior.
* [bug] Return the correct environmentUrls when scaffloging a new account
To allow for setting environmentUrls before an account is created we save that value as a global setting and then apply it to any newly authed accounts.
There is a bug that will instead save the urls used by the previous logged in account, making account switching with multiple servers cause errors.
This commit resolves this by specifically getting environementUrls from global state when creating a new account
* [refactor] Restructure EnvironmentUrls in state
* Patch up (add missing fields) and more extensivly use the EnvironmentUrls class instead of passing around an any
* Add environmentUrls to the AccountSettings model in addition to GlobalState for use in both scopes
* Move EnvironmentUrls initialization to the model level and out of StateSerice
* Adjust the StateMigrationService to account for these changes
* [refactor] Improve order of operations for LockGuardService
We currently jump through a bunch of hoops to verify users can access the Lock page, like checking authentication first.
If a user is not authenticated, they are not locked, so we can improve performance for the happy path of this serivice by checking isLocked first and using isAuthenticated to deviate from the normal flow if needed.
* [bug] Subscribe to State.accounts in EnvironmentService and set urls accordingly
The EnvironmentService has no context for account changes currently and does not update actively used urls based on active account.
This commit addresses this issue by subscribing to State.accounts and resetting the service's urls on account change.
* [bug] Clear AccessToken from State on clean
In order for logout flows to function as expected we need to deauthenticate users when cleaning up state before checking for the next active user
Otherwise the service will continue to think the user being logged out is active
* [refactor] Stop pushing accounts when modifying disk state
There is no reason to push new accounts to subscribers when updating disk state.
Subscribers recieve a copy of in memory state, so changes to disk will not be refelected and have to be fetched seperatly from the service.
Pushing when saving disk state is just creating an unecassary performance burden.
* [refactor] Default to in memory active user if availible, even when accessing disk state
Sometimes we need to pull activeUserId from storage to access a bit of data, like on initial boot, but most of the time this isn't necassary.
Since we pull this userId a lot, checking disk each time is a performance burden. Defaulting to the in memory user ID if avaible helps alleviate this.
* [style] Ran prettier
* [style] Change a let to a const
* Add .github/workflows to .prettierignore
* Add all filestypes to prettier and ignore via .prettierignore
* Add --ignore-unknown to prettier for lint-staged
* Run prettier on *.ts files
* Add scss to prettier
Co-authored-by: Oscar Hinton <oscar@oscarhinton.com>
* Add all filetypes to prettier and ignore via .prettierignore
Co-authored-by: Oscar Hinton <oscar@oscarhinton.com>