1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-29 14:43:31 +00:00

address review comments

This commit is contained in:
John Harrington
2025-12-16 09:05:14 -07:00
parent 3899314734
commit fb860cd975
5 changed files with 24 additions and 59 deletions

View File

@@ -22,7 +22,6 @@ struct CheckBrowserInstalledResponse {
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase", tag = "type")]
enum CommandResult<T> {
// rename = "camelCase" was a review suggestion with breaking changes
Success { value: T },
Error { error: String },
}
@@ -180,9 +179,7 @@ async fn is_browser_installed(browser_name: &str) -> Result<bool> {
.map(|(_, id)| *id);
let Some(bundle_id) = bundle_id else {
return Ok(true); // ok_or(true) was a review suggestion with breaking changes
// Avoid ok_or(true): serializes Result as {"Ok": "..."} instead of string
// value
return Ok(true);
};
let input = CommandInput {

View File

@@ -12,11 +12,7 @@ export class ChromiumImporterService {
// Used on Mac OS App Store builds to request permissions to browser entries outside the sandbox
ipcMain.handle("chromium_importer.requestBrowserAccess", async (event, browser: string) => {
if (chromium_importer.requestBrowserAccess) {
return await chromium_importer.requestBrowserAccess(browser, isMacAppStore());
}
// requestBrowserAccess not found, returning with no-op
return;
return await chromium_importer.requestBrowserAccess(browser, isMacAppStore());
});
ipcMain.handle("chromium_importer.getAvailableProfiles", async (event, browser: string) => {

View File

@@ -1,21 +1,13 @@
<bit-dialog #dialog dialogSize="large" background="alt">
<bit-dialog #dialog [loading]="loading" dialogSize="large" background="alt">
<span bitDialogTitle>{{ "import" | i18n }}</span>
<ng-container bitDialogContent>
<div class="tw-relative">
<tools-import
(formLoading)="this.loading = $event"
(formDisabled)="this.disabled = $event"
(onSuccessfulImport)="this.onSuccessfulImport($event)"
[onImportFromBrowser]="this.onImportFromBrowser"
[onLoadProfilesFromBrowser]="this.onLoadProfilesFromBrowser"
[class.tw-invisible]="loading"
></tools-import>
@if (loading) {
<div class="tw-absolute tw-inset-0 tw-flex tw-items-center tw-justify-center">
<bit-spinner></bit-spinner>
</div>
}
</div>
<tools-import
(formLoading)="this.loading = $event"
(formDisabled)="this.disabled = $event"
(onSuccessfulImport)="this.onSuccessfulImport($event)"
[onImportFromBrowser]="this.onImportFromBrowser"
[onLoadProfilesFromBrowser]="this.onLoadProfilesFromBrowser"
></tools-import>
</ng-container>
<ng-container bitDialogFooter>
<button

View File

@@ -3,13 +3,7 @@ import { Component } from "@angular/core";
import { JslibModule } from "@bitwarden/angular/jslib.module";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
import {
DialogRef,
AsyncActionsModule,
ButtonModule,
DialogModule,
SpinnerComponent,
} from "@bitwarden/components";
import { DialogRef, AsyncActionsModule, ButtonModule, DialogModule } from "@bitwarden/components";
import type { chromium_importer } from "@bitwarden/desktop-napi";
import { ImportMetadataServiceAbstraction } from "@bitwarden/importer-core";
import {
@@ -32,7 +26,6 @@ import { DesktopImportMetadataService } from "./desktop-import-metadata.service"
AsyncActionsModule,
ButtonModule,
ImportComponent,
SpinnerComponent,
],
providers: [
...ImporterProviders,

View File

@@ -1,16 +1,7 @@
// FIXME: Update this file to be type safe and remove this and next line
// @ts-strict-ignore
import { CommonModule } from "@angular/common";
import {
Component,
effect,
EventEmitter,
input,
Input,
OnDestroy,
OnInit,
Output,
} from "@angular/core";
import { Component, EventEmitter, input, Input, OnDestroy, OnInit, Output } from "@angular/core";
import {
AsyncValidatorFn,
ControlContainer,
@@ -114,26 +105,22 @@ export class ImportChromeComponent implements OnInit, OnDestroy {
private controlContainer: ControlContainer,
private logService: LogService,
private i18nService: I18nService,
) {
effect(async () => {
// Callback is set via @Input after constructor, so check it exists
if (this.onLoadProfilesFromBrowser) {
try {
this.profileList = await this.onLoadProfilesFromBrowser(
this.getBrowserName(this.format()),
);
} catch (error) {
this.logService.error("Error loading profiles from browser:", error);
const translatedMessage = this.translateValidationError(error);
this.error.emit(translatedMessage);
}
}
});
}
) {}
async ngOnInit(): Promise<void> {
this._parentFormGroup = this.controlContainer.control as FormGroup;
this._parentFormGroup.addControl("chromeOptions", this.formGroup);
// Load profiles from browser on initialization
if (this.onLoadProfilesFromBrowser) {
try {
this.profileList = await this.onLoadProfilesFromBrowser(this.getBrowserName(this.format()));
} catch (error) {
this.logService.error("Error loading profiles from browser:", error);
const translatedMessage = this.translateValidationError(error);
this.error.emit(translatedMessage);
}
}
}
ngOnDestroy(): void {