1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-10 21:33:27 +00:00

Merge branch 'master' into ac/ac-1139/deprecate-custom-collection-perm

This commit is contained in:
Rui Tome
2023-12-05 11:06:43 +00:00
1311 changed files with 9826 additions and 7438 deletions

View File

@@ -22,3 +22,6 @@
193434461dbd9c48fe5dcbad95693470aec422ac
# Jslib: Monorepository https://github.com/bitwarden/clients/pull/2824/commits/d7492e3cf320410e74ebd0e0675ab994e64bd01a
d7492e3cf320410e74ebd0e0675ab994e64bd01a
# All Clients: Apply Prettier https://github.com/bitwarden/clients/pull/7014
28de9439beb87133c8683434df952a0c0be94100

View File

@@ -40,14 +40,6 @@
./apps/browser/README.md
./apps/browser/store/windows/AppxManifest.xml
./apps/browser/src/background/nativeMessaging.background.ts
./apps/browser/src/background/models/addLoginRuntimeMessage.ts
./apps/browser/src/background/models/addChangePasswordQueueMessage.ts
./apps/browser/src/background/models/addLoginQueueMessage.ts
./apps/browser/src/background/models/changePasswordRuntimeMessage.ts
./apps/browser/src/background/models/notificationQueueMessage.ts
./apps/browser/src/background/models/notificationQueueMessageType.ts
./apps/browser/src/background/models/lockedVaultPendingNotificationsItem.ts
./apps/browser/src/background/webRequest.background.ts
./apps/browser/src/popup/services/debounceNavigationService.ts
./apps/browser/src/models/browserComponentState.ts
./apps/browser/src/models/browserSendComponentState.ts

View File

@@ -136,16 +136,10 @@ jobs:
cache-dependency-path: '**/package-lock.json'
node-version: ${{ env._NODE_VERSION }}
- name: Install node-gyp
run: |
npm install -g node-gyp
node-gyp install $(node -v)
- name: Print environment
run: |
node --version
npm --version
node-gyp --version
- name: Build sources for reviewers
run: |

View File

@@ -104,11 +104,6 @@ jobs:
cache-dependency-path: '**/package-lock.json'
node-version: ${{ env._NODE_VERSION }}
- name: Install node-gyp
run: |
npm install -g node-gyp
node-gyp install $(node -v)
- name: Install
run: npm ci
working-directory: ./
@@ -179,11 +174,6 @@ jobs:
cache-dependency-path: '**/package-lock.json'
node-version: ${{ env._NODE_VERSION }}
- name: Install node-gyp
run: |
npm install -g node-gyp
node-gyp install $(node -v)
- name: Get pkg-fetch
shell: pwsh
run: |

View File

@@ -162,11 +162,6 @@ jobs:
- name: Set Node options
run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV
- name: Install node-gyp
run: |
npm install -g node-gyp
node-gyp install $(node -v)
- name: Set up environment
run: |
sudo apt-get update
@@ -279,11 +274,6 @@ jobs:
- name: Set Node options
run: echo "NODE_OPTIONS=--max_old_space_size=4096" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- name: Install node-gyp
run: |
npm install -g node-gyp
node-gyp install $(node -v)
- name: Install AST
run: dotnet tool install --global AzureSignTool --version 4.0.1
@@ -493,11 +483,6 @@ jobs:
- name: Set Node options
run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV
- name: Install node-gyp
run: |
npm install -g node-gyp
node-gyp install $(node -v)
- name: Rust
shell: pwsh
run: rustup target install aarch64-apple-darwin
@@ -646,11 +631,6 @@ jobs:
- name: Set Node options
run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV
- name: Install node-gyp
run: |
npm install -g node-gyp
node-gyp install $(node -v)
- name: Rust
shell: pwsh
run: rustup target install aarch64-apple-darwin
@@ -844,11 +824,6 @@ jobs:
- name: Set Node options
run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV
- name: Install node-gyp
run: |
npm install -g node-gyp
node-gyp install $(node -v)
- name: Rust
shell: pwsh
run: rustup target install aarch64-apple-darwin
@@ -1034,11 +1009,6 @@ jobs:
- name: Set Node options
run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV
- name: Install node-gyp
run: |
npm install -g node-gyp
node-gyp install $(node -v)
- name: Print environment
run: |
node --version

View File

@@ -11,6 +11,21 @@ on:
default: master
jobs:
notify-start:
name: Notify Slack with start message
runs-on: ubuntu-22.04
if: always()
steps:
- uses: bitwarden/gh-actions/report-deployment-status-to-slack@main
with:
project: Web
environment: EU QA Cloud
tag: ${{ github.ref_name }}
slack-channel: team-eng-qa-devops
event: 'start'
url: https://github.com/bitwarden/clients/actions/runs/${{ github.run_id }}
AZURE_KV_CI_SERVICE_PRINCIPAL: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}
azure-deploy:
name: Deploy to Azure
runs-on: ubuntu-22.04
@@ -71,5 +86,6 @@ jobs:
environment: EU QA Cloud
tag: ${{ github.event.inputs.tag }}
slack-channel: team-eng-qa-devops
failure: ${{ needs.azure-deploy.result == 'failure' }}
event: ${{ needs.azure-deploy.result }}
url: https://github.com/bitwarden/devops/actions/runs/${{ github.run_id }}
AZURE_KV_CI_SERVICE_PRINCIPAL: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}

View File

@@ -57,6 +57,21 @@ jobs:
echo "environment-artifact=web-*-cloud-COMMERCIAL.zip" >> $GITHUB_OUTPUT
fi
notify-start:
name: Notify Slack with start message
runs-on: ubuntu-22.04
if: always()
steps:
- uses: bitwarden/gh-actions/report-deployment-status-to-slack@main
with:
project: Web
environment: US ${{ inputs.environment }} Cloud
tag: ${{ github.ref_name }}
slack-channel: team-eng-qa-devops
event: 'start'
url: https://github.com/bitwarden/clients/actions/runs/${{ github.run_id }}
AZURE_KV_CI_SERVICE_PRINCIPAL: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}
artifact-check:
name: Check if Web artifact is present
runs-on: ubuntu-22.04
@@ -253,5 +268,6 @@ jobs:
environment: US ${{ inputs.environment }} Cloud
tag: ${{ github.ref_name }}
slack-channel: team-eng-qa-devops
failure: ${{ needs.cfpages-deploy.result == 'failure' }}
event: ${{ needs.cfpages-deploy.result }}
url: https://github.com/bitwarden/clients/actions/runs/${{ github.run_id }}
AZURE_KV_CI_SERVICE_PRINCIPAL: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}

View File

@@ -138,11 +138,6 @@ jobs:
- name: Set Node options
run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV
- name: Install node-gyp
run: |
npm install -g node-gyp
node-gyp install $(node -v)
- name: Set up environment
run: |
sudo apt-get update
@@ -235,11 +230,6 @@ jobs:
- name: Set Node options
run: echo "NODE_OPTIONS=--max_old_space_size=4096" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- name: Install node-gyp
run: |
npm install -g node-gyp
node-gyp install $(node -v)
- name: Install AST
run: dotnet tool install --global AzureSignTool --version 4.0.1
@@ -431,11 +421,6 @@ jobs:
- name: Set Node options
run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV
- name: Install node-gyp
run: |
npm install -g node-gyp
node-gyp install $(node -v)
- name: Print environment
run: |
node --version
@@ -561,11 +546,6 @@ jobs:
- name: Set Node options
run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV
- name: Install node-gyp
run: |
npm install -g node-gyp
node-gyp install $(node -v)
- name: Print environment
run: |
node --version
@@ -764,11 +744,6 @@ jobs:
- name: Set Node options
run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV
- name: Install node-gyp
run: |
npm install -g node-gyp
node-gyp install $(node -v)
- name: Print environment
run: |
node --version

View File

@@ -48,7 +48,7 @@ const decorator = componentWrapperDecorator(
},
({ globals }) => {
return { theme: `${globals["theme"]}` };
}
},
);
const preview: Preview = {

View File

@@ -1,13 +1,11 @@
const child = require("child_process");
const fs = require("fs");
const del = require("del");
const { rimraf } = require("rimraf");
const gulp = require("gulp");
const filter = require("gulp-filter");
const gulpif = require("gulp-if");
const jeditor = require("gulp-json-editor");
const replace = require("gulp-replace");
const zip = require("gulp-zip");
const manifest = require("./src/manifest.json");
@@ -47,7 +45,10 @@ function distFileName(browserName, ext) {
return `dist-${browserName}${buildString()}.${ext}`;
}
function dist(browserName, manifest) {
async function dist(browserName, manifest) {
const { default: zip } = await import("gulp-zip");
const { default: filter } = await import("gulp-filter");
return gulp
.src(paths.build + "**/*")
.pipe(filter(["**"].concat(filters.fonts).concat(filters.safari)))
@@ -130,7 +131,7 @@ function distSafariApp(cb, subBuildPath) {
];
}
return del([buildPath + "**/*"])
return rimraf([buildPath + "**/*"], { glob: true })
.then(() => safariCopyAssets(paths.safari + "**/*", buildPath))
.then(() => safariCopyBuild(paths.build + "**/*", buildPath + "safari/app"))
.then(() => {
@@ -144,7 +145,9 @@ function distSafariApp(cb, subBuildPath) {
stdOutProc(proc);
return new Promise((resolve) => proc.on("close", resolve));
})
.then(() => {
.then(async () => {
const { default: filter } = await import("gulp-filter");
const libs = fs
.readdirSync(builtAppexFrameworkPath)
.filter((p) => p.endsWith(".dylib"))
@@ -168,7 +171,7 @@ function distSafariApp(cb, subBuildPath) {
},
() => {
return cb;
}
},
);
}
@@ -179,7 +182,7 @@ function safariCopyAssets(source, dest) {
.on("error", reject)
.pipe(gulpif("safari/Info.plist", replace("0.0.1", manifest.version)))
.pipe(
gulpif("safari/Info.plist", replace("0.0.2", process.env.BUILD_NUMBER || manifest.version))
gulpif("safari/Info.plist", replace("0.0.2", process.env.BUILD_NUMBER || manifest.version)),
)
.pipe(gulpif("desktop.xcodeproj/project.pbxproj", replace("../../../build", "../safari/app")))
.pipe(gulp.dest(dest))
@@ -187,7 +190,9 @@ function safariCopyAssets(source, dest) {
});
}
function safariCopyBuild(source, dest) {
async function safariCopyBuild(source, dest) {
const { default: filter } = await import("gulp-filter");
return new Promise((resolve, reject) => {
gulp
.src(source)
@@ -203,8 +208,8 @@ function safariCopyBuild(source, dest) {
delete manifest.optional_permissions;
manifest.permissions.push("nativeMessaging");
return manifest;
})
)
}),
),
)
.pipe(gulp.dest(dest))
.on("end", resolve);
@@ -216,7 +221,10 @@ function stdOutProc(proc) {
proc.stderr.on("data", (data) => console.error(data.toString()));
}
function ciCoverage(cb) {
async function ciCoverage(cb) {
const { default: zip } = await import("gulp-zip");
const { default: filter } = await import("gulp-filter");
return gulp
.src(paths.coverage + "**/*")
.pipe(filter(["**", "!coverage/coverage*.zip"]))

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Fayl parolunu təsdiqlə"
},
"typePasskey": {
"message": "Keçid açarı"
},
"passkeyNotCopied": {
"message": "Keçid açarı kopyalanmır"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Пацвердзіць пароль файла"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2264,7 +2264,7 @@
"message": "Как се ползва автоматичното попълване"
},
"autofillSelectInfoWithCommand": {
"message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.",
"message": "Изберете елемент на този екран, използвайте комбинацията $COMMAND$ или разгледайте други опции в настройките.",
"placeholders": {
"command": {
"content": "$1",
@@ -2273,7 +2273,7 @@
}
},
"autofillSelectInfoWithoutCommand": {
"message": "Select an item from this screen, or explore other options in settings."
"message": "Изберете елемент на този екран или разгледайте други опции в настройките."
},
"gotIt": {
"message": "Разбрано"
@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Потвърждаване на паролата на файла"
},
"typePasskey": {
"message": "Секретен ключ"
},
"passkeyNotCopied": {
"message": "Секретният ключ няма да бъде копиран"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2264,7 +2264,7 @@
"message": "Com emplenar automàticament"
},
"autofillSelectInfoWithCommand": {
"message": "Select an item from this screen, use the shortcut $COMMAND$, or explore other options in settings.",
"message": "Seleccioneu un element d'aquesta pantalla, utilitzeu la drecera $COMMAND$ o exploreu altres opcions a la configuració.",
"placeholders": {
"command": {
"content": "$1",
@@ -2273,7 +2273,7 @@
}
},
"autofillSelectInfoWithoutCommand": {
"message": "Select an item from this screen, or explore other options in settings."
"message": "Seleccioneu un element d'aquesta pantalla, o exploreu altres opcions a la configuració."
},
"gotIt": {
"message": "D'acord"
@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirma la contrasenya del fitxer"
},
"typePasskey": {
"message": "Clau de pas"
},
"passkeyNotCopied": {
"message": "La clau de pas no es copiarà"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Potvrzení hesla souboru"
},
"typePasskey": {
"message": "Přístupový klíč"
},
"passkeyNotCopied": {
"message": "Přístupový klíč nebude zkopírován"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Bekræft filadgangskode"
},
"typePasskey": {
"message": "Adgangsnøgle"
},
"passkeyNotCopied": {
"message": "Adgangsnøglen kopieres ikke"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Dateipasswort bestätigen"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey wird nicht kopiert"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Επιβεβαίωση κωδικού πρόσβασης αρχείου"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirmar contraseña del archivo"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "La clave de acceso no se copiará"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Pääsukoodi ei kopeerita"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "کلید عبور کپی نمی‌شود"
},

View File

@@ -658,10 +658,10 @@
"message": "Ask to update a login's password when a change is detected on a website. Applies to all logged in accounts."
},
"enableUsePasskeys": {
"message": "Ask to save and use passkeys"
"message": "Pyydä tallentamaan ja käyttämään salausavaimia"
},
"usePasskeysDesc": {
"message": "Ask to save new passkeys or log in with passkeys stored in your vault. Applies to all logged in accounts."
"message": "Pyydä tallentamaan uusia salausavaimia tai kirjaudu sisään holviisi tallennetuilla salausavaimilla. Koskee kaikkia sisäänkirjautuneita tilejä."
},
"notificationChangeDesc": {
"message": "Haluatko päivittää salasanan Bitwardeniin?"
@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Vahvista tiedoston salasana"
},
"typePasskey": {
"message": "Suojausavain"
},
"passkeyNotCopied": {
"message": "Suojausavainta ei kopioida"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirmez le mot de passe du fichier"
},
"typePasskey": {
"message": "Clé d'accès"
},
"passkeyNotCopied": {
"message": "La clé d'accès ne sera pas copiée"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Potvrdi lozinku datoteke"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Pristupni ključ neće biti kopiran"
},

View File

@@ -658,10 +658,10 @@
"message": "A bejelentkezési jelszó frissítésének kérése, ha változást lett érzékelve egy webhelyen. Minden bejelentkezett fiókra vonatkozik."
},
"enableUsePasskeys": {
"message": "Kérés a jelszó mentésére és használatára"
"message": "Kérés a jhozzáférési kulcs mentésére és használatára"
},
"usePasskeysDesc": {
"message": "Kérés az új jelszavak mentésére vagy bejelentkezés a széfben tárolt jelszavakkal. Minden bejelentkezett fiókra vonatkozik."
"message": "Kérés az új hozzáféréi kulcsok mentésére vagy bejelentkezés a széfben tárolt hozzáférési kulcsokkal. Minden bejelentkezett fiókra vonatkozik."
},
"notificationChangeDesc": {
"message": "Frissítésre kerüljön a jelszó a Bitwardenben?"
@@ -1021,14 +1021,14 @@
"message": "A környezeti webcímek mentésre kerültek."
},
"showAutoFillMenuOnFormFields": {
"message": "Show auto-fill menu on form fields",
"message": "Automatikus kitöltés menü megjelenítése az űrlapmezőkön",
"description": "Represents the message for allowing the user to enable the auto-fill overlay"
},
"showAutoFillMenuOnFormFieldsDescAlt": {
"message": "Minden bejelentkezett fiókra vonatkozik."
},
"autofillOverlayVisibilityOff": {
"message": "Off",
"message": "Ki",
"description": "Overlay setting select option for disabling autofill overlay"
},
"autofillOverlayVisibilityOnFieldFocus": {
@@ -1036,7 +1036,7 @@
"description": "Overlay appearance select option for showing the field on focus of the input element"
},
"autofillOverlayVisibilityOnButtonClick": {
"message": "When auto-fill icon is selected",
"message": "Ha az automatikus kitöltés menü került kiválasztásra",
"description": "Overlay appearance select option for showing the field on click of the overlay icon"
},
"enableAutoFillOnPageLoad": {
@@ -2503,7 +2503,7 @@
"description": "Screen reader and tool tip label for the overlay button"
},
"bitwardenVault": {
"message": "Bitwarden auto-fill menu",
"message": "Bitwarden automatikus kitöltési menü",
"description": "Page title in overlay"
},
"unlockYourAccountToViewMatchingLogins": {
@@ -2511,27 +2511,27 @@
"description": "Text to display in overlay when the account is locked."
},
"unlockAccount": {
"message": "Unlock account",
"message": "Fiók feloldása",
"description": "Button text to display in overlay when the account is locked."
},
"fillCredentialsFor": {
"message": "Fill credentials for",
"message": "Töltse kia hitelesítő adatokat",
"description": "Screen reader text for when overlay item is in focused"
},
"partialUsername": {
"message": "Partial username",
"message": "Részleges felhasználónév",
"description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username"
},
"noItemsToShow": {
"message": "No items to show",
"message": "Nincsenek megjeleníthető elemek",
"description": "Text to show in overlay if there are no matching items"
},
"newItem": {
"message": "New item",
"message": "Új elem",
"description": "Button text to display in overlay when there are no matching items"
},
"addNewVaultItem": {
"message": "Add new vault item",
"message": "Elem hozzáadása",
"description": "Screen reader text (aria-label) for new item button in overlay"
},
"bitwardenOverlayMenuAvailable": {
@@ -2551,21 +2551,21 @@
"description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior"
},
"turnOn": {
"message": "Turn on"
"message": "Bekapcsolás"
},
"ignore": {
"message": "Ignore"
"message": "Mellőz"
},
"overrideBrowserAutoFillSettings": {
"message": "Override browser auto-fill settings",
"message": "A böngésző automatikus kitöltési beállításainak felülbírálása",
"description": "Label for the setting that allows overriding the default browser autofill settings"
},
"extensionPrivacyPermissionNotGrantedTitle": {
"message": "Unable to override browser auto-fill",
"message": "Nem lehet felülbírálni a böngésző automatikus kitöltését",
"description": "Title for the dialog that appears when the user has not granted the extension permission to set privacy settings"
},
"extensionPrivacyPermissionNotGrantedDescription": {
"message": "Bitwarden must have access to the extension's privacy permission to override browser auto-fill settings.",
"message": "A Bitwardennek hozzáféréssel kell rendelkeznie a bővítmény adatvédelmi engedélyéhez, hogy felülbírálhassa a böngésző automatikus kitöltési beállításait.",
"description": "Description for the dialog that appears when the user has not granted the extension permission to set privacy settings"
},
"importData": {
@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Fájl jelszó megerősítés"
},
"typePasskey": {
"message": "Hozzáférési kulcs"
},
"passkeyNotCopied": {
"message": "A hozzáférési kulcs nem kerül másolásra."
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Conferma password del file"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "La passkey non sarà copiata"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "ファイルパスワードの確認"
},
"typePasskey": {
"message": "パスキー"
},
"passkeyNotCopied": {
"message": "パスキーはコピーされません"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Prieigos raktas"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Apstiprināt datnes paroli"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Piekļuves atslēga netiks ievietota starpliktuvē"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Bestandswachtwoord bevestigen"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey wordt niet gekopieerd"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Potwierdź hasło pliku"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey nie zostanie skopiowany"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirmar a palavra-passe do ficheiro"
},
"typePasskey": {
"message": "Chave de acesso"
},
"passkeyNotCopied": {
"message": "A chave de acesso não será copiada"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Подтвердите пароль к файлу"
},
"typePasskey": {
"message": "Ключ доступа"
},
"passkeyNotCopied": {
"message": "Ключ доступа не будет скопирован"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Potvrdiť heslo súboru"
},
"typePasskey": {
"message": "Prístupový kľúč"
},
"passkeyNotCopied": {
"message": "Prístupový kód sa neskopíruje"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Потврдити лозинку датотеке"
},
"typePasskey": {
"message": "Приступачни кључ"
},
"passkeyNotCopied": {
"message": "Приступачни кључ неће бити копиран"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2499,7 +2499,7 @@
"description": "Page title for the iframe containing the overlay button"
},
"toggleBitwardenVaultOverlay": {
"message": "Toggle Bitwarden auto-fill menu",
"message": "Bitwarden otomatik doldurma menüsünü aç/kapat",
"description": "Screen reader and tool tip label for the overlay button"
},
"bitwardenVault": {
@@ -2507,15 +2507,15 @@
"description": "Page title in overlay"
},
"unlockYourAccountToViewMatchingLogins": {
"message": "Eşleşen giriş bilgilerini görüntülemek için hesabınızın kilidini açın",
"message": "Eşleşen hesaplarınızı görmek için hesabınızın kilidini açın",
"description": "Text to display in overlay when the account is locked."
},
"unlockAccount": {
"message": "Hesabın kilidini açın",
"message": "Hesap kilidini aç",
"description": "Button text to display in overlay when the account is locked."
},
"fillCredentialsFor": {
"message": "Kimlik bilgilerini doldurun",
"message": "Bilgileri doldur",
"description": "Screen reader text for when overlay item is in focused"
},
"partialUsername": {
@@ -2523,15 +2523,15 @@
"description": "Screen reader text for when a login item is focused where a partial username is displayed. SR will announce this phrase before reading the text of the partial username"
},
"noItemsToShow": {
"message": "Gösterilecek öğe yok",
"message": "Gösterilecek kayıt yok",
"description": "Text to show in overlay if there are no matching items"
},
"newItem": {
"message": "Yeni öge",
"message": "Yeni kayıt",
"description": "Button text to display in overlay when there are no matching items"
},
"addNewVaultItem": {
"message": "Add new vault item",
"message": "Kasaya yeni kayıt ekle",
"description": "Screen reader text (aria-label) for new item button in overlay"
},
"bitwardenOverlayMenuAvailable": {
@@ -2543,7 +2543,7 @@
"description": "Dialog title facilitating the ability to override a chrome browser's default autofill behavior"
},
"overrideBrowserAutofillDescription": {
"message": "Bu ayarı kapalı bırakmak, Bitwarden otomatik doldurma menüsü ile tarayıcınızınki arasında çakışmalara neden olabilir.",
"message": "Bu ayarı kapalı bırakırsanız Bitwarden otomatik doldurma menüsüyle tarayıcınızınki arasında çakışma yaşanabilir.",
"description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior"
},
"overrideBrowserAutofillPrivacyRequiredDescription": {
@@ -2551,10 +2551,10 @@
"description": "Dialog message facilitating the ability to override a chrome browser's default autofill behavior"
},
"turnOn": {
"message": "Turn on"
"message": ""
},
"ignore": {
"message": "Yoksay"
"message": "Yok say"
},
"overrideBrowserAutoFillSettings": {
"message": "Tarayıcının otomatik doldurma ayarlarını geçersiz kıl",
@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Dosya parolasını onaylayın"
},
"typePasskey": {
"message": "Geçiş anahtarı"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Підтвердьте пароль файлу"
},
"typePasskey": {
"message": "Ключ доступу"
},
"passkeyNotCopied": {
"message": "Ключ доступу не буде скопійовано"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "Confirm file password"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "Passkey will not be copied"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "确认文件密码"
},
"typePasskey": {
"message": "通行密钥"
},
"passkeyNotCopied": {
"message": "通行密钥不会被复制"
},

View File

@@ -2679,6 +2679,9 @@
"confirmFilePassword": {
"message": "確認檔案密碼"
},
"typePasskey": {
"message": "Passkey"
},
"passkeyNotCopied": {
"message": "密碼金鑰不會被複製"
},

View File

@@ -18,12 +18,12 @@ export type OrganizationServiceInitOptions = OrganizationServiceFactoryOptions &
export function organizationServiceFactory(
cache: { organizationService?: AbstractOrganizationService } & CachedServices,
opts: OrganizationServiceInitOptions
opts: OrganizationServiceInitOptions,
): Promise<AbstractOrganizationService> {
return factory(
cache,
"organizationService",
opts,
async () => new BrowserOrganizationService(await stateServiceFactory(cache, opts))
async () => new BrowserOrganizationService(await stateServiceFactory(cache, opts)),
);
}

View File

@@ -24,7 +24,7 @@ export type PolicyServiceInitOptions = PolicyServiceFactoryOptions &
export function policyServiceFactory(
cache: { policyService?: AbstractPolicyService } & CachedServices,
opts: PolicyServiceInitOptions
opts: PolicyServiceInitOptions,
): Promise<AbstractPolicyService> {
return factory(
cache,
@@ -33,7 +33,7 @@ export function policyServiceFactory(
async () =>
new BrowserPolicyService(
await stateServiceFactory(cache, opts),
await organizationServiceFactory(cache, opts)
)
await organizationServiceFactory(cache, opts),
),
);
}

View File

@@ -38,7 +38,7 @@ export class BrowserPolicyService extends PolicyService {
if (activated === undefined) {
this.stateService.setActivateAutoFillOnPageLoadFromPolicy(!autofillEnabled);
}
})
}),
);
}
}

View File

@@ -28,7 +28,7 @@ export type AccountServiceInitOptions = AccountServiceFactoryOptions &
export function accountServiceFactory(
cache: { accountService?: AccountService } & CachedServices,
opts: AccountServiceInitOptions
opts: AccountServiceInitOptions,
): Promise<AccountService> {
return factory(
cache,
@@ -38,7 +38,7 @@ export function accountServiceFactory(
new AccountServiceImplementation(
await messagingServiceFactory(cache, opts),
await logServiceFactory(cache, opts),
await globalStateProviderFactory(cache, opts)
)
await globalStateProviderFactory(cache, opts),
),
);
}

View File

@@ -18,12 +18,12 @@ export type AuthRequestCryptoServiceInitOptions = AuthRequestCryptoServiceFactor
export function authRequestCryptoServiceFactory(
cache: { authRequestCryptoService?: AuthRequestCryptoServiceAbstraction } & CachedServices,
opts: AuthRequestCryptoServiceInitOptions
opts: AuthRequestCryptoServiceInitOptions,
): Promise<AuthRequestCryptoServiceAbstraction> {
return factory(
cache,
"authRequestCryptoService",
opts,
async () => new AuthRequestCryptoServiceImplementation(await cryptoServiceFactory(cache, opts))
async () => new AuthRequestCryptoServiceImplementation(await cryptoServiceFactory(cache, opts)),
);
}

View File

@@ -89,7 +89,7 @@ export type AuthServiceInitOptions = AuthServiceFactoyOptions &
export function authServiceFactory(
cache: { authService?: AbstractAuthService } & CachedServices,
opts: AuthServiceInitOptions
opts: AuthServiceInitOptions,
): Promise<AbstractAuthService> {
return factory(
cache,
@@ -113,7 +113,7 @@ export function authServiceFactory(
await passwordStrengthServiceFactory(cache, opts),
await policyServiceFactory(cache, opts),
await deviceTrustCryptoServiceFactory(cache, opts),
await authRequestCryptoServiceFactory(cache, opts)
)
await authRequestCryptoServiceFactory(cache, opts),
),
);
}

View File

@@ -53,7 +53,7 @@ export type DeviceTrustCryptoServiceInitOptions = DeviceTrustCryptoServiceFactor
export function deviceTrustCryptoServiceFactory(
cache: { deviceTrustCryptoService?: DeviceTrustCryptoServiceAbstraction } & CachedServices,
opts: DeviceTrustCryptoServiceInitOptions
opts: DeviceTrustCryptoServiceInitOptions,
): Promise<DeviceTrustCryptoServiceAbstraction> {
return factory(
cache,
@@ -68,7 +68,7 @@ export function deviceTrustCryptoServiceFactory(
await appIdServiceFactory(cache, opts),
await devicesApiServiceFactory(cache, opts),
await i18nServiceFactory(cache, opts),
await platformUtilsServiceFactory(cache, opts)
)
await platformUtilsServiceFactory(cache, opts),
),
);
}

View File

@@ -50,7 +50,7 @@ export type KeyConnectorServiceInitOptions = KeyConnectorServiceFactoryOptions &
export function keyConnectorServiceFactory(
cache: { keyConnectorService?: AbstractKeyConnectorService } & CachedServices,
opts: KeyConnectorServiceInitOptions
opts: KeyConnectorServiceInitOptions,
): Promise<AbstractKeyConnectorService> {
return factory(
cache,
@@ -65,7 +65,7 @@ export function keyConnectorServiceFactory(
await logServiceFactory(cache, opts),
await organizationServiceFactory(cache, opts),
await cryptoFunctionServiceFactory(cache, opts),
opts.keyConnectorServiceOptions.logoutCallback
)
opts.keyConnectorServiceOptions.logoutCallback,
),
);
}

View File

@@ -17,12 +17,12 @@ export type TokenServiceInitOptions = TokenServiceFactoryOptions & StateServiceI
export function tokenServiceFactory(
cache: { tokenService?: AbstractTokenService } & CachedServices,
opts: TokenServiceInitOptions
opts: TokenServiceInitOptions,
): Promise<AbstractTokenService> {
return factory(
cache,
"tokenService",
opts,
async () => new TokenService(await stateServiceFactory(cache, opts))
async () => new TokenService(await stateServiceFactory(cache, opts)),
);
}

View File

@@ -23,7 +23,7 @@ export type TwoFactorServiceInitOptions = TwoFactorServiceFactoryOptions &
export async function twoFactorServiceFactory(
cache: { twoFactorService?: AbstractTwoFactorService } & CachedServices,
opts: TwoFactorServiceInitOptions
opts: TwoFactorServiceInitOptions,
): Promise<AbstractTwoFactorService> {
const service = await factory(
cache,
@@ -32,8 +32,8 @@ export async function twoFactorServiceFactory(
async () =>
new TwoFactorService(
await i18nServiceFactory(cache, opts),
await platformUtilsServiceFactory(cache, opts)
)
await platformUtilsServiceFactory(cache, opts),
),
);
service.init();
return service;

View File

@@ -18,12 +18,12 @@ export type UserVerificationApiServiceInitOptions = UserVerificationApiServiceFa
export function userVerificationApiServiceFactory(
cache: { userVerificationApiService?: UserVerificationApiServiceAbstraction } & CachedServices,
opts: UserVerificationApiServiceInitOptions
opts: UserVerificationApiServiceInitOptions,
): Promise<UserVerificationApiServiceAbstraction> {
return factory(
cache,
"userVerificationApiService",
opts,
async () => new UserVerificationApiService(await apiServiceFactory(cache, opts))
async () => new UserVerificationApiService(await apiServiceFactory(cache, opts)),
);
}

View File

@@ -34,7 +34,7 @@ export type UserVerificationServiceInitOptions = UserVerificationServiceFactoryO
export function userVerificationServiceFactory(
cache: { userVerificationService?: AbstractUserVerificationService } & CachedServices,
opts: UserVerificationServiceInitOptions
opts: UserVerificationServiceInitOptions,
): Promise<AbstractUserVerificationService> {
return factory(
cache,
@@ -45,7 +45,7 @@ export function userVerificationServiceFactory(
await stateServiceFactory(cache, opts),
await cryptoServiceFactory(cache, opts),
await i18nServiceFactory(cache, opts),
await userVerificationApiServiceFactory(cache, opts)
)
await userVerificationApiServiceFactory(cache, opts),
),
);
}

View File

@@ -17,7 +17,7 @@ import { BrowserRouterService } from "../../platform/popup/services/browser-rout
*/
export const fido2AuthGuard: CanActivateFn = async (
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
state: RouterStateSnapshot,
) => {
const routerService = inject(BrowserRouterService);
const authService = inject(AuthService);

View File

@@ -1,13 +1,18 @@
import { Component } from "@angular/core";
import { Router } from "@angular/router";
import { BrowserRouterService } from "../../../platform/popup/services/browser-router.service";
import { AccountSwitcherService } from "../services/account-switcher.service";
@Component({
templateUrl: "account-switcher.component.html",
})
export class AccountSwitcherComponent {
constructor(private accountSwitcherService: AccountSwitcherService, private router: Router) {}
constructor(
private accountSwitcherService: AccountSwitcherService,
private router: Router,
private routerService: BrowserRouterService,
) {}
get accountOptions$() {
return this.accountSwitcherService.accountOptions$;
@@ -15,6 +20,6 @@ export class AccountSwitcherComponent {
async selectAccount(id: string) {
await this.accountSwitcherService.selectAccount(id);
this.router.navigate(["/home"]);
this.router.navigate([this.routerService.getPreviousUrl() ?? "/home"]);
}
}

View File

@@ -1,5 +1,5 @@
<div *ngIf="currentAccount$ | async as currentAccount">
<div (click)="currentAccountClicked()" class="tw-mr-1 tw-mt-1">
<bit-avatar [id]="currentAccount.id" [text]="currentAccount.name"></bit-avatar>
<bit-avatar [id]="currentAccount.id" [text]="currentAccountName$ | async"></bit-avatar>
</div>
</div>

View File

@@ -1,20 +1,33 @@
import { Component } from "@angular/core";
import { Router } from "@angular/router";
import { map } from "rxjs";
import { AccountService } from "@bitwarden/common/auth/abstractions/account.service";
import { Utils } from "@bitwarden/common/platform/misc/utils";
@Component({
selector: "app-current-account",
templateUrl: "current-account.component.html",
})
export class CurrentAccountComponent {
constructor(private accountService: AccountService, private router: Router) {}
constructor(
private accountService: AccountService,
private router: Router,
) {}
get currentAccount$() {
return this.accountService.activeAccount$;
}
currentAccountClicked() {
this.router.navigate(["/account-switcher"]);
get currentAccountName$() {
return this.currentAccount$.pipe(
map((a) => {
return Utils.isNullOrWhitespace(a.name) ? a.email : a.name;
}),
);
}
async currentAccountClicked() {
await this.router.navigate(["/account-switcher"]);
}
}

View File

@@ -20,7 +20,7 @@ export class EnvironmentComponent extends BaseEnvironmentComponent implements On
public environmentService: BrowserEnvironmentService,
i18nService: I18nService,
private router: Router,
modalService: ModalService
modalService: ModalService,
) {
super(platformUtilsService, environmentService, i18nService, modalService);
this.showCustom = true;

View File

@@ -20,7 +20,7 @@ export class HintComponent extends BaseHintComponent {
apiService: ApiService,
logService: LogService,
private route: ActivatedRoute,
loginService: LoginService
loginService: LoginService,
) {
super(router, i18nService, apiService, platformUtilsService, logService, loginService);

View File

@@ -32,7 +32,7 @@ export class HomeComponent implements OnInit, OnDestroy {
private router: Router,
private i18nService: I18nService,
private environmentService: EnvironmentService,
private loginService: LoginService
private loginService: LoginService,
) {}
async ngOnInit(): Promise<void> {
@@ -73,7 +73,7 @@ export class HomeComponent implements OnInit, OnDestroy {
this.platformUtilsService.showToast(
"error",
this.i18nService.t("errorOccured"),
this.i18nService.t("invalidEmail")
this.i18nService.t("invalidEmail"),
);
return;
}

View File

@@ -70,7 +70,7 @@
: ("yourVaultIsLocked" | i18n)
}}
</p>
{{ "loggedInAsOn" | i18n : email : webVaultHostname }}
{{ "loggedInAsOn" | i18n: email : webVaultHostname }}
</div>
</div>
<div class="box" *ngIf="biometricLock">

View File

@@ -56,7 +56,7 @@ export class LockComponent extends BaseLockComponent {
dialogService: DialogService,
deviceTrustCryptoService: DeviceTrustCryptoServiceAbstraction,
userVerificationService: UserVerificationService,
private routerService: BrowserRouterService
private routerService: BrowserRouterService,
) {
super(
router,
@@ -76,7 +76,7 @@ export class LockComponent extends BaseLockComponent {
passwordStrengthService,
dialogService,
deviceTrustCryptoService,
userVerificationService
userVerificationService,
);
this.successRoute = "/tabs/current";
this.isInitialLockScreen = (window as any).previousPopupUrl == null;

View File

@@ -48,7 +48,7 @@ export class LoginViaAuthRequestComponent
syncService: SyncService,
deviceTrustCryptoService: DeviceTrustCryptoServiceAbstraction,
authReqCryptoService: AuthRequestCryptoServiceAbstraction,
private location: Location
private location: Location,
) {
super(
router,
@@ -67,7 +67,7 @@ export class LoginViaAuthRequestComponent
stateService,
loginService,
deviceTrustCryptoService,
authReqCryptoService
authReqCryptoService,
);
super.onSuccessfulLogin = async () => {
await syncService.fullSync(true);

View File

@@ -45,7 +45,7 @@ export class LoginComponent extends BaseLoginComponent {
formValidationErrorService: FormValidationErrorsService,
route: ActivatedRoute,
loginService: LoginService,
webAuthnLoginService: WebAuthnLoginServiceAbstraction
webAuthnLoginService: WebAuthnLoginServiceAbstraction,
) {
super(
devicesApiService,
@@ -64,7 +64,7 @@ export class LoginComponent extends BaseLoginComponent {
formValidationErrorService,
route,
loginService,
webAuthnLoginService
webAuthnLoginService,
);
super.onSuccessfulLogin = async () => {
await syncService.fullSync(true);
@@ -123,7 +123,7 @@ export class LoginComponent extends BaseLoginComponent {
"&codeChallenge=" +
codeChallenge +
"&email=" +
encodeURIComponent(this.formGroup.controls.email.value)
encodeURIComponent(this.formGroup.controls.email.value),
);
}
}

View File

@@ -38,7 +38,7 @@ export class RegisterComponent extends BaseRegisterComponent {
environmentService: EnvironmentService,
logService: LogService,
auditService: AuditService,
dialogService: DialogService
dialogService: DialogService,
) {
super(
formValidationErrorService,
@@ -54,7 +54,7 @@ export class RegisterComponent extends BaseRegisterComponent {
environmentService,
logService,
auditService,
dialogService
dialogService,
);
}
}

View File

@@ -10,7 +10,7 @@
<div class="box">
<div class="box-content">
<div class="box-content-row" appBoxRow>
<p>{{ "convertOrganizationEncryptionDesc" | i18n : organization.name }}</p>
<p>{{ "convertOrganizationEncryptionDesc" | i18n: organization.name }}</p>
</div>
<div class="box-content-row">
<button

View File

@@ -26,7 +26,7 @@ describe("AccountSwitcherService", () => {
accountSwitcherService = new AccountSwitcherService(
accountService,
stateService,
messagingService
messagingService,
);
});
@@ -45,7 +45,7 @@ describe("AccountSwitcherService", () => {
activeAccountSubject.next(Object.assign(user1AccountInfo, { id: "1" as UserId }));
const accounts = await firstValueFrom(
accountSwitcherService.accountOptions$.pipe(timeout(20))
accountSwitcherService.accountOptions$.pipe(timeout(20)),
);
expect(accounts).toHaveLength(2);
expect(accounts[0].id).toBe("1");
@@ -68,7 +68,7 @@ describe("AccountSwitcherService", () => {
}
accountsSubject.next(seedAccounts);
activeAccountSubject.next(
Object.assign(seedAccounts["1" as UserId], { id: "1" as UserId })
Object.assign(seedAccounts["1" as UserId], { id: "1" as UserId }),
);
const accounts = await firstValueFrom(accountSwitcherService.accountOptions$);
@@ -77,7 +77,7 @@ describe("AccountSwitcherService", () => {
accounts.forEach((account) => {
expect(account.id).not.toBe("addAccount");
});
}
},
);
});
@@ -99,7 +99,7 @@ describe("AccountSwitcherService", () => {
"switchAccount",
matches((payload) => {
return payload.userId === "1";
})
}),
);
});
});

View File

@@ -15,7 +15,7 @@ export class AccountSwitcherService {
constructor(
private accountService: AccountService,
private stateService: StateService,
private messagingService: MessagingService
private messagingService: MessagingService,
) {}
get accountOptions$() {
@@ -31,7 +31,7 @@ export class AccountSwitcherService {
id: id,
isSelected: id === activeAccount?.id,
};
}
},
);
if (!hasMaxAccounts) {
@@ -43,7 +43,7 @@ export class AccountSwitcherService {
}
return options;
})
}),
);
}
@@ -54,7 +54,7 @@ export class AccountSwitcherService {
return;
}
this.accountService.switchAccount(id as UserId);
await this.accountService.switchAccount(id as UserId);
this.messagingService.send("switchAccount", { userId: id });
}
}

View File

@@ -36,7 +36,7 @@ export class SetPasswordComponent extends BaseSetPasswordComponent {
route: ActivatedRoute,
organizationApiService: OrganizationApiServiceAbstraction,
organizationUserService: OrganizationUserService,
dialogService: DialogService
dialogService: DialogService,
) {
super(
i18nService,
@@ -53,7 +53,7 @@ export class SetPasswordComponent extends BaseSetPasswordComponent {
stateService,
organizationApiService,
organizationUserService,
dialogService
dialogService,
);
}
}

View File

@@ -37,7 +37,7 @@ export class SsoComponent extends BaseSsoComponent {
environmentService: EnvironmentService,
logService: LogService,
configService: ConfigServiceAbstraction,
@Inject(WINDOW) private win: Window
@Inject(WINDOW) private win: Window,
) {
super(
authService,
@@ -51,7 +51,7 @@ export class SsoComponent extends BaseSsoComponent {
environmentService,
passwordGenerationService,
logService,
configService
configService,
);
const url = this.environmentService.getWebVaultUrl();

View File

@@ -16,7 +16,7 @@ export class TwoFactorOptionsComponent extends BaseTwoFactorOptionsComponent {
router: Router,
i18nService: I18nService,
platformUtilsService: PlatformUtilsService,
private activatedRoute: ActivatedRoute
private activatedRoute: ActivatedRoute,
) {
super(twoFactorService, router, i18nService, platformUtilsService, window);
}

Some files were not shown because too many files have changed in this diff Show More