mirror of
https://github.com/bitwarden/browser
synced 2025-12-14 07:13:32 +00:00
* add browser extension prompt page with initial loading state * add browser extension icon * move browser extension prompt to state * add installation link for error state * automatically open extension when possible for browser-reprompt-page * refactor browser tabs query into a standalone method * add success message state for auto-opening browsers * Refactor `VaultOnboardingMessages` to `VaultMessages` to be more generic * add auto-open extension messages to `VaultMessages` enum * add bitwarden icon * Add manual error state for firefox users * add extension prompt routing * fix incorrect imports * add mobile screen for browser prompt * remove comment * fix typo in code comment * update key for `checkBwInstalled` method * add check for safari before attempting to send a message * break translation for manual opening into two parts
67 lines
2.4 KiB
TypeScript
67 lines
2.4 KiB
TypeScript
import { CommonModule } from "@angular/common";
|
|
import { Component, OnInit } from "@angular/core";
|
|
import { map } from "rxjs";
|
|
|
|
import { DeviceType } from "@bitwarden/common/enums";
|
|
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
|
|
import { LinkModule } from "@bitwarden/components";
|
|
import { I18nPipe } from "@bitwarden/ui-common";
|
|
|
|
import {
|
|
BrowserExtensionPromptService,
|
|
BrowserPromptState,
|
|
} from "../../services/browser-extension-prompt.service";
|
|
|
|
/** Device specific Urls for the extension */
|
|
const WebStoreUrls: Partial<Record<DeviceType, string>> = {
|
|
[DeviceType.ChromeBrowser]:
|
|
"https://chrome.google.com/webstore/detail/bitwarden-password-manage/nngceckbapebfimnlniiiahkandclblb",
|
|
[DeviceType.FirefoxBrowser]:
|
|
"https://addons.mozilla.org/en-US/firefox/addon/bitwarden-password-manager/",
|
|
[DeviceType.SafariBrowser]: "https://apps.apple.com/us/app/bitwarden/id1352778147?mt=12",
|
|
[DeviceType.OperaBrowser]:
|
|
"https://addons.opera.com/extensions/details/bitwarden-free-password-manager/",
|
|
[DeviceType.EdgeBrowser]:
|
|
"https://microsoftedge.microsoft.com/addons/detail/jbkfoedolllekgbhcbcoahefnbanhhlh",
|
|
};
|
|
|
|
@Component({
|
|
selector: "vault-browser-extension-prompt-install",
|
|
templateUrl: "./browser-extension-prompt-install.component.html",
|
|
standalone: true,
|
|
imports: [CommonModule, I18nPipe, LinkModule],
|
|
})
|
|
export class BrowserExtensionPromptInstallComponent implements OnInit {
|
|
/** The install link should only show for the error states */
|
|
protected shouldShow$ = this.browserExtensionPromptService.pageState$.pipe(
|
|
map((state) => state === BrowserPromptState.Error || state === BrowserPromptState.ManualOpen),
|
|
);
|
|
|
|
/** All available page states */
|
|
protected BrowserPromptState = BrowserPromptState;
|
|
|
|
/**
|
|
* Installation link for the extension
|
|
*/
|
|
protected webStoreUrl: string = "https://bitwarden.com/download/#downloads-web-browser";
|
|
|
|
constructor(
|
|
private browserExtensionPromptService: BrowserExtensionPromptService,
|
|
private platformService: PlatformUtilsService,
|
|
) {}
|
|
|
|
ngOnInit(): void {
|
|
this.setBrowserStoreLink();
|
|
}
|
|
|
|
/** If available, set web store specific URL for the extension */
|
|
private setBrowserStoreLink(): void {
|
|
const deviceType = this.platformService.getDevice();
|
|
const platformSpecificUrl = WebStoreUrls[deviceType];
|
|
|
|
if (platformSpecificUrl) {
|
|
this.webStoreUrl = platformSpecificUrl;
|
|
}
|
|
}
|
|
}
|