clients/apps/web
Alex b85e096b49
[PM-33067] Fix false success toast when mark/unmark critical apps API fails (#19344)
* fix(dirt): check response.error before showing success toast for critical apps

The orchestrator's catchError converts API failures into next emissions
with response.error set. The component's next handler was unconditionally
showing a success toast without checking this field.

Now checks response.error and shows an error toast when the API call
failed. Selection is preserved on error so users can retry.

Also ensures updatingCriticalApps signal is reset on all paths (success,
caught error, and uncaught error).

[PM-33067]

* test(dirt): add tests for mark/unmark critical apps error handling

Tests verify that:
- Success toast shown when response.error is null
- Error toast shown when response.error is non-null
- Selection preserved on error, cleared on success

[PM-33067]

* fix(dirt): use specific error toast for unmark critical apps failure

Replace generic "An unexpected error has occurred" with
"Failed to unmark applications as critical" for consistency
with the mark-as-critical error toast.

* fix(dirt): check response.error in Review New Applications mark critical

The AllApplicationsComponent (Review New Applications widget) had the
same false success toast bug as the All Applications tab. The next
handler ignored the response parameter entirely, showing a success
toast even when response.error was set by the orchestrator's catchError.

Now checks response.error before showing toast. On error: shows
"Failed to mark applications as critical" and preserves selection.
Also resets markingAsCritical on all paths.

Adds unit tests for mark success and error paths.

[PM-33067]

* Revert "fix(dirt): check response.error in Review New Applications mark critical"

This reverts commit b646598613.

* fix(dirt): check response.error in application review dialog before showing success toast

The saveApplicationReviewStatus$ orchestrator method uses catchError
to convert API failures into next emissions with response.error set.
The dialog used firstValueFrom inside try/catch, but since catchError
prevents the Observable from erroring, firstValueFrom resolves
successfully and the catch block never fires.

Now checks response.error on the resolved value before showing the
success toast. On error: shows "Error saving review status" and
stays on the dialog so the user can retry.

[PM-33067]
2026-03-31 14:53:36 -07:00
..
.vscode [PM-8836] Move ownership of biometrics to key-management (#10818) 2024-09-30 18:14:32 +02:00
config icons and key connector urls for web development (#17043) 2025-10-27 12:40:56 +00:00
scripts [deps] Autofill: Update prettier to v3 (#7014) 2023-11-29 16:15:20 -05:00
src [PM-33067] Fix false success toast when mark/unmark critical apps API fails (#19344) 2026-03-31 14:53:36 -07:00
.dockerignore Move web to apps/web and bitwarden_license/bit-web 2022-06-02 11:55:37 +02:00
.gitignore Noop notifications for dev (#6671) 2023-10-24 15:18:23 +02:00
CLAUDE.md [PM-26337] Create a Claude markdown file (#16676) 2025-10-03 16:48:01 +02:00
config.js Use settings in base.json and merge config keys (#3804) 2022-10-18 12:00:40 +10:00
crowdin.yml [deps]: Update crowdin/github-action action to v2 (#15169) 2025-06-12 17:59:17 -04:00
dev-server.shared.pem Move web to apps/web and bitwarden_license/bit-web 2022-06-02 11:55:37 +02:00
Dockerfile [PM-31831] fix: add support for overriding commercial SDK (#18863) 2026-02-25 11:15:19 +01:00
entrypoint.sh add shadow package, restore entrypoint functionality (#16124) 2025-08-26 08:47:19 -04:00
jest.config.js Implement and extend tsconfig.base across projects (#14554) 2025-06-02 20:38:17 +00:00
package.json Bumped client version(s) 2026-03-23 10:44:20 +00:00
postcss.config.js build(web): integrate nx (#16706) 2025-10-13 06:31:17 -04:00
project.json fix(nx): [PM-33529] Update web nx serve configuration names to match CLI and docs 2026-03-27 13:05:10 -04:00
README.md Remove gitter chat badges from READMEs (#19368) 2026-03-04 16:33:27 +00:00
tailwind.config.js [PM-29448] Consume the new send table in web (#17923) 2025-12-19 16:00:37 +01:00
test.setup.ts [PM-18599] Forbid unknown property and element in tests (#13556) 2025-02-25 14:02:19 -08:00
tsconfig.build.json [PM-29239] Create proxy cookie redirect connector (#18476) 2026-02-03 07:08:44 -05:00
tsconfig.json [PM-29239] Create proxy cookie redirect connector (#18476) 2026-02-03 07:08:44 -05:00
tsconfig.spec.json [CL-525] Upgrade angular to v19 (#14815) 2025-06-02 13:13:31 -04:00
webpack.base.js [PM-30404] Exclude .wasm.js from babel (#18555) 2026-02-06 08:42:08 +01:00
webpack.config.js [PM-27564] Self-host configuration is not applied with nx build (#17279) 2025-11-24 16:36:23 +01:00

Bitwarden Web App

The Bitwarden web project is an Angular application that powers the web vault (https://vault.bitwarden.com/).

Github Workflow build on main Crowdin DockerHub

Documentation

Please refer to the Web vault section of the Contributing Documentation for build instructions, recommended tooling, code style tips, and lots of other great information to get you started.