1
0
mirror of https://github.com/bitwarden/mobile synced 2026-01-11 13:04:00 +00:00

Compare commits

..

27 Commits

Author SHA1 Message Date
Vince Grassia
e5569b13b7 Fix build pipeline MAUI version (#3354)
(cherry picked from commit 3262fdc9ec)
2024-07-16 08:52:32 -04:00
Carlos Gonçalves
5e98954c9e pm-9483 Update model attachments (#3344) 2024-07-08 17:08:03 +01:00
Vince Grassia
1294cd5c69 Fix build numbers 2024-07-02 13:30:08 -04:00
Bitwarden DevOps
463d837fa8 Bumped version to 2024.7.0 (#3341) 2024-07-01 17:15:59 +00:00
Matt Czech
ad6ffad5d1 [PM-9043] BIT-2356: Update casing of Bitwarden Help Center string (#3305) 2024-06-19 21:00:59 +00:00
Federico Maccaroni
9edcc8b4f7 [AC-2788] Remove unassigned items feature flag and logic (#3300) 2024-06-19 08:57:04 -03:00
Álison Fernandes
cf5c5aa114 [PM-8392] Enables the Cipher Key Encryption preprocessor define (#3266) 2024-06-18 13:41:49 +01:00
github-actions[bot]
36c7beb1e6 Autosync Crowdin Translations (#3297)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
2024-06-14 08:23:03 +00:00
Bitwarden DevOps
f6d798af94 Bump version to 2024.6.1 (#3296) 2024-06-13 15:50:57 +00:00
Michał Chęciński
08ed70d5b1 Fix release (#3294) 2024-06-13 08:40:18 -07:00
André Bispo
33e0187460 [PM-8814] Remove EU feature flag (#3291) 2024-06-12 14:32:04 +01:00
github-actions[bot]
2b78859d06 Autosync Crowdin Translations (#3283)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
2024-06-07 06:12:26 +00:00
Federico Maccaroni
81205154c4 [PM-8666] Fix Password Autofill from Quick Type on iOS < 17 (#3282) 2024-06-06 16:30:51 -03:00
Michał Chęciński
14d2660b61 [BRE-94] Replace dawidd6/action-download-artifact with bitwarden/gh-actions/download-artifacts (#3278) 2024-06-04 16:25:56 +02:00
renovate[bot]
bad5673724 [deps]: Update crowdin/github-action action to v2 (#3271)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-06-03 16:51:08 -04:00
Bitwarden DevOps
67b76a777e Bump version to 2024.6.0 (#3274) 2024-06-03 18:33:00 +00:00
github-actions[bot]
02f5936fce Autosync Crowdin Translations (#3269)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
2024-05-31 06:15:27 +00:00
github-actions[bot]
fc208b08d7 Autosync the updated translations (#3267)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
2024-05-29 20:07:32 +00:00
Alex Urbina
f165135147 BRE-87 ADD: Slack notification enable feature and check in version-bump workflow (#3264) 2024-05-27 15:33:11 -06:00
github-actions[bot]
d458f17ad6 Autosync the updated translations (#3257)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
2024-05-24 12:09:19 +00:00
Alex Urbina
c3bd4b84b1 BRE-40 ADD: step to report upcoming release version to Slack (#3247) 2024-05-21 11:15:00 -06:00
renovate[bot]
0af78d0e03 [deps]: Update gh minor (#3252)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-21 11:06:29 -04:00
github-actions[bot]
e86a01a7db Autosync the updated translations (#3255)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
2024-05-20 08:33:29 +00:00
github-actions[bot]
e16074a73e Autosync the updated translations (#3250)
Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com>
2024-05-17 10:36:01 +00:00
Vince Grassia
a333e72448 Update F-Droid release process (#3249) 2024-05-17 00:15:17 -03:00
Bitwarden DevOps
ffb7b3b8ac Bumped version to 2024.5.2 (#3248) 2024-05-16 22:33:03 +00:00
Federico Maccaroni
c8d0db9f31 PM-8051 Fix 2FA launch from iOS autofill, was missing passing appOptions to the App (#3244) 2024-05-15 13:25:27 -03:00
50 changed files with 252 additions and 426 deletions

View File

@@ -24,7 +24,7 @@ jobs:
hotfix_branch_exists: ${{ steps.branch-check.outputs.hotfix_branch_exists }}
steps:
- name: Checkout repo
uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
with:
submodules: 'true'
@@ -80,7 +80,7 @@ jobs:
echo "GitHub event: $GITHUB_EVENT"
- name: Checkout repo
uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
with:
fetch-depth: 0
ref: ${{ inputs.ref }}

View File

@@ -21,7 +21,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Checkout repo
uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
- name: Set up CLOC
run: |
@@ -40,7 +40,7 @@ jobs:
hotfix_branch_exists: ${{ steps.branch-check.outputs.hotfix_branch_exists }}
steps:
- name: Checkout repo
uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
with:
submodules: 'true'
@@ -85,11 +85,6 @@ jobs:
- name: Set up MSBuild
uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # v2.0.0
# This step might be obsolete at some point as .NET MAUI workloads
# are starting to come pre-installed on the GH Actions build agents.
- name: Install MAUI Workload
run: dotnet workload install maui --ignore-failed-sources
- name: Setup Windows builder
run: choco install checksum --no-progress
@@ -109,7 +104,7 @@ jobs:
echo "GitHub event: $GITHUB_EVENT"
- name: Checkout repo
uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
with:
fetch-depth: 0
@@ -145,7 +140,7 @@ jobs:
- name: Increment version
run: |
BUILD_NUMBER=$((3000 + $GITHUB_RUN_NUMBER))
BUILD_NUMBER=$((11000 + $GITHUB_RUN_NUMBER))
echo "##### Setting Android Version Code to $BUILD_NUMBER" | tee -a $GITHUB_STEP_SUMMARY
sed -i "s/android:versionCode=\"1\"/android:versionCode=\"$BUILD_NUMBER\"/" \
@@ -312,11 +307,6 @@ jobs:
- name: Set up MSBuild
uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # v2.0.0
# This step might be obsolete at some point as .NET MAUI workloads
# are starting to come pre-installed on the GH Actions build agents.
- name: Install MAUI Workload
run: dotnet workload install maui --ignore-failed-sources
- name: Setup Windows builder
run: choco install checksum --no-progress
@@ -335,7 +325,7 @@ jobs:
echo "GitHub event: $GITHUB_EVENT"
- name: Checkout repo
uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
- name: Login to Azure - CI Subscription
uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0
@@ -354,7 +344,7 @@ jobs:
- name: Increment version
run: |
BUILD_NUMBER=$((3000 + $GITHUB_RUN_NUMBER))
BUILD_NUMBER=$((11000 + $GITHUB_RUN_NUMBER))
echo "##### Setting F-Droid Version Code to $BUILD_NUMBER" | tee -a $GITHUB_STEP_SUMMARY
sed -i "s/android:versionCode=\"1\"/android:versionCode=\"$BUILD_NUMBER\"/" \
@@ -470,7 +460,7 @@ jobs:
echo "GitHub event: $GITHUB_EVENT"
- name: Checkout repo
uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
with:
submodules: 'true'
@@ -519,7 +509,7 @@ jobs:
- name: Increment version
run: |
BUILD_NUMBER=$((100 + $GITHUB_RUN_NUMBER))
BUILD_NUMBER=$((8000 + $GITHUB_RUN_NUMBER))
echo "##### Setting iOS CFBundleVersion to $BUILD_NUMBER" | tee -a $GITHUB_STEP_SUMMARY
perl -0777 -pi.bak -e 's/<key>CFBundleVersion<\/key>\s*<string>1<\/string>/<key>CFBundleVersion<\/key>\n\t<string>'"$BUILD_NUMBER"'<\/string>/' ./${{ env.ios_folder_path }}/Info.plist
@@ -718,7 +708,7 @@ jobs:
_CROWDIN_PROJECT_ID: "269690"
steps:
- name: Checkout repo
uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
- name: Login to Azure - CI Subscription
uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0
@@ -733,7 +723,7 @@ jobs:
secrets: "crowdin-api-token"
- name: Upload Sources
uses: crowdin/github-action@8c663f791efc0498270241e9923a8853c99a3a8e # v1.20.3
uses: crowdin/github-action@61ac8b980551f674046220c3e104bddae2916ac5 # v2.0.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }}

View File

@@ -24,7 +24,7 @@ jobs:
secrets: "github-pat-bitwarden-devops-bot-repo-scope"
- name: Checkout main
uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
with:
ref: main
token: ${{ steps.retrieve-bot-secrets.outputs.github-pat-bitwarden-devops-bot-repo-scope }}

View File

@@ -15,7 +15,7 @@ jobs:
_CROWDIN_PROJECT_ID: "269690"
steps:
- name: Checkout repo
uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
- name: Login to Azure - CI Subscription
uses: Azure/login@e15b166166a8746d1a47596803bd8c1b595455cf # v1.6.0
@@ -30,7 +30,7 @@ jobs:
secrets: "crowdin-api-token, github-gpg-private-key, github-gpg-private-key-passphrase"
- name: Download translations
uses: crowdin/github-action@8c663f791efc0498270241e9923a8853c99a3a8e # v1.20.3
uses: crowdin/github-action@61ac8b980551f674046220c3e104bddae2916ac5 # v2.0.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }}

View File

@@ -38,7 +38,7 @@ jobs:
fi
- name: Checkout repo
uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
- name: Check Release Version
id: version
@@ -65,25 +65,31 @@ jobs:
description: 'Deployment ${{ steps.version.outputs.version }} from branch ${{ steps.branch.outputs.branch-name }}'
task: release
- name: Download all artifacts
if: ${{ inputs.release_type != 'Dry Run' }}
uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # v3.1.4
uses: bitwarden/gh-actions/download-artifacts@main
with:
workflow: build.yml
workflow_conclusion: success
branch: ${{ steps.branch.outputs.branch-name }}
skip_unpack: true
- name: Dry Run - Download all artifacts
if: ${{ inputs.release_type == 'Dry Run' }}
uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # v3.1.4
uses: bitwarden/gh-actions/download-artifacts@main
with:
workflow: build.yml
workflow_conclusion: success
branch: main
skip_unpack: true
- name: Prep Bitwarden iOS release asset
run: zip -r Bitwarden\ iOS.zip Bitwarden\ iOS
- name: Unzip release assets
run: |
unzip bw-android-apk-sha256.txt.zip -d bw-android-apk-sha256.txt
unzip bw-fdroid-apk-sha256.txt.zip -d bw-fdroid-apk-sha256.txt
unzip com.x8bit.bitwarden-fdroid.apk.zip -d com.x8bit.bitwarden-fdroid.apk
unzip com.x8bit.bitwarden.aab.zip -d com.x8bit.bitwarden.aab
unzip com.x8bit.bitwarden.apk.zip -d com.x8bit.bitwarden.apk
- name: Create release
if: ${{ inputs.release_type != 'Dry Run' }}
@@ -126,11 +132,11 @@ jobs:
if: inputs.fdroid_publish
steps:
- name: Checkout repo
uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
- name: Download F-Droid .apk artifact
if: ${{ inputs.release_type != 'Dry Run' }}
uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # v3.1.4
uses: bitwarden/gh-actions/download-artifacts@main
with:
workflow: build.yml
workflow_conclusion: success
@@ -139,7 +145,7 @@ jobs:
- name: Dry Run - Download F-Droid .apk artifact
if: ${{ inputs.release_type == 'Dry Run' }}
uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # v3.1.4
uses: bitwarden/gh-actions/download-artifacts@main
with:
workflow: build.yml
workflow_conclusion: success
@@ -152,9 +158,7 @@ jobs:
node-version: '16.x'
- name: Set up F-Droid server
run: |
sudo apt-get -qq update
sudo apt-get -qqy install --no-install-recommends fdroidserver wget
run: pip install git+https://gitlab.com/fdroid/fdroidserver.git
- name: Set up Git credentials
env:
@@ -167,9 +171,10 @@ jobs:
- name: Print environment
run: |
node --version
npm --version
git --version
echo "Node Version: $(node --version)"
echo "NPM Version: $(npm --version)"
echo "Git Version: $(git --version)"
echo "F-Droid Server Version: $(fdroid --version)"
echo "GitHub ref: $GITHUB_REF"
echo "GitHub event: $GITHUB_EVENT"
@@ -194,27 +199,30 @@ jobs:
env:
FDROID_STORE_KEYSTORE_PASSWORD: ${{ secrets.FDROID_STORE_KEYSTORE_PASSWORD }}
run: |
cd $GITHUB_WORKSPACE
# Create required directories.
mkdir dist
cp CNAME ./dist
cd store
chmod 600 fdroid/config.py fdroid/keystore.jks
mkdir -p temp/fdroid
mkdir -p store/temp/fdroid
mkdir -p store/fdroid/repo
# Configure F-Droid server.
cp CNAME dist/
chmod 600 store/fdroid/config.yml store/fdroid/keystore.jks
TEMP_DIR="$GITHUB_WORKSPACE/store/temp/fdroid"
cd fdroid
echo "keypass=\"$FDROID_STORE_KEYSTORE_PASSWORD\"" >>config.py
echo "keystorepass=\"$FDROID_STORE_KEYSTORE_PASSWORD\"" >>config.py
echo "local_copy_dir=\"$TEMP_DIR\"" >>config.py
mkdir -p repo
mv $GITHUB_WORKSPACE/com.x8bit.bitwarden-fdroid.apk ./repo/
echo "keypass: $FDROID_STORE_KEYSTORE_PASSWORD" >> store/fdroid/config.yml
echo "keystorepass: $FDROID_STORE_KEYSTORE_PASSWORD" >> store/fdroid/config.yml
echo "local_copy_dir: $TEMP_DIR" >> store/fdroid/config.yml
mv $GITHUB_WORKSPACE/com.x8bit.bitwarden-fdroid.apk store/fdroid/repo/
# Run update and deploy.
cd store/fdroid
fdroid update
fdroid server update
cd ..
rm -rf temp/fdroid/archive
mv -v temp/fdroid ../dist
cd fdroid
cp index.html btn.png qr.png ../../dist/fdroid
cd $GITHUB_WORKSPACE
fdroid deploy
cd ../..
# Move files for distribution.
rm -rf store/temp/fdroid/archive
mv -v store/temp/fdroid dist
cp store/fdroid/index.html store/fdroid/btn.png store/fdroid/qr.png dist/fdroid
- name: Deploy to gh-pages
if: ${{ inputs.release_type != 'Dry Run' }}

View File

@@ -12,6 +12,10 @@ on:
description: "Cut RC branch?"
default: true
type: boolean
enable_slack_notification:
description: "Enable Slack notifications for upcoming release?"
default: false
type: boolean
jobs:
bump_version:
@@ -26,8 +30,16 @@ jobs:
with:
version: ${{ inputs.version_number_override }}
- name: Slack Notification Check
run: |
if [[ "${{ inputs.enable_slack_notification }}" == true ]]; then
echo "Slack notifications enabled."
else
echo "Slack notifications disabled."
fi
- name: Checkout Branch
uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
with:
ref: main
@@ -257,6 +269,14 @@ jobs:
PR_NUMBER: ${{ steps.create-pr.outputs.pr_number }}
run: gh pr merge $PR_NUMBER --squash --auto --delete-branch
- name: Report upcoming release version to Slack
if: ${{ steps.version-changed.outputs.changes_to_commit == 'TRUE' && inputs.enable_slack_notification == true }}
uses: bitwarden/gh-actions/report-upcoming-release-version@main
with:
version: ${{ steps.set-final-version-output.outputs.version }}
project: ${{ github.repository }}
AZURE_KV_CI_SERVICE_PRINCIPAL: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}
cut_rc:
name: Cut RC branch
if: ${{ inputs.cut_rc_branch == true }}
@@ -264,7 +284,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Checkout Branch
uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
with:
ref: main

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:versionCode="1" android:versionName="2024.5.1" android:installLocation="internalOnly" package="com.x8bit.bitwarden">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:versionCode="1" android:versionName="2024.7.0" android:installLocation="internalOnly" package="com.x8bit.bitwarden">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="34" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.NFC" />
@@ -24,7 +24,7 @@
<meta-data android:name="com.samsung.android.sdk.multiwindow.penwindow.enable" android:value="true" />
<!-- Support for LG "Dual Window" mode (for Android < 7.0 users) -->
<meta-data android:name="com.lge.support.SPLIT_WINDOW" android:value="true" />
<!-- Declare exported activities manually so we can set LaunchMode using API dependant resource -->
<!-- Declare MainActivity manually so we can set LaunchMode using API dependant resource -->
<activity android:name="com.x8bit.bitwarden.MainActivity" android:configChanges="keyboard|keyboardHidden|navigation|orientation|screenSize|uiMode" android:exported="true" android:icon="@mipmap/ic_launcher" android:label="Bitwarden" android:launchMode="@integer/launchModeAPIlevel" android:theme="@style/LaunchTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@@ -39,14 +39,6 @@
<data android:mimeType="text/*" />
</intent-filter>
</activity>
<activity android:name="com.x8bit.bitwarden.WebAuthCallbackActivity" android:launchMode="@integer/webAuthCallbackLaunchMode" android:noHistory="true" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="bitwarden" />
</intent-filter>
</activity>
</application>
<!-- Support for Xamarin.Essentials.Browser.OpenAsync (for Android > 11) -->
<!-- Related docs: https://learn.microsoft.com/en-us/xamarin/essentials/open-browser?tabs=android -->

View File

@@ -10,8 +10,7 @@ namespace Bit.Droid.Autofill
{
[Activity(
NoHistory = true,
LaunchMode = LaunchMode.SingleTop,
Exported = false)]
LaunchMode = LaunchMode.SingleTop)]
public class AutofillExternalSelectionActivity : MauiAppCompatActivity
{
protected override void OnCreate(Bundle bundle)

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="UTF-8" ?>
<resources>
<integer name="launchModeAPIlevel">0</integer>
<integer name="webAuthCallbackLaunchMode">1</integer>
</resources>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="UTF-8" ?>
<resources>
<integer name="launchModeAPIlevel">2</integer>
<integer name="webAuthCallbackLaunchMode">3</integer>
</resources>

View File

@@ -1,12 +1,17 @@
using Android.App;
using Android.Content.PM;
using Android.OS;
using Android.Runtime;
using Bit.App.Droid.Utilities;
namespace Bit.Droid
{
[Register("com.x8bit.bitwarden.WebAuthCallbackActivity")]
[Activity(
NoHistory = true,
LaunchMode = LaunchMode.SingleTop,
Exported = true)]
[IntentFilter(new[] { Android.Content.Intent.ActionView },
Categories = new[] { Android.Content.Intent.CategoryDefault, Android.Content.Intent.CategoryBrowsable },
DataScheme = "bitwarden")]
public class WebAuthCallbackActivity : WebAuthenticatorCallbackActivity
{
protected override void OnCreate(Bundle savedInstanceState)

View File

@@ -11,7 +11,7 @@
<key>CFBundleIdentifier</key>
<string>com.8bit.bitwarden</string>
<key>CFBundleShortVersionString</key>
<string>2024.5.1</string>
<string>2024.7.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>CFBundleIconName</key>

View File

@@ -41,7 +41,6 @@ namespace Bit.Core.Abstractions
Task<CipherResponse> PutShareCipherAsync(string id, CipherShareRequest request);
Task PutDeleteCipherAsync(string id);
Task<CipherResponse> PutRestoreCipherAsync(string id);
Task<bool> HasUnassignedCiphersAsync();
Task RefreshIdentityTokenAsync();
Task<SsoPrevalidateResponse> PreValidateSsoAsync(string identifier);
Task<TResponse> SendAsync<TRequest, TResponse>(HttpMethod method, string path,

View File

@@ -36,6 +36,5 @@ namespace Bit.Core.Abstractions
Task RestoreWithServerAsync(string id);
Task<string> CreateNewLoginForPasskeyAsync(Fido2ConfirmNewCredentialParams newPasskeyParams);
Task CopyTotpCodeIfNeededAsync(CipherView cipher);
Task<bool> VerifyOrganizationHasUnassignedItemsAsync();
}
}

View File

@@ -187,8 +187,6 @@ namespace Bit.Core.Abstractions
Task<BwRegion?> GetPreAuthRegionAsync();
Task SetPreAuthRegionAsync(BwRegion value);
Task ReloadStateAsync();
Task<bool> GetShouldCheckOrganizationUnassignedItemsAsync(string userId = null);
Task SetShouldCheckOrganizationUnassignedItemsAsync(bool shouldCheck, string userId = null);
[Obsolete("Use GetPinKeyEncryptedUserKeyAsync instead, left for migration purposes")]
Task<string> GetPinProtectedAsync(string userId = null);
[Obsolete("Use SetPinKeyEncryptedUserKeyAsync instead, left for migration purposes")]

View File

@@ -45,8 +45,6 @@ namespace Bit.Core
public const string PasswordlessLoginRequestKey = "passwordlessLoginRequest";
public const string PreLoginEmailKey = "preLoginEmailKey";
public const string ConfigsKey = "configsKey";
public const string DisplayEuEnvironmentFlag = "display-eu-environment";
public const string UnassignedItemsBannerFlag = "unassigned-items-banner";
public const string RegionEnvironment = "regionEnvironment";
public const string DuoCallback = "bitwarden://duo-callback";
public const string NavigateToMessageCommand = "navigateTo";
@@ -139,7 +137,6 @@ namespace Bit.Core
public static string ShouldConnectToWatchKey(string userId) => $"shouldConnectToWatch_{userId}";
public static string ScreenCaptureAllowedKey(string userId) => $"screenCaptureAllowed_{userId}";
public static string PendingAdminAuthRequest(string userId) => $"pendingAdminAuthRequest_{userId}";
public static string ShouldCheckOrganizationUnassignedItemsKey(string userId) => $"shouldCheckOrganizationUnassignedItems_{userId}";
[Obsolete]
public static string KeyKey(string userId) => $"key_{userId}";
[Obsolete]

View File

@@ -27,7 +27,6 @@ namespace Bit.App.Models
public bool HideAccountSwitcher { get; set; }
public OtpData? OtpData { get; set; }
public bool HasUnlockedInThisTransaction { get; set; }
public bool HasJustLoggedInOrUnlocked { get; set; }
public void SetAllFrom(AppOptions o)
{

View File

@@ -25,7 +25,6 @@ namespace Bit.App.Pages
private bool _rememberEmail;
private string _email;
private string _selectedEnvironmentName;
private bool _displayEuEnvironment;
public HomeViewModel()
{
@@ -116,7 +115,6 @@ namespace Bit.App.Pages
{
Email = await _stateService.GetRememberedEmailAsync();
RememberEmail = !string.IsNullOrEmpty(Email);
_displayEuEnvironment = await _configService.GetFeatureFlagBoolAsync(Constants.DisplayEuEnvironmentFlag, forceRefresh: true);
}
public async Task ContinueToLoginStepAsync()
@@ -158,11 +156,7 @@ namespace Bit.App.Pages
public async Task ShowEnvironmentPickerAsync()
{
_displayEuEnvironment = await _configService.GetFeatureFlagBoolAsync(Constants.DisplayEuEnvironmentFlag);
var options = _displayEuEnvironment
? new string[] { BwRegion.US.Domain(), BwRegion.EU.Domain(), AppResources.SelfHosted }
: new string[] { BwRegion.US.Domain(), AppResources.SelfHosted };
var options = new string[] { BwRegion.US.Domain(), BwRegion.EU.Domain(), AppResources.SelfHosted };
await MainThread.InvokeOnMainThreadAsync(async () =>
{
var result = await _deviceActionService.Value.DisplayActionSheetAsync(AppResources.LoggingInOn, AppResources.Cancel, null, options);

View File

@@ -232,11 +232,6 @@ namespace Bit.App.Pages
return;
}
var previousPage = await AppHelpers.ClearPreviousPage();
if (_appOptions != null)
{
_appOptions.HasJustLoggedInOrUnlocked = true;
}
App.MainPage = new TabsPage(_appOptions, previousPage);
}
}

View File

@@ -35,11 +35,6 @@ namespace Bit.App.Pages
{
return;
}
if (_appOptions != null)
{
_appOptions.HasJustLoggedInOrUnlocked = true;
}
var previousPage = await AppHelpers.ClearPreviousPage();
App.MainPage = new TabsPage(_appOptions, previousPage);
}

View File

@@ -196,11 +196,6 @@ namespace Bit.App.Pages
{
return;
}
if (_appOptions != null)
{
_appOptions.HasJustLoggedInOrUnlocked = true;
}
var previousPage = await AppHelpers.ClearPreviousPage();
App.MainPage = new TabsPage(_appOptions, previousPage);
}

View File

@@ -56,11 +56,6 @@ namespace Bit.App.Pages
{
return;
}
if (_appOptions != null)
{
_appOptions.HasJustLoggedInOrUnlocked = true;
}
var previousPage = await AppHelpers.ClearPreviousPage();
App.MainPage = new TabsPage(_appOptions, previousPage);
}

View File

@@ -71,11 +71,6 @@ namespace Bit.App.Pages
{
return;
}
if (_appOptions != null)
{
_appOptions.HasJustLoggedInOrUnlocked = true;
}
var previousPage = await AppHelpers.ClearPreviousPage();
App.MainPage = new TabsPage(_appOptions, previousPage);
}

View File

@@ -207,11 +207,6 @@ namespace Bit.App.Pages
{
return;
}
if (_appOptions != null)
{
_appOptions.HasJustLoggedInOrUnlocked = true;
}
var previousPage = await AppHelpers.ClearPreviousPage();
App.MainPage = new TabsPage(_appOptions, previousPage);
}

View File

@@ -33,7 +33,7 @@ namespace Bit.App.Pages
_keyConnectorService = ServiceContainer.Resolve<IKeyConnectorService>("keyConnectorService");
_stateService = ServiceContainer.Resolve<IStateService>();
_groupingsPage = new NavigationPage(new GroupingsPage(true, previousPage: previousPage, appOptions: appOptions))
_groupingsPage = new NavigationPage(new GroupingsPage(true, previousPage: previousPage))
{
Title = AppResources.MyVault,
IconImageSource = "lock.png"

View File

@@ -28,7 +28,7 @@ namespace Bit.App.Pages
public GroupingsPage(bool mainPage, CipherType? type = null, string folderId = null,
string collectionId = null, string pageTitle = null, string vaultFilterSelection = null,
PreviousPageInfo previousPage = null, bool deleted = false, bool showTotp = false, AppOptions appOptions = null)
PreviousPageInfo previousPage = null, bool deleted = false, bool showTotp = false)
{
_pageName = string.Concat(nameof(GroupingsPage), "_", DateTime.UtcNow.Ticks);
InitializeComponent();
@@ -51,7 +51,6 @@ namespace Bit.App.Pages
_vm.CollectionId = collectionId;
_vm.Deleted = deleted;
_vm.ShowTotp = showTotp;
_vm.AppOptions = appOptions;
_previousPage = previousPage;
if (pageTitle != null)
{
@@ -162,8 +161,6 @@ namespace Bit.App.Pages
return;
}
await _vm.CheckOrganizationUnassignedItemsAsync();
// Push registration
var lastPushRegistration = await _stateService.GetPushLastRegistrationDateAsync();
lastPushRegistration = lastPushRegistration.GetValueOrDefault(DateTime.MinValue);

View File

@@ -46,8 +46,6 @@ namespace Bit.App.Pages
private readonly IPasswordRepromptService _passwordRepromptService;
private readonly IOrganizationService _organizationService;
private readonly IPolicyService _policyService;
private readonly IConfigService _configService;
private readonly IEnvironmentService _environmentService;
private readonly ILogger _logger;
public GroupingsPageViewModel()
@@ -64,8 +62,6 @@ namespace Bit.App.Pages
_passwordRepromptService = ServiceContainer.Resolve<IPasswordRepromptService>("passwordRepromptService");
_organizationService = ServiceContainer.Resolve<IOrganizationService>("organizationService");
_policyService = ServiceContainer.Resolve<IPolicyService>("policyService");
_configService = ServiceContainer.Resolve<IConfigService>();
_environmentService = ServiceContainer.Resolve<IEnvironmentService>();
_logger = ServiceContainer.Resolve<ILogger>("logger");
Loading = true;
@@ -109,7 +105,6 @@ namespace Bit.App.Pages
public List<Core.Models.View.CollectionView> Collections { get; set; }
public List<TreeNode<Core.Models.View.CollectionView>> NestedCollections { get; set; }
public AppOptions AppOptions { get; internal set; }
protected override ICipherService cipherService => _cipherService;
protected override IPolicyService policyService => _policyService;
protected override IOrganizationService organizationService => _organizationService;
@@ -705,59 +700,5 @@ namespace Bit.App.Pages
var folders = decFolders.Where(f => _allCiphers.Any(c => c.FolderId == f.Id)).ToList();
return folders.Any() ? folders : null;
}
internal async Task CheckOrganizationUnassignedItemsAsync()
{
try
{
if (AppOptions?.HasJustLoggedInOrUnlocked != true)
{
return;
}
AppOptions.HasJustLoggedInOrUnlocked = false;
if (!await _configService.GetFeatureFlagBoolAsync(Core.Constants.UnassignedItemsBannerFlag)
||
!await _stateService.GetShouldCheckOrganizationUnassignedItemsAsync())
{
return;
}
var waitSyncTask = Task.Run(async () =>
{
while (_syncService.SyncInProgress)
{
await Task.Delay(100);
}
});
await waitSyncTask.WaitAsync(TimeSpan.FromMinutes(5));
if (!await _cipherService.VerifyOrganizationHasUnassignedItemsAsync())
{
return;
}
var message = _environmentService.SelectedRegion == Core.Enums.Region.SelfHosted
? AppResources.OrganizationUnassignedItemsMessageSelfHost041624DescriptionLong
: AppResources.OrganizationUnassignedItemsMessageUSEUDescriptionLong;
var response = await _deviceActionService.DisplayAlertAsync(AppResources.Notice,
message,
null,
AppResources.RemindMeLater,
AppResources.Ok);
if (response == AppResources.Ok)
{
await _stateService.SetShouldCheckOrganizationUnassignedItemsAsync(false);
}
}
catch (TimeoutException) { }
catch (Exception ex)
{
_logger.Exception(ex);
}
}
}
}

View File

@@ -1328,7 +1328,7 @@ namespace Bit.Core.Resources.Localization {
}
/// <summary>
/// Looks up a localized string similar to Bitwarden Help Center.
/// Looks up a localized string similar to Bitwarden help center.
/// </summary>
public static string BitwardenHelpCenter {
get {
@@ -4929,15 +4929,6 @@ namespace Bit.Core.Resources.Localization {
}
}
/// <summary>
/// Looks up a localized string similar to Notice.
/// </summary>
public static string Notice {
get {
return ResourceManager.GetString("Notice", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to This account has two-step login set up, however, none of the configured two-step providers are supported on this device. Please use a supported device and/or add additional providers that are better supported across devices (such as an authenticator app)..
/// </summary>
@@ -5173,24 +5164,6 @@ namespace Bit.Core.Resources.Localization {
}
}
/// <summary>
/// Looks up a localized string similar to On May 16, 2024, unassigned organization items will no longer be visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible..
/// </summary>
public static string OrganizationUnassignedItemsMessageSelfHost041624DescriptionLong {
get {
return ResourceManager.GetString("OrganizationUnassignedItemsMessageSelfHost041624DescriptionLong", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible..
/// </summary>
public static string OrganizationUnassignedItemsMessageUSEUDescriptionLong {
get {
return ResourceManager.GetString("OrganizationUnassignedItemsMessageUSEUDescriptionLong", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Organization identifier.
/// </summary>
@@ -5876,15 +5849,6 @@ namespace Bit.Core.Resources.Localization {
}
}
/// <summary>
/// Looks up a localized string similar to Remind me later.
/// </summary>
public static string RemindMeLater {
get {
return ResourceManager.GetString("RemindMeLater", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Remove.
/// </summary>

View File

@@ -422,7 +422,7 @@
<value>خدمة التعبئة التلقائية</value>
</data>
<data name="SetBitwardenAsPasskeyManagerDescription" xml:space="preserve">
<value>Set Bitwarden as your passkey provider in device settings.</value>
<value>تعيين Bitwarden كموفر مفتاح المرور الخاص بك في إعدادات الجهاز.</value>
</data>
<data name="AvoidAmbiguousCharacters" xml:space="preserve">
<value>تجنب الأحرف الغامضة</value>

View File

@@ -502,7 +502,7 @@
<value>Pro spuštění rozšíření klepněte na ikonu Bitwardenu v menu.</value>
</data>
<data name="ExtensionTurnOn" xml:space="preserve">
<value>Pro zapnutí Bitwardenu v prohlížeči Safari a dalších aplikacích klepněte na ikonu "Další v dolní části menu.</value>
<value>Pro zapnutí Bitwardenu v prohlížeči Safari a dalších aplikacích klepněte na ikonu "Další" v dolní části menu.</value>
</data>
<data name="Favorite" xml:space="preserve">
<value>Oblíbené</value>

View File

@@ -3001,6 +3001,6 @@ Möchtest du zu diesem Konto wechseln?</value>
<value>Der Passkey-Vorgang ist fehlgeschlagen, da die App nicht in den Asset-Links gefunden wurde</value>
</data>
<data name="PasskeyOperationFailedBecauseAppCouldNotBeVerified" xml:space="preserve">
<value>Der Passwort-Vorgang ist fehlgeschlagen, da die App nicht verifiziert werden konnte</value>
<value>Der Passkey-Vorgang ist fehlgeschlagen, da die App nicht verifiziert werden konnte</value>
</data>
</root>

View File

@@ -422,7 +422,7 @@
<value>Servicio de autocompletado</value>
</data>
<data name="SetBitwardenAsPasskeyManagerDescription" xml:space="preserve">
<value>Set Bitwarden as your passkey provider in device settings.</value>
<value>Establece Bitwarden como tu proveedor de claves de acceso en los ajustes del dispositivo.</value>
</data>
<data name="AvoidAmbiguousCharacters" xml:space="preserve">
<value>Evitar caracteres ambiguos</value>
@@ -1195,7 +1195,7 @@ El escaneo se realizará automáticamente.</value>
<value>Windows Hello</value>
</data>
<data name="BitwardenCredentialProviderGoToSettings" xml:space="preserve">
<value>We were unable to automatically open the Android credential provider settings menu for you. You can navigate to the credential provider settings menu manually from Android Settings &gt; System &gt; Passwords &amp; accounts &gt; Passwords, passkeys and data services.</value>
<value>No hemos podido abrir automáticamente el menú de ajustes del proveedor de credenciales de Android. Puedes navegar al menú de ajustes del proveedor de credenciales de Android manualmente desde Ajustes &gt; Sistema &gt; Contraseñas y cuentas &gt; Contraseñas, claves de acceso y servicios de datos.</value>
</data>
<data name="BitwardenAutofillGoToSettings" xml:space="preserve">
<value>No hemos podido abrir automáticamente las opciones de autorellenado de Android. Puedes ir al menú de opciones de autorellenado manualmente desde Ajustes de Android &gt; Sistema &gt; Idiomas y entradas &gt; Avanzado &gt; Servicio autocompletar.</value>
@@ -1822,7 +1822,7 @@ El escaneo se realizará automáticamente.</value>
<value>Bitwarden necesita atención - Activar "Sobrescribir" en "Servicios de Auto-llenado" desde la configuración de Bitwarden</value>
</data>
<data name="PasskeyManagement" xml:space="preserve">
<value>Passkey management</value>
<value>Gestión de claves de acceso</value>
</data>
<data name="AutofillServices" xml:space="preserve">
<value>Servicios de Autollenado</value>
@@ -1867,19 +1867,19 @@ El escaneo se realizará automáticamente.</value>
<value>Una política de organización está afectando sus opciones de propiedad.</value>
</data>
<data name="Send" xml:space="preserve">
<value>Envío</value>
<value>Send</value>
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="AllSends" xml:space="preserve">
<value>Todos los Envíos</value>
<value>Todos los Sends</value>
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="Sends" xml:space="preserve">
<value>Envíos</value>
<value>Sends</value>
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="NameInfo" xml:space="preserve">
<value>Un nombre amigable para describir este Envío.</value>
<value>Un nombre amigable para describir este Send.</value>
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="Text" xml:space="preserve">
@@ -1972,15 +1972,15 @@ El escaneo se realizará automáticamente.</value>
<value>La contraseña ha sido eliminada.</value>
</data>
<data name="NotesInfo" xml:space="preserve">
<value>Notas privadas sobre este Envío.</value>
<value>Notas privadas sobre este Send.</value>
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="DisableSend" xml:space="preserve">
<value>Desactivar este Envío para que nadie pueda acceder a él.</value>
<value>Desactivar este Send para que nadie pueda acceder a él</value>
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="NoSends" xml:space="preserve">
<value>No hay Envíos en tu cuenta.</value>
<value>No hay Sends en tu cuenta.</value>
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="AddASend" xml:space="preserve">
@@ -1994,35 +1994,35 @@ El escaneo se realizará automáticamente.</value>
<value>Compartir enlace</value>
</data>
<data name="SendLink" xml:space="preserve">
<value>Enviar enlace</value>
<value>Enlace Send</value>
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="SearchSends" xml:space="preserve">
<value>Buscar Envíos</value>
<value>Buscar Sends</value>
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="EditSend" xml:space="preserve">
<value>Editar Envío</value>
<value>Editar Send</value>
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="AddSend" xml:space="preserve">
<value>Añadir Envío</value>
<value>Nuevo Send</value>
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="AreYouSureDeleteSend" xml:space="preserve">
<value>¿Seguro que quieres eliminar este Envío?</value>
<value>¿Seguro que quieres eliminar este Send?</value>
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="SendDeleted" xml:space="preserve">
<value>El Envío se ha eliminado.</value>
<value>Send eliminado</value>
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="SendUpdated" xml:space="preserve">
<value>Envío actualizado.</value>
<value>Send guardado</value>
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="NewSendCreated" xml:space="preserve">
<value>Nuevo Envío creado.</value>
<value>Send creado</value>
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="OneDay" xml:space="preserve">
@@ -2044,7 +2044,7 @@ El escaneo se realizará automáticamente.</value>
<value>Personalizado</value>
</data>
<data name="ShareOnSave" xml:space="preserve">
<value>Compartir este Envío al guardarlo.</value>
<value>Compartir este Send al guardarlo</value>
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="SendDisabledWarning" xml:space="preserve">
@@ -2203,7 +2203,7 @@ El escaneo se realizará automáticamente.</value>
<value>Enviando</value>
</data>
<data name="CopySendLinkOnSave" xml:space="preserve">
<value>Copiar enlace Enviar al guardar</value>
<value>Copiar enlace del Send al guardar</value>
</data>
<data name="SendingCode" xml:space="preserve">
<value>Enviando código...</value>
@@ -2810,7 +2810,7 @@ seleccione Agregar TOTP para almacenar la clave de forma segura</value>
<value>{0} horas</value>
</data>
<data name="PasskeyManagementExplanationLong" xml:space="preserve">
<value>Use Bitwarden to save new passkeys and log in with passkeys stored in your vault.</value>
<value>Usa Bitwarden para guardar nuevas claves de acceso e iniciar sesión con las claves de acceso almacenadas en tu caja fuerte.</value>
</data>
<data name="AutofillServicesExplanationLong" xml:space="preserve">
<value>El Framework de Autofill de Android se utiliza para ayudar a rellenar información de inicio de sesión en otras aplicaciones en tu dispositivo.</value>
@@ -2841,7 +2841,7 @@ seleccione Agregar TOTP para almacenar la clave de forma segura</value>
<value>¿Continuar a la App Store?</value>
</data>
<data name="ContinueToDeviceSettings" xml:space="preserve">
<value>Continue to device Settings?</value>
<value>¿Continuar a los ajustes del dispositivo?</value>
</data>
<data name="TwoStepLoginDescriptionLong" xml:space="preserve">
<value>Haz tu cuenta más segura al configurar el inicio de sesión en dos pasos en la aplicación web de Bitwarden.</value>
@@ -2894,25 +2894,25 @@ seleccione Agregar TOTP para almacenar la clave de forma segura</value>
<value>Configura una opción de desbloqueo para cambiar tu acción de tiempo de espera de tu caja fuerte.</value>
</data>
<data name="ChooseALoginToSaveThisPasskeyTo" xml:space="preserve">
<value>Choose a login to save this passkey to</value>
<value>Escoge un inicio de sesión para guardar esta clave de acceso</value>
</data>
<data name="SavePasskeyAsNewLogin" xml:space="preserve">
<value>Save passkey as new login</value>
<value>Guardar clave de acceso como un nuevo inicio de sesión</value>
</data>
<data name="SavePasskey" xml:space="preserve">
<value>Save passkey</value>
<value>Guardar clave de acceso</value>
</data>
<data name="PasskeysForX" xml:space="preserve">
<value>Passkeys for {0}</value>
<value>Claves de acceso para {0}</value>
</data>
<data name="PasswordsForX" xml:space="preserve">
<value>Passwords for {0}</value>
<value>Contraseñas para {0}</value>
</data>
<data name="OverwritePasskey" xml:space="preserve">
<value>Overwrite passkey?</value>
<value>¿Sobreescribir clave de acceso?</value>
</data>
<data name="ThisItemAlreadyContainsAPasskeyAreYouSureYouWantToOverwriteTheCurrentPasskey" xml:space="preserve">
<value>This item already contains a passkey. Are you sure you want to overwrite the current passkey?</value>
<value>Este elemento ya contiene una clave de acceso. ¿Estás seguro de que quieres sobreescribir la clave de acceso actual?</value>
</data>
<data name="DuoTwoStepLoginIsRequiredForYourAccount" xml:space="preserve">
<value>Se requiere el inicio de sesión en dos pasos Duo para su cuenta. </value>
@@ -2924,86 +2924,86 @@ seleccione Agregar TOTP para almacenar la clave de forma segura</value>
<value>Iniciar Duo</value>
</data>
<data name="VerificationRequiredByX" xml:space="preserve">
<value>Verification required by {0}</value>
<value>Verificación requerida por {0}</value>
</data>
<data name="VerificationRequiredForThisActionSetUpAnUnlockMethodInBitwardenToContinue" xml:space="preserve">
<value>Verification required for this action. Set up an unlock method in Bitwarden to continue.</value>
<value>Verificación requerida para esta acción. Establece un método de desbloqueo en Bitwarden para continuar.</value>
</data>
<data name="ErrorCreatingPasskey" xml:space="preserve">
<value>Error creating passkey</value>
<value>Error creando clave de acceso</value>
</data>
<data name="ErrorReadingPasskey" xml:space="preserve">
<value>Error reading passkey</value>
<value>Error leyendo clave de acceso</value>
</data>
<data name="ThereWasAProblemCreatingAPasskeyForXTryAgainLater" xml:space="preserve">
<value>There was a problem creating a passkey for {0}. Try again later.</value>
<value>Hubo un problema creando la clave de acceso para {0}. Inténtalo de nuevo más tarde.</value>
<comment>The parameter is the RpId</comment>
</data>
<data name="ThereWasAProblemReadingAPasskeyForXTryAgainLater" xml:space="preserve">
<value>There was a problem reading your passkey for {0}. Try again later.</value>
<value>Hubo un problema leyendo la clave de acceso para {0}. Inténtalo de nuevo más tarde.</value>
<comment>The parameter is the RpId</comment>
</data>
<data name="VerifyingIdentityEllipsis" xml:space="preserve">
<value>Verifying identity...</value>
<value>Verificando identidad...</value>
</data>
<data name="Passwords" xml:space="preserve">
<value>Passwords</value>
<value>Contraseñas</value>
</data>
<data name="UnknownAccount" xml:space="preserve">
<value>Unknown account</value>
<value>Cuenta desconocida</value>
</data>
<data name="SetUpAutofill" xml:space="preserve">
<value>Set up auto-fill</value>
<value>Establecer autocompletar</value>
</data>
<data name="GetInstantAccessToYourPasswordsAndPasskeys" xml:space="preserve">
<value>Get instant access to your passwords and passkeys!</value>
<value>¡Consigue acceso instantáneo a tus contraseñas y claves de acceso!</value>
</data>
<data name="SetUpAutoFillDescriptionLong" xml:space="preserve">
<value>To set up password auto-fill and passkey management, set Bitwarden as your preferred provider in the iOS Settings.</value>
<value>Para configurar el autocompletado y la administración de claves de acceso, establezca Bitwarden como su proveedor preferido en los ajustes de iOS.</value>
</data>
<data name="FirstDotGoToYourDeviceSettingsPasswordsPasswordOptions" xml:space="preserve">
<value>1. Go to your device's Settings &gt; Passwords &gt; Password Options</value>
<value>1. Ve a los Ajustes de tu dispositivo &gt; Contraseñas &gt; Opciones de Contraseña</value>
</data>
<data name="SecondDotTurnOnAutoFill" xml:space="preserve">
<value>2. Turn on AutoFill</value>
<value>2. Habilita el autocompletado</value>
</data>
<data name="ThirdDotSelectBitwardenToUseForPasswordsAndPasskeys" xml:space="preserve">
<value>3. Select "Bitwarden" to use for passwords and passkeys</value>
<value>3. Selecciona "Bitwarden" para usar contraseñas y claves de acceso</value>
</data>
<data name="YourPasskeyWillBeSavedToYourBitwardenVault" xml:space="preserve">
<value>Your passkey will be saved to your Bitwarden vault</value>
<value>Tu clave de acceso se guardará en tu caja fuerte de Bitwarden</value>
</data>
<data name="YourPasskeyWillBeSavedToYourBitwardenVaultForX" xml:space="preserve">
<value>Your passkey will be saved to your Bitwarden vault for {0}</value>
<value>Tu clave de acceso se guardará en tu caja fuerte de Bitwarden para {0}</value>
</data>
<data name="OrganizationUnassignedItemsMessageUSEUDescriptionLong" xml:space="preserve">
<value>Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible.</value>
<value>Los elementos de organización sin asignar ya no están visibles en la vista Todas las cajas fuertes y solo se puede acceder a ellos a través de la consola de administrador. Asigne estos elementos a una colección desde la Consola de Administrador para hacerlos visibles.</value>
</data>
<data name="OrganizationUnassignedItemsMessageSelfHost041624DescriptionLong" xml:space="preserve">
<value>On May 16, 2024, unassigned organization items will no longer be visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible.</value>
<value>El 16 de mayo de 2024, los elementos de organización no asignados ya no serán visibles en la vista Todas las cajas fuertes y solo serán accesibles a través de la Consola de Administrador. Asigna estos objetos a una colección desde la Consola de Administrador para hacerlos visibles.</value>
</data>
<data name="RemindMeLater" xml:space="preserve">
<value>Remind me later</value>
<value>Recuérdamelo más tarde</value>
</data>
<data name="Notice" xml:space="preserve">
<value>Notice</value>
<value>Aviso</value>
</data>
<data name="PasskeysNotSupportedForThisApp" xml:space="preserve">
<value>Passkeys not supported for this app</value>
<value>Claves de acceso no soportadas para esta aplicación</value>
</data>
<data name="PasskeyOperationFailedBecauseBrowserIsNotPrivileged" xml:space="preserve">
<value>Passkey operation failed because browser is not privileged</value>
<value>Falló la operación de la clave de acceso porque el navegador no tiene privilegios</value>
</data>
<data name="PasskeyOperationFailedBecauseBrowserSignatureDoesNotMatch" xml:space="preserve">
<value>Passkey operation failed because browser signature does not match</value>
<value>Falló la operación de la clave de acceso porque la firma del navegador no coincide</value>
</data>
<data name="PasskeyOperationFailedBecauseOfMissingAssetLinks" xml:space="preserve">
<value>Passkey operation failed because of missing asset links</value>
<value>Falló la operación de la clave de acceso porque faltan enlaces de recursos</value>
</data>
<data name="PasskeyOperationFailedBecauseAppNotFoundInAssetLinks" xml:space="preserve">
<value>Passkey operation failed because app not found in asset links</value>
<value>Falló la operación de la clave de acceso porque la aplicación no encontró los enlaces de recursos</value>
</data>
<data name="PasskeyOperationFailedBecauseAppCouldNotBeVerified" xml:space="preserve">
<value>Passkey operation failed because app could not be verified</value>
<value>Falló la operación de la clave de acceso porque la aplicación no pudo ser verificada</value>
</data>
</root>

View File

@@ -2397,7 +2397,7 @@ turvallisesti valitsemalla "Lisää TOTP"</value>
<value>Catch-all-sähköposti</value>
</data>
<data name="ForwardedEmailAlias" xml:space="preserve">
<value>Sähköpostialias välitykseen</value>
<value>Sähköpostialias ohjaukseen</value>
</data>
<data name="RandomWord" xml:space="preserve">
<value>Satunnainen sana</value>
@@ -2818,7 +2818,7 @@ Haluatko vaihtaa tähän tiliin?</value>
<value>Tekstinsisäistä automattitäyttöä käytetään, jos aktiivinen näppäimistö tukee sitä. Muussa tapauksessa käytetään ponnahdusvalintaa.</value>
</data>
<data name="AdditionalOptions" xml:space="preserve">
<value>Lisäasetukset</value>
<value>Lisävalinnat</value>
</data>
<data name="ContinueToWebApp" xml:space="preserve">
<value>Avataanko verkkosovellus?</value>
@@ -2991,7 +2991,7 @@ Haluatko vaihtaa tähän tiliin?</value>
<value>Suojausavaimia ei tueta tässä sovelluksessa</value>
</data>
<data name="PasskeyOperationFailedBecauseBrowserIsNotPrivileged" xml:space="preserve">
<value>Suojausavaintoiminto epäonnistui, koska selainta ei ole korotettu</value>
<value>Suojausavaintoiminto epäonnistui, koska selainta ei ole hyväksytty</value>
</data>
<data name="PasskeyOperationFailedBecauseBrowserSignatureDoesNotMatch" xml:space="preserve">
<value>Suojausavaintoiminto epäonnistui, koska selaimen allekirjoitus ei täsmää</value>
@@ -3003,6 +3003,6 @@ Haluatko vaihtaa tähän tiliin?</value>
<value>Suojausavaintoiminto epäonnistui, koska sovellusta ei löytynyt asset-liitoksista</value>
</data>
<data name="PasskeyOperationFailedBecauseAppCouldNotBeVerified" xml:space="preserve">
<value>Suojausavaintoiminto epäonnistui, koska sovellusta ei voitu vahvistaa</value>
<value>Suojausavaintoiminto epäonnistui, koska sovellusta ei voitu varmentaa</value>
</data>
</root>

View File

@@ -2905,7 +2905,7 @@ Voulez-vous basculer vers ce compte ?</value>
<value>Clés d'accès pour {0}</value>
</data>
<data name="PasswordsForX" xml:space="preserve">
<value>Passwords for {0}</value>
<value>Mots de passe pour {0}</value>
</data>
<data name="OverwritePasskey" xml:space="preserve">
<value>Overwrite passkey?</value>
@@ -2946,7 +2946,7 @@ Voulez-vous basculer vers ce compte ?</value>
<value>Verifying identity...</value>
</data>
<data name="Passwords" xml:space="preserve">
<value>Passwords</value>
<value>Mots de passe</value>
</data>
<data name="UnknownAccount" xml:space="preserve">
<value>Unknown account</value>

View File

@@ -1662,7 +1662,7 @@ Nolasīšana notiks automātiski.</value>
<value>Jāapstiprina identitāte, lai turpinātu.</value>
</data>
<data name="ExportVaultWarning" xml:space="preserve">
<value>Šī izguve satur glabātavas datus nešifrētā veidā. Izdoto datni nevajadzētu glabāt vai sūtīt nedrošos veidos (piemēram, e-pastā). Izdzēst to uzreiz pēc izmantošanas.</value>
<value>Šī izguve satur glabātavas datus nešifrētā veidā. Izto datni nevajadzētu glabāt vai sūtīt nedrošos veidos (piemēram, e-pastā). Tā ir jāizdzēš uzreiz pēc izmantošanas.</value>
</data>
<data name="EncExportKeyWarning" xml:space="preserve">
<value>Šī izguve šifrē datus ar konta šifrēšanas atslēgu. Ja tā jebkad tiks mainīta, izvadi vajadzētu veikt vēlreiz, jo vairs nebūs iespējams atšifrēt šo datni.</value>
@@ -2853,7 +2853,7 @@ Vai pārslēgties uz šo kontu?</value>
<comment>The parameter is an URL, like vault.bitwarden.com.</comment>
</data>
<data name="LearnMoreAboutHowToUseBitwardenOnTheHelpCenter" xml:space="preserve">
<value>Par to, kā izmantot Bitwarden, vairāk var uzzināt palīdzības centrā.</value>
<value>Vairāk par to, kā izmantot Bitwarden, var uzzināt palīdzības centrā.</value>
</data>
<data name="ContactSupportDescriptionLong" xml:space="preserve">
<value>Meklējamais nav atrodams? Ir iespēja sazināties ar Bitwarden atbalstu bitwarden.com.</value>
@@ -2865,7 +2865,7 @@ Vai pārslēgties uz šo kontu?</value>
<value>Vairāk sava Bitwarden konta iespēju var izpētīt tīmekļa vietnē.</value>
</data>
<data name="LearnAboutOrganizationsDescriptionLong" xml:space="preserve">
<value>Bitwarden nodrošina iespēju kopīgot savas glabātavas vienumus ar citiem, kad tiek izmantota apvienība. Vairāk var uzzināt bitwarden.com tīmekļvietnē.</value>
<value>Bitwarden nodrošina iespēju kopīgot savas glabātavas vienumus ar citiem, kad tiek izmantota apvienība. Vairāk var uzzināt tīmekļvietnē bitwarden.com.</value>
</data>
<data name="RateAppDescriptionLong" xml:space="preserve">
<value>Var palīdzēt citiem noskaidrot, vai Bitwarden tiem der. To var izdarīt lietotņu veikalā, atstājot vērtējumu.</value>

View File

@@ -1195,7 +1195,7 @@ A leitura será feita automaticamente.</value>
<value>Windows Hello</value>
</data>
<data name="BitwardenCredentialProviderGoToSettings" xml:space="preserve">
<value>We were unable to automatically open the Android credential provider settings menu for you. You can navigate to the credential provider settings menu manually from Android Settings &gt; System &gt; Passwords &amp; accounts &gt; Passwords, passkeys and data services.</value>
<value>Não foi possível abrir automaticamente o menu de configurações do provedor de credenciais do Android para você. Você pode navegar para o menu de configurações do provedor de credenciais manualmente a partir de Configurações do Android &gt; Sistema &gt; Senhas e Contas &gt; Senhas chaves e serviços de dados.</value>
</data>
<data name="BitwardenAutofillGoToSettings" xml:space="preserve">
<value>Não foi possível abrir automaticamente o menu de configurações de autopreenchimento do Android para você. Você pode navegar para o menu de configurações de autopreenchimento manualmente a partir de Configurações do Android &gt; Sistema &gt; Idiomas e Entrada &gt; Avançado &gt; Serviço de autopreenchimento.</value>

View File

@@ -136,7 +136,7 @@
<comment>Alert title when something goes wrong.</comment>
</data>
<data name="Back" xml:space="preserve">
<value>Retroceder</value>
<value>Voltar</value>
<comment>Navigate back to the previous screen.</comment>
</data>
<data name="Bitwarden" xml:space="preserve">
@@ -961,7 +961,7 @@ A leitura será efetuada automaticamente.</value>
<value>Ambiente personalizado</value>
</data>
<data name="CustomEnvironmentFooter" xml:space="preserve">
<value>Para utilizadores avançados. Pode especificar o URL de base de cada serviço independentemente.</value>
<value>Para utilizadores avançados. Pode especificar o URL de base de cada serviço de forma independente.</value>
</data>
<data name="EnvironmentSaved" xml:space="preserve">
<value>Os URLs de ambiente foram guardados.</value>

View File

@@ -2769,7 +2769,7 @@ Do you want to switch to this account?</value>
<value>Account security</value>
</data>
<data name="BitwardenHelpCenter" xml:space="preserve">
<value>Bitwarden Help Center</value>
<value>Bitwarden help center</value>
</data>
<data name="ContactBitwardenSupport" xml:space="preserve">
<value>Contact Bitwarden support</value>
@@ -2975,18 +2975,6 @@ Do you want to switch to this account?</value>
<data name="YourPasskeyWillBeSavedToYourBitwardenVaultForX" xml:space="preserve">
<value>Your passkey will be saved to your Bitwarden vault for {0}</value>
</data>
<data name="OrganizationUnassignedItemsMessageUSEUDescriptionLong" xml:space="preserve">
<value>Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible.</value>
</data>
<data name="OrganizationUnassignedItemsMessageSelfHost041624DescriptionLong" xml:space="preserve">
<value>On May 16, 2024, unassigned organization items will no longer be visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible.</value>
</data>
<data name="RemindMeLater" xml:space="preserve">
<value>Remind me later</value>
</data>
<data name="Notice" xml:space="preserve">
<value>Notice</value>
</data>
<data name="PasskeysNotSupportedForThisApp" xml:space="preserve">
<value>Passkeys not supported for this app</value>
</data>

View File

@@ -422,7 +422,7 @@
<value>Hjälpmedelsservice för automatisk ifyllnad</value>
</data>
<data name="SetBitwardenAsPasskeyManagerDescription" xml:space="preserve">
<value>Set Bitwarden as your passkey provider in device settings.</value>
<value>Ange Bitwarden som din lösenordsleverantör i enhetsinställningarna.</value>
</data>
<data name="AvoidAmbiguousCharacters" xml:space="preserve">
<value>Undvik tvetydiga tecken</value>
@@ -1196,7 +1196,7 @@ Skanningen sker automatiskt.</value>
<value>Windows Hello</value>
</data>
<data name="BitwardenCredentialProviderGoToSettings" xml:space="preserve">
<value>We were unable to automatically open the Android credential provider settings menu for you. You can navigate to the credential provider settings menu manually from Android Settings &gt; System &gt; Passwords &amp; accounts &gt; Passwords, passkeys and data services.</value>
<value>Det gick inte att automatiskt öppna menyn för Android-autentiseringsleverantörsinställningar för dig. Du kan navigera till menyn autentiseringsleverantörsinställningar manuellt från Android Inställningar &gt; System &gt; Lösenord och konton &gt; Lösenord, Nyckelord och datatjänster.</value>
</data>
<data name="BitwardenAutofillGoToSettings" xml:space="preserve">
<value>Det gick inte att automatiskt öppna inställningsmenyn för Android automatisk ifyllnad. Du kan navigera till menyn manuellt från Android inställningar &gt; System &gt; Språk och inmatning &gt; Avancerat &gt; Tjänsten autofyll.</value>
@@ -1824,7 +1824,7 @@ Skanningen sker automatiskt.</value>
<value>Bitwarden behöver din uppmärksamhet - Aktivera "Överlappning" under "Tjänster för automatisk ifyllnad" i Bitwardens inställningar</value>
</data>
<data name="PasskeyManagement" xml:space="preserve">
<value>Passkey management</value>
<value>Passkey hantering</value>
</data>
<data name="AutofillServices" xml:space="preserve">
<value>Tjänster för automatisk ifyllnad</value>
@@ -2897,19 +2897,19 @@ Vill du byta till detta konto?</value>
<value>Choose a login to save this passkey to</value>
</data>
<data name="SavePasskeyAsNewLogin" xml:space="preserve">
<value>Save passkey as new login</value>
<value>Spara passkey som ny inloggning</value>
</data>
<data name="SavePasskey" xml:space="preserve">
<value>Save passkey</value>
<value>Spara passkey</value>
</data>
<data name="PasskeysForX" xml:space="preserve">
<value>Passkeys for {0}</value>
<value>Passkeys för {0}</value>
</data>
<data name="PasswordsForX" xml:space="preserve">
<value>Passwords for {0}</value>
<value>Lösenord för {0}</value>
</data>
<data name="OverwritePasskey" xml:space="preserve">
<value>Overwrite passkey?</value>
<value>Skriv över passkey?</value>
</data>
<data name="ThisItemAlreadyContainsAPasskeyAreYouSureYouWantToOverwriteTheCurrentPasskey" xml:space="preserve">
<value>This item already contains a passkey. Are you sure you want to overwrite the current passkey?</value>
@@ -2924,16 +2924,16 @@ Vill du byta till detta konto?</value>
<value>Starta Duo</value>
</data>
<data name="VerificationRequiredByX" xml:space="preserve">
<value>Verification required by {0}</value>
<value>Verifiering krävs av {0}</value>
</data>
<data name="VerificationRequiredForThisActionSetUpAnUnlockMethodInBitwardenToContinue" xml:space="preserve">
<value>Verification required for this action. Set up an unlock method in Bitwarden to continue.</value>
</data>
<data name="ErrorCreatingPasskey" xml:space="preserve">
<value>Error creating passkey</value>
<value>Fel vid skapande av passkey</value>
</data>
<data name="ErrorReadingPasskey" xml:space="preserve">
<value>Error reading passkey</value>
<value>Fel vid läsning av passkey</value>
</data>
<data name="ThereWasAProblemCreatingAPasskeyForXTryAgainLater" xml:space="preserve">
<value>There was a problem creating a passkey for {0}. Try again later.</value>
@@ -2944,7 +2944,7 @@ Vill du byta till detta konto?</value>
<comment>The parameter is the RpId</comment>
</data>
<data name="VerifyingIdentityEllipsis" xml:space="preserve">
<value>Verifying identity...</value>
<value>Verifierar identitet...</value>
</data>
<data name="Passwords" xml:space="preserve">
<value>Lösenord</value>
@@ -2965,22 +2965,22 @@ Vill du byta till detta konto?</value>
<value>1. Gå till din enhets Inställningar &gt; Lösenord &gt; Lösenordsalternativ</value>
</data>
<data name="SecondDotTurnOnAutoFill" xml:space="preserve">
<value>2. Turn on AutoFill</value>
<value>2. Slå på AutoFyll</value>
</data>
<data name="ThirdDotSelectBitwardenToUseForPasswordsAndPasskeys" xml:space="preserve">
<value>3. Select "Bitwarden" to use for passwords and passkeys</value>
<value>3. Välj att använda "Bitwarden" för lösenord och passkeys</value>
</data>
<data name="YourPasskeyWillBeSavedToYourBitwardenVault" xml:space="preserve">
<value>Your passkey will be saved to your Bitwarden vault</value>
</data>
<data name="YourPasskeyWillBeSavedToYourBitwardenVaultForX" xml:space="preserve">
<value>Your passkey will be saved to your Bitwarden vault for {0}</value>
<value>Din passkey kommer att sparas i ditt Bitwarden-valv för {0}</value>
</data>
<data name="OrganizationUnassignedItemsMessageUSEUDescriptionLong" xml:space="preserve">
<value>Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible.</value>
</data>
<data name="OrganizationUnassignedItemsMessageSelfHost041624DescriptionLong" xml:space="preserve">
<value>On May 16, 2024, unassigned organization items will no longer be visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible.</value>
<value>Den 16 maj 2024 kommer otilldelade organisationsobjekt inte längre att synas i alla valvs-vyn och endast nås via administratörskonsollen. Tilldela dessa objekt till en samling från administratörskonsollen för att göra dem synliga.</value>
</data>
<data name="RemindMeLater" xml:space="preserve">
<value>Påminn mig senare</value>

View File

@@ -422,7 +422,7 @@
<value>Otomatik doldurma hizmeti</value>
</data>
<data name="SetBitwardenAsPasskeyManagerDescription" xml:space="preserve">
<value>Set Bitwarden as your passkey provider in device settings.</value>
<value>Cihaz ayarlarınızdan Bitwarden'ı geçiş anahtarı sağlayıcınız olarak ayarlayın.</value>
</data>
<data name="AvoidAmbiguousCharacters" xml:space="preserve">
<value>Okurken karışabilecek karakterleri kullanma</value>
@@ -2838,7 +2838,7 @@ Bu hesaba geçmek ister misiniz?</value>
<value>App Store'a gitmek ister misiniz?</value>
</data>
<data name="ContinueToDeviceSettings" xml:space="preserve">
<value>Continue to device Settings?</value>
<value>Cihaz ayarlarına gidilsin mi?</value>
</data>
<data name="TwoStepLoginDescriptionLong" xml:space="preserve">
<value>Bitwarden web uygulamasında iki aşamalı girişi ayarlayarak hesabınızın güvenliğini artırabilirsiniz.</value>
@@ -2891,7 +2891,7 @@ Bu hesaba geçmek ister misiniz?</value>
<value>Kasa zaman aşımı eyleminizi değiştirmek için bir kilit açma yöntemi ayarlayın.</value>
</data>
<data name="ChooseALoginToSaveThisPasskeyTo" xml:space="preserve">
<value>Choose a login to save this passkey to</value>
<value>Bu geçiş anahtarının kaydedileceği hesabı seçin</value>
</data>
<data name="SavePasskeyAsNewLogin" xml:space="preserve">
<value>Geçiş anahtarını yeni hesap olarak kaydet</value>
@@ -2933,11 +2933,11 @@ Bu hesaba geçmek ister misiniz?</value>
<value>Geçiş anahtarı okuma hatası</value>
</data>
<data name="ThereWasAProblemCreatingAPasskeyForXTryAgainLater" xml:space="preserve">
<value>There was a problem creating a passkey for {0}. Try again later.</value>
<value>{0} için geçiş anahtarı oluşturulamadı. Daha sonra tekrar deneyin.</value>
<comment>The parameter is the RpId</comment>
</data>
<data name="ThereWasAProblemReadingAPasskeyForXTryAgainLater" xml:space="preserve">
<value>There was a problem reading your passkey for {0}. Try again later.</value>
<value>{0} için geçiş anahtarı okunamadı. Daha sonra tekrar deneyin.</value>
<comment>The parameter is the RpId</comment>
</data>
<data name="VerifyingIdentityEllipsis" xml:space="preserve">
@@ -2962,16 +2962,16 @@ Bu hesaba geçmek ister misiniz?</value>
<value>1. Go to your device's Settings &gt; Passwords &gt; Password Options</value>
</data>
<data name="SecondDotTurnOnAutoFill" xml:space="preserve">
<value>2. Turn on AutoFill</value>
<value>Oto-Doldurma'yı Etkinleştir</value>
</data>
<data name="ThirdDotSelectBitwardenToUseForPasswordsAndPasskeys" xml:space="preserve">
<value>3. Select "Bitwarden" to use for passwords and passkeys</value>
<value>Parolalarınızı ve geçiş anahtarlarını kullanmak için "Bitwarden" seçin</value>
</data>
<data name="YourPasskeyWillBeSavedToYourBitwardenVault" xml:space="preserve">
<value>Your passkey will be saved to your Bitwarden vault</value>
<value>Geçiş anahtarınız Bitwarden kasasına kaydedilecektir</value>
</data>
<data name="YourPasskeyWillBeSavedToYourBitwardenVaultForX" xml:space="preserve">
<value>Your passkey will be saved to your Bitwarden vault for {0}</value>
<value>{0} için geçiş anahtarınız Bitwarden kasasına kaydedilecektir</value>
</data>
<data name="OrganizationUnassignedItemsMessageUSEUDescriptionLong" xml:space="preserve">
<value>Unassigned organization items are no longer visible in the All Vaults view and only accessible via the Admin Console. Assign these items to a collection from the Admin Console to make them visible.</value>
@@ -2989,18 +2989,18 @@ Bu hesaba geçmek ister misiniz?</value>
<value>Bu uygulamada geçiş anahtarları desteklenmiyor</value>
</data>
<data name="PasskeyOperationFailedBecauseBrowserIsNotPrivileged" xml:space="preserve">
<value>Passkey operation failed because browser is not privileged</value>
<value>Geçiş anahtarı eylemi başarısız oldu çünkü tarayıcı ayrıcalıklı değil</value>
</data>
<data name="PasskeyOperationFailedBecauseBrowserSignatureDoesNotMatch" xml:space="preserve">
<value>Passkey operation failed because browser signature does not match</value>
<value>Geçiş anahtarı eylemi başarısız oldu çünkü tarayıcı imzası uyumsuz</value>
</data>
<data name="PasskeyOperationFailedBecauseOfMissingAssetLinks" xml:space="preserve">
<value>Passkey operation failed because of missing asset links</value>
<value>Geçiş anahtarı eylemi başarısız oldu çünkü varlık bağlantıları eksik</value>
</data>
<data name="PasskeyOperationFailedBecauseAppNotFoundInAssetLinks" xml:space="preserve">
<value>Passkey operation failed because app not found in asset links</value>
<value>Geçiş anahtarı eylemi başarısız oldu çünkü uygulama varlık bağlantılarında bulunamadı</value>
</data>
<data name="PasskeyOperationFailedBecauseAppCouldNotBeVerified" xml:space="preserve">
<value>Passkey operation failed because app could not be verified</value>
<value>Geçiş anahtarı eylemi başarısız oldu çünkü uygulama doğrulanamadı</value>
</data>
</root>

View File

@@ -422,7 +422,7 @@
<value>自动填充服务</value>
</data>
<data name="SetBitwardenAsPasskeyManagerDescription" xml:space="preserve">
<value>在设备设置中将 Bitwarden 设置为您的通行密钥提供程序。</value>
<value>在设备设置中将 Bitwarden 设置为您的通行密钥提供程序。</value>
</data>
<data name="AvoidAmbiguousCharacters" xml:space="preserve">
<value>避免易混淆的字符</value>
@@ -1195,7 +1195,7 @@
<value>Windows Hello</value>
</data>
<data name="BitwardenCredentialProviderGoToSettings" xml:space="preserve">
<value>我们无法为您自动打开 Android 凭据提供设置菜单。您可以通过Android 设置 &gt; 系统 &gt; 密码和账户 &gt; 密码、通行密钥和数据服务手动定位到凭据提供设置菜单。</value>
<value>我们无法为您自动打开 Android 凭据提供程序设置菜单。您可以通过 Android 设置 &gt; 系统 &gt; 密码和账户 &gt; 密码、通行密钥和数据服务手动定位到凭据提供程序设置菜单。</value>
</data>
<data name="BitwardenAutofillGoToSettings" xml:space="preserve">
<value>我们无法为您自动打开 Android 自动填充设置菜单。您可以通过 Android 设置 &gt; 系统 &gt; 语言和输入 &gt; 高级 &gt; 自动填充服务,来手动导航到自动填充设置。</value>
@@ -2500,7 +2500,7 @@
<value>在 {1} 上以 {0} 身份登录</value>
</data>
<data name="NotYou" xml:space="preserve">
<value>不是</value>
<value>不是您吗</value>
</data>
<data name="LogInWithMasterPassword" xml:space="preserve">
<value>使用主密码登录</value>
@@ -2695,7 +2695,7 @@
<value>批准后,您将收到通知。 </value>
</data>
<data name="TroubleLoggingIn" xml:space="preserve">
<value>登录遇到问题?</value>
<value>登录遇到问题</value>
</data>
<data name="LoggingInAsX" xml:space="preserve">
<value>正登录为 {0}</value>
@@ -2820,7 +2820,7 @@
<value>附加选项</value>
</data>
<data name="ContinueToWebApp" xml:space="preserve">
<value>前往网页 App 吗?</value>
<value>前往网页应用吗?</value>
</data>
<data name="ContinueToX" xml:space="preserve">
<value>前往 {0} 吗?</value>
@@ -2852,7 +2852,7 @@
<comment>The parameter is an URL, like vault.bitwarden.com.</comment>
</data>
<data name="LearnMoreAboutHowToUseBitwardenOnTheHelpCenter" xml:space="preserve">
<value>帮助中心了解更多如何使用 Bitwarden 的信息。</value>
<value>访问帮助中心了解更多如何使用 Bitwarden 的信息。</value>
</data>
<data name="ContactSupportDescriptionLong" xml:space="preserve">
<value>找不到您想要的吗?请在 bitwarden.com 上联系 Bitwarden 支持。</value>
@@ -2864,7 +2864,7 @@
<value>在网页应用上探索您的 Bitwarden 账户的更多功能。</value>
</data>
<data name="LearnAboutOrganizationsDescriptionLong" xml:space="preserve">
<value>Bitwarden 允许您使用组织与他人共享您的密码库项目。访问 bitwarden.com 网站了解更多。</value>
<value>Bitwarden 允许您使用组织与他人共享您的密码库项目。访问 bitwarden.com 网站了解更多信息。</value>
</data>
<data name="RateAppDescriptionLong" xml:space="preserve">
<value>帮助别人了解 Bitwarden 是否适合他们。立即访问 App Store 并留下评分。</value>
@@ -2938,7 +2938,7 @@
<comment>The parameter is the RpId</comment>
</data>
<data name="ThereWasAProblemReadingAPasskeyForXTryAgainLater" xml:space="preserve">
<value>读取 {0} 的通行密钥时。请稍后再试。</value>
<value>读取 {0} 的通行密钥时出错。请稍后再试。</value>
<comment>The parameter is the RpId</comment>
</data>
<data name="VerifyingIdentityEllipsis" xml:space="preserve">

View File

@@ -334,11 +334,6 @@ namespace Bit.Core.Services
return SendAsync<object, CipherResponse>(HttpMethod.Put, string.Concat("/ciphers/", id, "/restore"), null, true, true);
}
public Task<bool> HasUnassignedCiphersAsync()
{
return SendAsync<object, bool>(HttpMethod.Get, "/ciphers/has-unassigned-ciphers", null, true, true);
}
#endregion
#region Attachments APIs

View File

@@ -1,4 +1,4 @@
//#define ENABLE_NEW_CIPHER_KEY_ENCRYPTION_ON_CREATION
#define ENABLE_NEW_CIPHER_KEY_ENCRYPTION_ON_CREATION
using System;
using System.Collections.Generic;
@@ -114,7 +114,7 @@ namespace Bit.Core.Services
public async Task<Cipher> EncryptAsync(CipherView model, SymmetricCryptoKey key = null,
Cipher originalCipher = null)
{
// Adjust password history
// Adjust password history and attachments
if (model.Id != null)
{
if (originalCipher == null)
@@ -169,6 +169,9 @@ namespace Bit.Core.Services
}
}
}
//adjust attachments
model.Attachments = existingCipher.Attachments;
}
if (!model.PasswordHistory?.Any() ?? false)
{
@@ -835,24 +838,6 @@ namespace Bit.Core.Services
await ClearCacheAsync();
}
public async Task<bool> VerifyOrganizationHasUnassignedItemsAsync()
{
var organizations = await _stateService.GetOrganizationsAsync();
if (organizations?.Any() != true)
{
return false;
}
try
{
return await _apiService.HasUnassignedCiphersAsync();
}
catch (ApiException ex) when (ex.Error?.StatusCode == System.Net.HttpStatusCode.BadRequest)
{
return false;
}
}
// Helpers
private async Task<Tuple<SymmetricCryptoKey, EncString, SymmetricCryptoKey>> MakeAttachmentKeyAsync(string organizationId, Cipher cipher = null, CipherView cipherView = null)

View File

@@ -1384,16 +1384,6 @@ namespace Bit.Core.Services
await _storageMediatorService.SaveAsync(Constants.RegionEnvironment, value);
}
public async Task<bool> GetShouldCheckOrganizationUnassignedItemsAsync(string userId = null)
{
return await _storageMediatorService.GetAsync<bool?>(await ComposeKeyAsync(Constants.ShouldCheckOrganizationUnassignedItemsKey, userId)) ?? true;
}
public async Task SetShouldCheckOrganizationUnassignedItemsAsync(bool shouldCheck, string userId = null)
{
await _storageMediatorService.SaveAsync<bool?>(await ComposeKeyAsync(Constants.ShouldCheckOrganizationUnassignedItemsKey, userId), shouldCheck);
}
// Helpers
[Obsolete("Use IStorageMediatorService instead")]

View File

@@ -152,17 +152,17 @@ namespace Bit.iOS.Autofill
}
}
//public override async void ProvideCredentialWithoutUserInteraction(ASPasswordCredentialIdentity credentialIdentity)
//{
// try
// {
// await ProvideCredentialWithoutUserInteractionAsync(credentialIdentity);
// }
// catch (Exception ex)
// {
// OnProvidingCredentialException(ex);
// }
//}
public override async void ProvideCredentialWithoutUserInteraction(ASPasswordCredentialIdentity credentialIdentity)
{
try
{
await ProvideCredentialWithoutUserInteractionAsync(credentialIdentity);
}
catch (Exception ex)
{
OnProvidingCredentialException(ex);
}
}
[Export("prepareInterfaceToProvideCredentialForRequest:")]
public override async void PrepareInterfaceToProvideCredential(IASCredentialRequest credentialRequest)
@@ -197,17 +197,17 @@ namespace Bit.iOS.Autofill
}
}
//public override async void PrepareInterfaceToProvideCredential(ASPasswordCredentialIdentity credentialIdentity)
//{
// try
// {
// await PrepareInterfaceToProvideCredentialAsync(c => c.PasswordCredentialIdentity = credentialIdentity);
// }
// catch (Exception ex)
// {
// OnProvidingCredentialException(ex);
// }
//}
public override async void PrepareInterfaceToProvideCredential(ASPasswordCredentialIdentity credentialIdentity)
{
try
{
await PrepareInterfaceToProvideCredentialAsync(c => c.PasswordCredentialIdentity = credentialIdentity);
}
catch (Exception ex)
{
OnProvidingCredentialException(ex);
}
}
public override async void PrepareInterfaceForExtensionConfiguration()
{
@@ -699,7 +699,7 @@ namespace Bit.iOS.Autofill
{
var appOptions = new AppOptions { IosExtension = true };
var twoFactorPage = new TwoFactorPage(authingWithSso, appOptions);
var app = new App.App();
var app = new App.App(appOptions);
ThemeManager.SetTheme(app.Resources);
ThemeManager.ApplyResourcesTo(twoFactorPage);
if (twoFactorPage.BindingContext is TwoFactorPageViewModel vm)

View File

@@ -11,7 +11,7 @@
<key>CFBundleIdentifier</key>
<string>com.8bit.bitwarden.autofill</string>
<key>CFBundleShortVersionString</key>
<string>2024.5.1</string>
<string>2024.7.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>CFBundleLocalizations</key>

View File

@@ -11,7 +11,7 @@
<key>CFBundleIdentifier</key>
<string>com.8bit.bitwarden.find-login-action-extension</string>
<key>CFBundleShortVersionString</key>
<string>2024.5.1</string>
<string>2024.7.0</string>
<key>CFBundleLocalizations</key>
<array>
<string>en</string>

View File

@@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>2024.5.1</string>
<string>2024.7.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>MinimumOSVersion</key>

View File

@@ -1,20 +0,0 @@
#!/usr/bin/env python3
repo_url = "https://mobileapp.bitwarden.com/fdroid/repo"
repo_name = "Bitwarden F-Droid Repo"
repo_icon = "fdroid-icon.png"
repo_description = """
F-Droid repo for Bitwarden.
"""
archive_older = 2
archive_url = "https://does.not.exist"
archive_name = "Bitwarden Archive Repo"
archive_icon = "fdroid-icon.png"
archive_description = """
F-Droid archive repo for Bitwarden.
"""
repo_keyalias = "bitwarden-Virtual-Machine"
keystore = "keystore.jks"
keydname = "CN=bitwarden-Virtual-Machine, OU=F-Droid"

18
store/fdroid/config.yml Normal file
View File

@@ -0,0 +1,18 @@
---
repo_url: https://mobileapp.bitwarden.com/fdroid/repo
repo_name: Bitwarden F-Droid Repo
repo_icon: fdroid-icon.png
repo_description: >-
F-Droid repo for Bitwarden.
archive_older: 2
archive_url: https://does.not.exist/archive
archive_name: Bitwarden Archive Repo
archive_icon: fdroid-icon.png
archive_description: >-
F-Droid archive repo for Bitwarden.
repo_keyalias: bitwarden-Virtual-Machine
keystore: keystore.jks
keydname: CN=bitwarden-Virtual-Machine, OU=F-Droid