1
0
mirror of https://github.com/bitwarden/mobile synced 2025-12-05 23:53:33 +00:00

Compare commits

..

31 Commits

Author SHA1 Message Date
Federico Maccaroni
ad55ba232f Removed grouping from Settings to fix a crash on iOS 15.4 2022-03-15 11:21:20 -03:00
Micaiah Martin
1f8620dc17 Moved to new Google Service Account (#1789)
(cherry picked from commit a9be659e27)
2022-03-14 12:52:14 -07:00
Micaiah Martin
a4bc46f408 Moved to new Google Service Account (#1788)
(cherry picked from commit 39596d7533)
2022-03-14 12:52:10 -07:00
Daniel James Smith
62f1522af3 Bump target framework to netcoreapp3.1 (#1817)
Co-authored-by: Micaiah Martin <77340197+mimartin12@users.noreply.github.com>
(cherry picked from commit 2076c11cbd)
2022-03-14 12:28:49 -07:00
Micaiah Martin
3d0a405d7d Renewed certificates and profiles (#1823)
(cherry picked from commit a33232dec0)
2022-03-14 12:07:38 -07:00
Federico Maccaroni
bb18e40d00 Fix #1745 crash on scroll of grouped collection view on iOS 15.4 beta 2022-03-14 16:05:40 -03:00
github-actions[bot]
6305b4d292 Bumped version to 2.16.3 (#1843)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-03-14 12:01:32 -07:00
Joseph Flinn
3562e2bac6 Patch/release new build artifact name (#1778)
* Switching the iOS build artifact and release asset names

* disabling jobs/steps to test the new release asset name

* switching to download artifacts from rc

* testing the upload of the 'Bitwarden iOS' directory

* Build zip asset of the Bitwarden iOS asset

* trying a couple of different zip paths

* Final package test

* Re-enabling all of the jobs after testing

(cherry picked from commit 95581bd4d9)
2022-03-14 11:51:52 -07:00
Joseph Flinn
403f78ceca Update hotfix release branch name to hotfix-rc (#1834)
(cherry picked from commit bdd0ea007b)
2022-03-14 11:50:09 -07:00
Federico Maccaroni
e4e52a41e0 Merge branch 'master' into rc
* master:
  Build: Upload dSYMs to AppCenter (#1776)
  Fix for vault timeout not firing on resume (#1775)
2022-02-14 16:36:38 -03:00
Federico Maccaroni
4fb811ae87 Build: Upload dSYMs to AppCenter (#1776)
* Added dsym artifact to be uploaded alongside with the ipa o the build.yml

* Added dsym artifact to be uploaded alongside with the ipa o the build.yml

* Fixed build.yml dsym artifact

* Fix upload dsym build.yml

* Fix build.yml to check what gets exported and after this will become the adjustment for the dsym (disabling Android build for this test)

* Fix build.yml to copy all dsyms and artifact them (disabling Android build for this test)

* Fix build.yml to only copy all dsyms and ipa and artifact them (disabling Android build for this test)

* Added Appcenterr CLI and upload missing symbols for dSYM to the build

* Add secret to build workflow (#1771)

* Changed build.yml upload dsym command from upload-missing-symbols to upload-symbols

* Added restrictions for uploading iOS symbols to AppCenter on build.yml

Co-authored-by: Vince Grassia <593223+vgrassia@users.noreply.github.com>
2022-02-14 11:06:35 -08:00
Matt Portune
2e1de95461 Fix for vault timeout not firing on resume (#1775)
* fix for vault timeout not firing on resume

* call ResumedAsync with FireAndForget
2022-02-14 11:30:00 -05:00
Matt Portune
3127295444 Fix for vault timeout not firing on resume (#1775)
* fix for vault timeout not firing on resume

* call ResumedAsync with FireAndForget
2022-02-14 11:29:04 -05:00
Federico Maccaroni
52f1143ad7 Merge branch 'master' into rc
* master:
  [Icons] - BUG - Update groupings icon for collections (#1773)
  Autosync the updated translations (#1766)
  check email for null before authenticating (#1769)
  remove datepicker style workaround (#1768)
  Bump version to 2.16.2 (#1765)
  Improved code for periodic Autofocus on scan for better cancellation and task handlilng (#1764)
  Updated Sed expression for Android manifests (#1763)
  Bumped version to 2.16.1 (#1762)
  Add iOS Share Extension to our version bump automation (#1761)
  Bumped version to 2.16.0 (#1760)
  Improved Autofocus code on ScanPage for better cancellation and exception handling #1228 (#1759)
  [Help] Update links to new pattern (#1758)
  Client & Version headers (#1757)
  Autosync the updated translations (#1752)
  Fix delete account SSO with CME that the OTP parameter was being sent incorrectly to the server (#1751)
  [Icons] Fast follower changes (#1750)
  Removed punctuation on some string resources regarding send (#1747)

# Conflicts:
#	src/Android/Properties/AndroidManifest.xml
#	src/iOS.Autofill/Info.plist
#	src/iOS.Extension/Info.plist
#	src/iOS.ShareExtension/Info.plist
#	src/iOS/Info.plist
2022-02-14 10:12:23 -03:00
Vincent Salucci
615136be96 [Icons] - BUG - Update groupings icon for collections (#1773) 2022-02-12 12:27:37 +00:00
github-actions[bot]
e4230ac4f6 Autosync the updated translations (#1766)
Co-authored-by: github-actions <>
2022-02-11 22:47:48 +01:00
Jake Fink
15e9915da6 check email for null before authenticating (#1769)
* check email for null before authenticating

* add return after logging out and track error if email not found
2022-02-11 13:46:17 -05:00
Jake Fink
59ed76d956 remove datepicker style workaround (#1768) 2022-02-11 12:23:51 -05:00
github-actions[bot]
972755c725 Bump version to 2.16.2 (#1765)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-02-10 13:47:03 -07:00
Federico Maccaroni
92c40e2984 Improved code for periodic Autofocus on scan for better cancellation and task handlilng (#1764) 2022-02-10 13:03:02 -05:00
Micaiah Martin
9eed421c67 Updated Sed expression for Android manifests (#1763) 2022-02-10 09:42:57 -07:00
github-actions[bot]
15db96b06c Bumped version to 2.16.1 (#1762)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-02-10 08:19:02 -08:00
Joseph Flinn
54ccc1cbca Add iOS Share Extension to our version bump automation (#1761) 2022-02-10 07:54:43 -08:00
github-actions[bot]
ee69364b1d Bumped version to 2.16.0 (#1760)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2022-02-10 06:46:19 -08:00
Federico Maccaroni
76f1057951 Improved Autofocus code on ScanPage for better cancellation and exception handling #1228 (#1759) 2022-02-09 14:22:04 -03:00
Vincent Salucci
3491c1aaeb [Help] Update links to new pattern (#1758) 2022-02-08 17:42:53 -06:00
Oscar Hinton
427ff09af0 Client & Version headers (#1757) 2022-02-08 17:43:40 +01:00
github-actions[bot]
10fafaf8c8 Autosync the updated translations (#1752)
Co-authored-by: github-actions <>
2022-02-04 12:56:49 +01:00
Federico Maccaroni
31cdf401f1 Fix delete account SSO with CME that the OTP parameter was being sent incorrectly to the server (#1751) 2022-02-03 17:46:45 -03:00
Vincent Salucci
4373cee636 [Icons] Fast follower changes (#1750) 2022-02-03 10:34:20 -06:00
Federico Maccaroni
63b27f4e6d Removed punctuation on some string resources regarding send (#1747) 2022-02-02 16:07:58 -03:00
61 changed files with 344 additions and 200 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -43,7 +43,7 @@ jobs:
echo "::set-output name=rc_branch_exists::0"
fi
if [[ $(git ls-remote --heads origin hotfix) ]]; then
if [[ $(git ls-remote --heads origin hotfix-rc) ]]; then
echo "::set-output name=hotfix_branch_exists::1"
else
echo "::set-output name=hotfix_branch_exists::0"
@@ -182,9 +182,9 @@ jobs:
&& needs.setup.outputs.rc_branch_exists == 0
&& needs.setup.outputs.hotfix_branch_exists == 0)
|| (github.ref == 'refs/heads/rc' && needs.setup.outputs.hotfix_branch_exists == 0)
|| github.ref == 'refs/heads/hotfix'
|| github.ref == 'refs/heads/hotfix-rc'
run: |
PUBLISHER_PATH="$GITHUB_WORKSPACE/store/google/Publisher/bin/Release/netcoreapp2.0/Publisher.dll"
PUBLISHER_PATH="$GITHUB_WORKSPACE/store/google/Publisher/bin/Release/netcoreapp3.1/Publisher.dll"
CREDS_PATH="$HOME/secrets/play_creds.json"
AAB_PATH="$GITHUB_WORKSPACE/com.x8bit.bitwarden.aab"
TRACK="internal"
@@ -366,6 +366,18 @@ jobs:
- name: Checkout repo
uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4
- name: Login to Azure - Prod Subscription
uses: Azure/login@77f1b2e3fb80c0e8645114159d17008b8a2e475a
with:
creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }}
- name: Retrieve secrets
id: retrieve-secrets
uses: Azure/get-keyvault-secrets@80ccd3fafe5662407cc2e55f202ee34bfff8c403
with:
keyvault: "bitwarden-prod-kv"
secrets: "appcenter-ios-token"
- name: Decrypt secrets
env:
DECRYPT_FILE_PASSWORD: ${{ secrets.DECRYPT_FILE_PASSWORD }}
@@ -479,20 +491,55 @@ jobs:
-exportOptionsPlist $EXPORT_OPTIONS_PATH
shell: bash
- name: Upload App Store .ipa artifact
- name: Copy all dSYMs files to upload
run: |
ARCHIVE_DSYMS_PATH="$HOME/Library/Developer/Xcode/Archives/*/*.xcarchive/dSYMs"
EXPORT_PATH="./bitwarden-export"
cp -r $ARCHIVE_DSYMS_PATH $EXPORT_PATH
shell: bash
- name: Upload App Store .ipa & dSYMs artifacts
uses: actions/upload-artifact@ee69f02b3dfdecd58bb31b4d133da38ba6fe3700 # v2.2.4
with:
name: Bitwarden.ipa
path: ./bitwarden-export/Bitwarden.ipa
name: Bitwarden iOS
path: |
./bitwarden-export/Bitwarden.ipa
./bitwarden-export/dSYMs/*.*
if-no-files-found: error
- name: Install AppCenter CLI
if: |
(github.ref == 'refs/heads/master'
&& needs.setup.outputs.rc_branch_exists == 0
&& needs.setup.outputs.hotfix_branch_exists == 0)
|| (github.ref == 'refs/heads/rc' && needs.setup.outputs.hotfix_branch_exists == 0)
|| github.ref == 'refs/heads/hotfix-rc'
uses: actions/setup-node@v2
with:
node-version: '14'
- run: npm install -g appcenter-cli
- name: Upload dSYMs to App Center
if: |
(github.ref == 'refs/heads/master'
&& needs.setup.outputs.rc_branch_exists == 0
&& needs.setup.outputs.hotfix_branch_exists == 0)
|| (github.ref == 'refs/heads/rc' && needs.setup.outputs.hotfix_branch_exists == 0)
|| github.ref == 'refs/heads/hotfix-rc'
env:
APPCENTER_IOS_TOKEN: ${{ steps.retrieve-secrets.outputs.appcenter-ios-token }}
run: |
appcenter crashes upload-symbols -a kspearrin/bitwarden -s "./bitwarden-export/dSYMs" --token $APPCENTER_IOS_TOKEN
shell: bash
- name: Deploy to App Store
if: |
(github.ref == 'refs/heads/master'
&& needs.setup.outputs.rc_branch_exists == 0
&& needs.setup.outputs.hotfix_branch_exists == 0)
|| (github.ref == 'refs/heads/rc' && needs.setup.outputs.hotfix_branch_exists == 0)
|| github.ref == 'refs/heads/hotfix'
|| github.ref == 'refs/heads/hotfix-rc'
env:
APPLE_ID_USERNAME: ${{ secrets.APPLE_ID_USERNAME }}
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
@@ -555,7 +602,7 @@ jobs:
if: |
(github.ref == 'refs/heads/master')
|| (github.ref == 'refs/heads/rc')
|| (github.ref == 'refs/heads/hotfix')
|| (github.ref == 'refs/heads/hotfix-rc')
env:
CLOC_STATUS: ${{ needs.cloc.result }}
ANDROID_STATUS: ${{ needs.android.result }}

View File

@@ -22,9 +22,9 @@ jobs:
steps:
- name: Branch check
run: |
if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ "$GITHUB_REF" != "refs/heads/hotfix" ]]; then
if [[ "$GITHUB_REF" != "refs/heads/rc" ]] && [[ "$GITHUB_REF" != "refs/heads/hotfix-rc" ]]; then
echo "==================================="
echo "[!] Can only release from the 'rc' or 'hotfix' branches"
echo "[!] Can only release from the 'rc' or 'hotfix-rc' branches"
echo "==================================="
exit 1
fi
@@ -68,13 +68,16 @@ jobs:
workflow_conclusion: success
branch: ${{ steps.branch.outputs.branch-name }}
- name: Prep Bitwarden iOS release asset
run: zip -r Bitwarden\ iOS.zip Bitwarden\ iOS
- name: Create release
uses: ncipollo/release-action@95215a3cb6e6a1908b3c44e00b4fdb15548b1e09 # v2.8.5
with:
artifacts: "./com.x8bit.bitwarden.aab/com.x8bit.bitwarden.aab,
./com.x8bit.bitwarden.apk/com.x8bit.bitwarden.apk,
./com.x8bit.bitwarden-fdroid.apk/com.x8bit.bitwarden-fdroid.apk,
./Bitwarden.ipa/Bitwarden.ipa"
./Bitwarden iOS.zip"
commit: ${{ github.sha }}
tag: v${{ steps.retrieve-mobile-version.outputs.mobile_version }}
name: Version ${{ steps.retrieve-mobile-version.outputs.mobile_version }}

View File

@@ -44,6 +44,12 @@ jobs:
version: ${{ github.event.inputs.version_number }}
file_path: "./src/iOS.Extension/Info.plist"
- name: Bump Version - iOS.ShareExtension
uses: bitwarden/gh-actions/version-bump@03ad9a873c39cdc95dd8d77dbbda67f84db43945
with:
version: ${{ github.event.inputs.version_number }}
file_path: "./src/iOS.ShareExtension/Info.plist"
- name: Bump Version - iOS
uses: bitwarden/gh-actions/version-bump@03ad9a873c39cdc95dd8d77dbbda67f84db43945
with:

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="2.16.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="2.16.3" android:installLocation="internalOnly" package="com.x8bit.bitwarden">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="30"/>

View File

@@ -97,7 +97,7 @@ namespace Bit.App
{
if (Device.RuntimePlatform == Device.iOS)
{
ResumedAsync();
ResumedAsync().FireAndForget();
}
}
else if (message.Command == "slept")
@@ -205,7 +205,7 @@ namespace Bit.App
_isResumed = true;
if (Device.RuntimePlatform == Device.Android)
{
ResumedAsync();
ResumedAsync().FireAndForget();
}
}
@@ -215,12 +215,11 @@ namespace Bit.App
_messagingService.Send("stopEventTimer");
}
private async void ResumedAsync()
private async Task ResumedAsync()
{
await UpdateThemeAsync();
await _vaultTimeoutService.CheckVaultTimeoutAsync();
_messagingService.Send("startEventTimer");
await UpdateThemeAsync();
await ClearCacheIfNeededAsync();
Prime();
SyncIfNeeded();

View File

@@ -10,6 +10,9 @@ using Bit.Core.Models.Domain;
using Bit.Core.Models.Request;
using Bit.Core.Utilities;
using Xamarin.Forms;
#if !FDROID
using Microsoft.AppCenter.Crashes;
#endif
namespace Bit.App.Pages
{
@@ -137,8 +140,17 @@ namespace Bit.App.Pages
if (_usingKeyConnector && !(BiometricLock || PinLock))
{
await _vaultTimeoutService.LogOutAsync();
return;
}
_email = await _userService.GetEmailAsync();
if (string.IsNullOrWhiteSpace(_email))
{
await _vaultTimeoutService.LogOutAsync();
#if !FDROID
Crashes.TrackError(new NullReferenceException("Email not found in storage"));
#endif
return;
}
var webVault = _environmentService.GetWebVaultUrl();
if (string.IsNullOrWhiteSpace(webVault))
{

View File

@@ -116,7 +116,7 @@ namespace Bit.App.Pages
var redirectUri = "bitwarden://sso-callback";
var url = _apiService.IdentityBaseUrl + "/connect/authorize?" +
"client_id=" + _platformUtilsService.IdentityClientId + "&" +
"client_id=" + _platformUtilsService.GetClientType().GetString() + "&" +
"redirect_uri=" + Uri.EscapeDataString(redirectUri) + "&" +
"response_type=code&scope=api%20offline_access&" +
"state=" + state + "&code_challenge=" + codeChallenge + "&" +

View File

@@ -328,7 +328,7 @@ namespace Bit.App.Pages
AppResources.Cancel, null, options.ToArray());
if (method == AppResources.RecoveryCodeTitle)
{
_platformUtilsService.LaunchUri("https://help.bitwarden.com/article/lost-two-step-device/");
_platformUtilsService.LaunchUri("https://bitwarden.com/help/lost-two-step-device/");
}
else if (method != AppResources.Cancel && method != null)
{

View File

@@ -124,8 +124,7 @@
Spacing="0" Padding="0" VerticalOptions="FillAndExpand"
StyleClass="list-row-header-container, list-row-header-container-platform">
<BoxView
StyleClass="list-section-separator-top, list-section-separator-top-platform"
IsVisible="{Binding First, Converter={StaticResource inverseBool}}" />
StyleClass="list-section-separator-top, list-section-separator-top-platform" />
<StackLayout StyleClass="list-row-header, list-row-header-platform">
<Label
Text="{Binding Name}"

View File

@@ -0,0 +1,6 @@
namespace Bit.App.Pages
{
public interface ISettingsPageListItem
{
}
}

View File

@@ -82,8 +82,26 @@
</controls:ExtendedStackLayout>
</DataTemplate>
<DataTemplate
x:Key="headerTemplate"
x:DataType="pages:SettingsPageHeaderListItem">
<StackLayout
Padding="0" Spacing="0" VerticalOptions="FillAndExpand"
StyleClass="list-row-header-container, list-row-header-container-platform">
<BoxView
StyleClass="list-section-separator-top, list-section-separator-top-platform" />
<StackLayout StyleClass="list-row-header, list-row-header-platform">
<Label
Text="{Binding Title}"
StyleClass="list-header, list-header-platform" />
</StackLayout>
<BoxView StyleClass="list-section-separator-bottom, list-section-separator-bottom-platform" />
</StackLayout>
</DataTemplate>
<pages:SettingsPageListItemSelector
x:Key="listItemDataTemplateSelector"
HeaderTemplate="{StaticResource headerTemplate}"
RegularTemplate="{StaticResource regularTemplate}"
TimePickerTemplate="{StaticResource timePickerTemplate}" />
</ResourceDictionary>
@@ -93,28 +111,8 @@
ItemsSource="{Binding GroupedItems}"
VerticalOptions="FillAndExpand"
ItemTemplate="{StaticResource listItemDataTemplateSelector}"
IsGrouped="True"
SelectionMode="Single"
SelectionChanged="RowSelected"
StyleClass="list, list-platform">
<CollectionView.GroupHeaderTemplate>
<DataTemplate x:DataType="pages:SettingsPageListGroup">
<StackLayout
Padding="0" Spacing="0" VerticalOptions="FillAndExpand"
StyleClass="list-row-header-container, list-row-header-container-platform">
<BoxView
StyleClass="list-section-separator-top, list-section-separator-top-platform"
IsVisible="{Binding First, Converter={StaticResource inverseBool}}" />
<StackLayout StyleClass="list-row-header, list-row-header-platform">
<Label
Text="{Binding Name}"
StyleClass="list-header, list-header-platform" />
</StackLayout>
<BoxView StyleClass="list-section-separator-bottom, list-section-separator-bottom-platform" />
</StackLayout>
</DataTemplate>
</CollectionView.GroupHeaderTemplate>
</controls:ExtendedCollectionView>
StyleClass="list, list-platform" />
</pages:BaseContentPage>

View File

@@ -0,0 +1,12 @@
namespace Bit.App.Pages
{
public class SettingsPageHeaderListItem : ISettingsPageListItem
{
public SettingsPageHeaderListItem(string title)
{
Title = title;
}
public string Title { get; }
}
}

View File

@@ -1,12 +1,11 @@
using System;
using Bit.App.Resources;
using Bit.App.Utilities;
using System.Collections.Generic;
using Xamarin.Forms;
namespace Bit.App.Pages
{
public class SettingsPageListItem
public class SettingsPageListItem : ISettingsPageListItem
{
public string Icon { get; set; }
public string Name { get; set; }

View File

@@ -4,21 +4,19 @@ namespace Bit.App.Pages
{
public class SettingsPageListItemSelector : DataTemplateSelector
{
public DataTemplate HeaderTemplate { get; set; }
public DataTemplate RegularTemplate { get; set; }
public DataTemplate TimePickerTemplate { get; set; }
protected override DataTemplate OnSelectTemplate(object item, BindableObject container)
{
if (item is SettingsPageHeaderListItem)
{
return HeaderTemplate;
}
if (item is SettingsPageListItem listItem)
{
if (listItem.ShowTimeInput)
{
return TimePickerTemplate;
}
else
{
return RegularTemplate;
}
return listItem.ShowTimeInput ? TimePickerTemplate : RegularTemplate;
}
return null;
}

View File

@@ -11,6 +11,7 @@ using Bit.Core.Enums;
using Bit.Core.Models.Domain;
using Xamarin.Forms;
using ZXing.Client.Result;
using Xamarin.CommunityToolkit.ObjectModel;
namespace Bit.App.Pages
{
@@ -82,11 +83,11 @@ namespace Bit.App.Pages
_keyConnectorService = ServiceContainer.Resolve<IKeyConnectorService>("keyConnectorService");
_clipboardService = ServiceContainer.Resolve<IClipboardService>("clipboardService");
GroupedItems = new ExtendedObservableCollection<SettingsPageListGroup>();
GroupedItems = new ObservableRangeCollection<ISettingsPageListItem>();
PageTitle = AppResources.Settings;
}
public ExtendedObservableCollection<SettingsPageListGroup> GroupedItems { get; set; }
public ObservableRangeCollection<ISettingsPageListItem> GroupedItems { get; set; }
public async Task InitAsync()
{
@@ -157,7 +158,7 @@ namespace Bit.App.Pages
public void Help()
{
_platformUtilsService.LaunchUri("https://help.bitwarden.com/");
_platformUtilsService.LaunchUri("https://bitwarden.com/help/");
}
public async Task FingerprintAsync()
@@ -177,7 +178,7 @@ namespace Bit.App.Pages
AppResources.LearnMore, AppResources.Close);
if (learnMore)
{
_platformUtilsService.LaunchUri("https://help.bitwarden.com/article/fingerprint-phrase/");
_platformUtilsService.LaunchUri("https://bitwarden.com/help/fingerprint-phrase/");
}
}
@@ -188,7 +189,7 @@ namespace Bit.App.Pages
public void Import()
{
_platformUtilsService.LaunchUri("https://help.bitwarden.com/article/import-data/");
_platformUtilsService.LaunchUri("https://bitwarden.com/help/import-data/");
}
public void WebVault()
@@ -207,7 +208,7 @@ namespace Bit.App.Pages
AppResources.LearnOrg, AppResources.Yes, AppResources.Cancel);
if (confirmed)
{
_platformUtilsService.LaunchUri("https://help.bitwarden.com/article/what-is-an-organization/");
_platformUtilsService.LaunchUri("https://bitwarden.com/help/about-organizations/");
}
}
@@ -217,7 +218,7 @@ namespace Bit.App.Pages
AppResources.TwoStepLogin, AppResources.Yes, AppResources.Cancel);
if (confirmed)
{
_platformUtilsService.LaunchUri("https://help.bitwarden.com/article/setup-two-step-login/");
_platformUtilsService.LaunchUri("https://bitwarden.com/help/setup-two-step-login/");
}
}
@@ -227,7 +228,7 @@ namespace Bit.App.Pages
AppResources.ChangeMasterPassword, AppResources.Yes, AppResources.Cancel);
if (confirmed)
{
_platformUtilsService.LaunchUri("https://help.bitwarden.com/article/change-your-master-password/");
_platformUtilsService.LaunchUri("https://bitwarden.com/help/master-password/#change-your-master-password");
}
}
@@ -509,7 +510,9 @@ namespace Bit.App.Pages
new SettingsPageListItem { Name = AppResources.RateTheApp },
new SettingsPageListItem { Name = AppResources.DeleteAccount }
};
GroupedItems.ResetWithRange(new List<SettingsPageListGroup>
// TODO: improve this. Leaving this as is to reduce error possibility on the hotfix.
var settingsListGroupItems = new List<SettingsPageListGroup>()
{
new SettingsPageListGroup(autofillItems, AppResources.Autofill, doUpper, true),
new SettingsPageListGroup(manageItems, AppResources.Manage, doUpper),
@@ -517,7 +520,14 @@ namespace Bit.App.Pages
new SettingsPageListGroup(accountItems, AppResources.Account, doUpper),
new SettingsPageListGroup(toolsItems, AppResources.Tools, doUpper),
new SettingsPageListGroup(otherItems, AppResources.Other, doUpper)
});
};
var settingsItems = new List<ISettingsPageListItem>();
foreach (var itemGroup in settingsListGroupItems)
{
settingsItems.Add(new SettingsPageHeaderListItem(itemGroup.Name));
settingsItems.AddRange(itemGroup);
}
GroupedItems.ReplaceRange(settingsItems);
}
private bool IncludeLinksWithSubscriptionInfo()

View File

@@ -759,7 +759,7 @@ namespace Bit.App.Pages
public void PasswordPromptHelp()
{
_platformUtilsService.LaunchUri("https://bitwarden.com/help/article/managing-items/#protect-individual-items");
_platformUtilsService.LaunchUri("https://bitwarden.com/help/managing-items/#protect-individual-items");
}
private void TypeChanged()

View File

@@ -78,7 +78,7 @@ namespace Bit.App.Pages
AppResources.FeatureUnavailable, AppResources.LearnMore, AppResources.Cancel);
if (confirmed)
{
_platformUtilsService.LaunchUri("https://help.bitwarden.com/article/update-encryption-key/");
_platformUtilsService.LaunchUri("https://bitwarden.com/help/account-encryption-key/#rotate-your-encryption-key");
}
}
}

View File

@@ -106,8 +106,7 @@
Spacing="0" Padding="0" VerticalOptions="FillAndExpand"
StyleClass="list-row-header-container, list-row-header-container-platform">
<BoxView
StyleClass="list-section-separator-top, list-section-separator-top-platform"
IsVisible="{Binding First, Converter={StaticResource inverseBool}}" />
StyleClass="list-section-separator-top, list-section-separator-top-platform" />
<StackLayout StyleClass="list-row-header, list-row-header-platform">
<Label
Text="{Binding Name}"

View File

@@ -80,7 +80,7 @@ namespace Bit.App.Pages
}
else if (Collection != null)
{
_icon = BitwardenIcons.Globe;
_icon = BitwardenIcons.Collection;
}
else if (Type != null)
{

View File

@@ -1,5 +1,8 @@
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AppCenter.Crashes;
using Xamarin.Forms;
namespace Bit.App.Pages
@@ -8,8 +11,8 @@ namespace Bit.App.Pages
{
private readonly Action<string> _callback;
private DateTime? _timerStarted = null;
private TimeSpan _timerMaxLength = TimeSpan.FromMinutes(3);
private CancellationTokenSource _autofocusCts;
private Task _continuousAutofocusTask;
public ScanPage(Action<string> callback)
{
@@ -32,22 +35,46 @@ namespace Bit.App.Pages
{
base.OnAppearing();
_zxing.IsScanning = true;
_timerStarted = DateTime.Now;
Device.StartTimer(new TimeSpan(0, 0, 2), () =>
// Fix for Autofocus, now it's done every 2 seconds so that the user does't have to do it
// https://github.com/Redth/ZXing.Net.Mobile/issues/414
_autofocusCts?.Cancel();
_autofocusCts = new CancellationTokenSource(TimeSpan.FromMinutes(3));
var autofocusCts = _autofocusCts;
_continuousAutofocusTask = Task.Run(async () =>
{
if (_timerStarted == null || (DateTime.Now - _timerStarted) > _timerMaxLength)
try
{
return false;
while (!autofocusCts.IsCancellationRequested)
{
await Task.Delay(TimeSpan.FromSeconds(2), autofocusCts.Token);
Device.BeginInvokeOnMainThread(() =>
{
if (!autofocusCts.IsCancellationRequested)
{
_zxing.AutoFocus();
}
});
}
}
_zxing.AutoFocus();
return true;
});
catch (TaskCanceledException) { }
catch (Exception ex)
{
#if !FDROID
Crashes.TrackError(ex);
#endif
}
}, autofocusCts.Token);
}
protected override void OnDisappearing()
protected override async void OnDisappearing()
{
_timerStarted = null;
_autofocusCts?.Cancel();
await _continuousAutofocusTask;
_zxing.IsScanning = false;
base.OnDisappearing();
}

View File

@@ -2111,7 +2111,7 @@
<value>Etibarsız təsdiqləmə kodu</value>
</data>
<data name="RequestOTP" xml:space="preserve">
<value>Request one-time password</value>
<value>Tək istifadəlik parol tələb et</value>
</data>
<data name="SendCode" xml:space="preserve">
<value>Kod göndər</value>
@@ -2120,24 +2120,24 @@
<value>Göndərilir</value>
</data>
<data name="CopySendLinkOnSave" xml:space="preserve">
<value>Copy Send link on save</value>
<value>Send bağlantısını saxlamaq üçün kopyala</value>
</data>
<data name="SendingCode" xml:space="preserve">
<value>Sending code</value>
<value>Kod göndərilir</value>
</data>
<data name="Verifying" xml:space="preserve">
<value>Verifying</value>
<value>Təsdiqlənir</value>
</data>
<data name="ResendCode" xml:space="preserve">
<value>Resend Code</value>
<value>Kodu təkrar göndər</value>
</data>
<data name="AVerificationCodeWasSentToYourEmail" xml:space="preserve">
<value>A verification code was sent to your email</value>
<value>Təsdiqləmə kodu e-poçtunuza göndərildi</value>
</data>
<data name="AnErrorOccurredWhileSendingAVerificationCodeToYourEmailPleaseTryAgain" xml:space="preserve">
<value>An error occurred while sending a verification code to your email. Please try again</value>
<value>E-poçtunuza təsdiqləmə kodu göndərilərkən bir xəta baş verdi. Zəhmət olmasa yenidən sınayın</value>
</data>
<data name="EnterTheVerificationCodeThatWasSentToYourEmail" xml:space="preserve">
<value>Enter the verification code that was sent to your email</value>
<value>E-poçtunuza göndərilmiş təsdiqləmə kodunu daxil edin</value>
</data>
</root>

View File

@@ -1923,7 +1923,7 @@
<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>Disable this Send so that no one can access it.</value>
<value>Disable this Send so that no one can access it</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">

View File

@@ -140,7 +140,7 @@
<comment>Navigate back to the previous screen.</comment>
</data>
<data name="Bitwarden" xml:space="preserve">
<value>Битуорден</value>
<value>Bitwarden</value>
<comment>App name. Shouldn't ever change.</comment>
</data>
<data name="Cancel" xml:space="preserve">
@@ -182,11 +182,11 @@
<value>Редактиране на папка</value>
</data>
<data name="Email" xml:space="preserve">
<value>Е-поща</value>
<value>Имейл</value>
<comment>Short label for an email address.</comment>
</data>
<data name="EmailAddress" xml:space="preserve">
<value>Е-поща</value>
<value>Имейл адрес</value>
<comment>Full label for a email address.</comment>
</data>
<data name="EmailUs" xml:space="preserve">
@@ -288,7 +288,7 @@
<comment>The title for the vault page.</comment>
</data>
<data name="Name" xml:space="preserve">
<value>Наименование</value>
<value>Име</value>
<comment>Label for an entity name.</comment>
</data>
<data name="No" xml:space="preserve">

View File

@@ -1924,7 +1924,7 @@
<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>Disable this Send so that no one can access it.</value>
<value>Disable this Send so that no one can access it</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">
@@ -1992,7 +1992,7 @@
<value>Custom</value>
</data>
<data name="ShareOnSave" xml:space="preserve">
<value>Share this Send upon save.</value>
<value>Share this Send upon save</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">
@@ -2004,7 +2004,7 @@
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="HideEmail" xml:space="preserve">
<value>Hide my email address from recipients.</value>
<value>Hide my email address from recipients</value>
</data>
<data name="SendOptionsPolicyInEffect" xml:space="preserve">
<value>One or more organization policies are affecting your Send options.</value>

View File

@@ -2042,10 +2042,10 @@
<value>Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update your Master Password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.</value>
</data>
<data name="UpdatingPassword" xml:space="preserve">
<value>Updating Password</value>
<value>Aktualizace hesla</value>
</data>
<data name="UpdatePasswordError" xml:space="preserve">
<value>Currently unable to update password</value>
<value>Aktuálně nelze aktualizovat heslo</value>
</data>
<data name="RemoveMasterPassword" xml:space="preserve">
<value>Odstranit hlavní heslo</value>
@@ -2057,7 +2057,7 @@
<value>If you do not want to remove your Master Password, you may leave this organization.</value>
</data>
<data name="LeaveOrganization" xml:space="preserve">
<value>Leave Organization</value>
<value>Opustit organizaci</value>
</data>
<data name="LeaveOrganizationName" xml:space="preserve">
<value>Leave {0}?</value>
@@ -2111,7 +2111,7 @@
<value>Neplatný ověřovací kód.</value>
</data>
<data name="RequestOTP" xml:space="preserve">
<value>Request one-time password</value>
<value>Vyžádat jednorázové heslo</value>
</data>
<data name="SendCode" xml:space="preserve">
<value>Poslat kód</value>
@@ -2120,19 +2120,19 @@
<value>Odesílání</value>
</data>
<data name="CopySendLinkOnSave" xml:space="preserve">
<value>Copy Send link on save</value>
<value>Při uložení zkopírovat odkaz na Send</value>
</data>
<data name="SendingCode" xml:space="preserve">
<value>Sending code</value>
<value>Odesílání kódu</value>
</data>
<data name="Verifying" xml:space="preserve">
<value>Verifying</value>
<value>Ověřování</value>
</data>
<data name="ResendCode" xml:space="preserve">
<value>Resend Code</value>
<value>Znovu odeslat kód</value>
</data>
<data name="AVerificationCodeWasSentToYourEmail" xml:space="preserve">
<value>A verification code was sent to your email</value>
<value>Ověřovací kód byl odeslán na váš e-mail</value>
</data>
<data name="AnErrorOccurredWhileSendingAVerificationCodeToYourEmailPleaseTryAgain" xml:space="preserve">
<value>An error occurred while sending a verification code to your email. Please try again</value>

View File

@@ -1923,7 +1923,7 @@
<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>Deaktivér denne Send, så ingen kan tilgå den.</value>
<value>Deaktivér denne Send, så ingen kan tilgå den</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">
@@ -1991,7 +1991,7 @@
<value>Tilpasset</value>
</data>
<data name="ShareOnSave" xml:space="preserve">
<value>Del denne Send, når den gemmes.</value>
<value>Del denne Send, når den gemmes</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">
@@ -2003,7 +2003,7 @@
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="HideEmail" xml:space="preserve">
<value>Skjul min e-mailadresse for modtagere.</value>
<value>Skjul min e-mailadresse for modtagere</value>
</data>
<data name="SendOptionsPolicyInEffect" xml:space="preserve">
<value>Én eller flere organisationspolitikker påvirker dine Send-valgmuligheder.</value>

View File

@@ -1936,7 +1936,7 @@
<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>Disable this Send so that no one can access it.</value>
<value>Disable this Send so that no one can access it</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">
@@ -2004,7 +2004,7 @@
<value>Custom</value>
</data>
<data name="ShareOnSave" xml:space="preserve">
<value>Share this Send upon save.</value>
<value>Share this Send upon save</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">
@@ -2016,7 +2016,7 @@
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="HideEmail" xml:space="preserve">
<value>Hide my email address from recipients.</value>
<value>Hide my email address from recipients</value>
</data>
<data name="SendOptionsPolicyInEffect" xml:space="preserve">
<value>One or more organisation policies are affecting your Send options.</value>

View File

@@ -2112,7 +2112,7 @@
<value>کد تایید نامعتبر است.</value>
</data>
<data name="RequestOTP" xml:space="preserve">
<value>Request one-time password</value>
<value>درخواست رمز یکبار مصرف</value>
</data>
<data name="SendCode" xml:space="preserve">
<value>ارسال کد</value>
@@ -2121,7 +2121,7 @@
<value>درحال ارسال</value>
</data>
<data name="CopySendLinkOnSave" xml:space="preserve">
<value>Copy Send link on save</value>
<value>لینک ارسال را در ذخیره کپی کن</value>
</data>
<data name="SendingCode" xml:space="preserve">
<value>درحال ارسال کد</value>

View File

@@ -1924,7 +1924,7 @@
<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>Disable this Send so that no one can access it.</value>
<value>Disable this Send so that no one can access it</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">
@@ -1992,7 +1992,7 @@
<value>Custom</value>
</data>
<data name="ShareOnSave" xml:space="preserve">
<value>Share this Send upon save.</value>
<value>Share this Send upon save</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">
@@ -2004,7 +2004,7 @@
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="HideEmail" xml:space="preserve">
<value>Hide my email address from recipients.</value>
<value>Hide my email address from recipients</value>
</data>
<data name="SendOptionsPolicyInEffect" xml:space="preserve">
<value>One or more organization policies are affecting your Send options.</value>

View File

@@ -1925,7 +1925,7 @@
<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>Disable this Send so that no one can access it.</value>
<value>Disable this Send so that no one can access it</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">
@@ -1993,7 +1993,7 @@
<value>Custom</value>
</data>
<data name="ShareOnSave" xml:space="preserve">
<value>Share this Send upon save.</value>
<value>Share this Send upon save</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">
@@ -2005,7 +2005,7 @@
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="HideEmail" xml:space="preserve">
<value>Hide my email address from recipients.</value>
<value>Hide my email address from recipients</value>
</data>
<data name="SendOptionsPolicyInEffect" xml:space="preserve">
<value>One or more organization policies are affecting your Send options.</value>

View File

@@ -1821,7 +1821,7 @@
<value>Se abilitato, il servizio di accessibilità di Bitwarden mostrerà una finestra a comparsa quando i campi login vengono selezionati per aiutarti con l'auto-completamento.</value>
</data>
<data name="DrawOverDescription3" xml:space="preserve">
<value>Se abilitato, l'accessibilità mostrerà una finestra a compaesa per aumentare il servizio di auto-completamento per le vecchie applicazioni che non supportano il framework di auto-completamento di Android.</value>
<value>Se abilitato, l'accessibilità mostrerà una finestra a comparsa per aumentare il servizio di auto-completamento per le vecchie applicazioni che non supportano il framework di auto-completamento di Android.</value>
</data>
<data name="PersonalOwnershipSubmitError" xml:space="preserve">
<value>A causa di una policy aziendale, non è possibile salvare elementi nella tua cassaforte personale. Cambia l'opzione proprietà in un'organizzazione e scegli tra le raccolte disponibili.</value>

View File

@@ -1924,7 +1924,7 @@
<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>Disable this Send so that no one can access it.</value>
<value>Disable this Send so that no one can access it</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">
@@ -1992,7 +1992,7 @@
<value>Custom</value>
</data>
<data name="ShareOnSave" xml:space="preserve">
<value>Share this Send upon save.</value>
<value>Share this Send upon save</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">
@@ -2004,7 +2004,7 @@
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="HideEmail" xml:space="preserve">
<value>Hide my email address from recipients.</value>
<value>Hide my email address from recipients</value>
</data>
<data name="SendOptionsPolicyInEffect" xml:space="preserve">
<value>One or more organization policies are affecting your Send options.</value>

View File

@@ -1923,7 +1923,7 @@
<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>Disable this Send so that no one can access it.</value>
<value>Disable this Send so that no one can access it</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">
@@ -2003,7 +2003,7 @@
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="HideEmail" xml:space="preserve">
<value>Hide my email address from recipients.</value>
<value>Hide my email address from recipients</value>
</data>
<data name="SendOptionsPolicyInEffect" xml:space="preserve">
<value>One or more organization policies are affecting your Send options.</value>

View File

@@ -2034,64 +2034,64 @@
<value>Captcha feilet. Prøv på nytt.</value>
</data>
<data name="UpdatedMasterPassword" xml:space="preserve">
<value>Updated Master Password</value>
<value>Oppdaterte hovedpassordet</value>
</data>
<data name="UpdateMasterPassword" xml:space="preserve">
<value>Update Master Password</value>
<value>Oppdater hovedpassord</value>
</data>
<data name="UpdateMasterPasswordWarning" xml:space="preserve">
<value>Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update your Master Password now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour.</value>
<value>Hovedpassordet ditt ble nylig endret av en administrator i organisasjonen din. For å få tilgang til hvelvet, må du oppdatere hovedpassordet ditt nå. Hvis du fortsetter, logges du ut av den nåværende økten, og du må logge på igjen. Aktive økter på andre enheter kan fortsette å være aktive i opptil én time.</value>
</data>
<data name="UpdatingPassword" xml:space="preserve">
<value>Updating Password</value>
<value>Oppdaterer passord</value>
</data>
<data name="UpdatePasswordError" xml:space="preserve">
<value>Currently unable to update password</value>
<value>Kan for øyeblikket ikke oppdatere passord</value>
</data>
<data name="RemoveMasterPassword" xml:space="preserve">
<value>Remove Master Password</value>
<value>Fjern hovedpassord</value>
</data>
<data name="RemoveMasterPasswordWarning" xml:space="preserve">
<value>{0} is using SSO with customer-managed encryption. Continuing will remove your Master Password from your account and require SSO to login.</value>
<value>{0} bruker SSO med kundeadministrert kryptering. Hvis du fortsetter, fjernes hovedpassordet ditt fra kontoen din, og SSO kreves for å logge på.</value>
</data>
<data name="RemoveMasterPasswordWarning2" xml:space="preserve">
<value>If you do not want to remove your Master Password, you may leave this organization.</value>
<value>Hvis du ikke vil fjerne hovedpassordet ditt, kan du forlate denne organisasjonen.</value>
</data>
<data name="LeaveOrganization" xml:space="preserve">
<value>Leave Organization</value>
<value>Forlat organisasjonen</value>
</data>
<data name="LeaveOrganizationName" xml:space="preserve">
<value>Leave {0}?</value>
<value>Vil du forlate {0}?</value>
</data>
<data name="Fido2Title" xml:space="preserve">
<value>FIDO2 WebAuthn</value>
</data>
<data name="Fido2Instruction" xml:space="preserve">
<value>To continue, have your FIDO2 WebAuthn enabled security key ready, then follow the instructions after clicking 'Authenticate WebAuthn' on the next screen.</value>
<value>For å fortsette, ha din FIDO2 WebAuthn-aktiverte sikkerhetsnøkkel klar, og følg deretter instruksjonene etter å ha klikket på 'Autentiser WebAuthn' på den neste skjermen.</value>
</data>
<data name="Fido2Desc" xml:space="preserve">
<value>Authentication using FIDO2 WebAuthn, you can authenticate using an external security key.</value>
<value>Autentisering med FIDO2 WebAuthn, du kan autentisere med en ekstern sikkerhetsnøkkel.</value>
</data>
<data name="Fido2AuthenticateWebAuthn" xml:space="preserve">
<value>Authenticate WebAuthn</value>
<value>Autentiser WebAuthn</value>
</data>
<data name="Fido2ReturnToApp" xml:space="preserve">
<value>Return to App</value>
<value>Gå tilbake til appen</value>
</data>
<data name="Fido2CheckBrowser" xml:space="preserve">
<value>Please make sure your default browser supports WebAuthn and try again.</value>
<value>Sørg for at standardnettleseren din støtter WebAuthn og prøv igjen.</value>
</data>
<data name="ResetPasswordAutoEnrollInviteWarning" xml:space="preserve">
<value>This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password.</value>
<value>Denne organisasjonen har en bedriftsoppsettsregel som automatisk innrullerer deg i tilbakestilling av passord. Registrering vil tillate organisasjonsadministratorer å endre hovedpassordet ditt.</value>
</data>
<data name="VaultTimeoutPolicyInEffect" xml:space="preserve">
<value>Your organization policies are affecting your vault timeout. Maximum allowed Vault Timeout is {0} hour(s) and {1} minute(s)</value>
<value>Din organisasjons retningslinjer påvirker tidsavbruddet for hvelvet. Maksimalt tillatt tidsavbrudd for hvelv er {0} time(r) og {1} minutt(er)</value>
</data>
<data name="VaultTimeoutToLarge" xml:space="preserve">
<value>Your vault timeout exceeds the restrictions set by your organization.</value>
<value>Tidsavbruddet ditt for hvelvet overstiger begrensningene som er satt av organisasjonen din.</value>
</data>
<data name="DisablePersonalVaultExportPolicyInEffect">
<value>One or more organization policies prevents your from exporting your personal vault.</value>
<value>En eller flere organisasjonsoppsettsregler hindrer deg i å eksportere ditt personlige hvelv.</value>
</data>
<data name="DeleteAccount" xml:space="preserve">
<value>Slett konto</value>
@@ -2112,7 +2112,7 @@
<value>Ugyldig verifiseringskode.</value>
</data>
<data name="RequestOTP" xml:space="preserve">
<value>Request one-time password</value>
<value>Be om éngangspassord</value>
</data>
<data name="SendCode" xml:space="preserve">
<value>Send kode</value>
@@ -2121,7 +2121,7 @@
<value>Sender</value>
</data>
<data name="CopySendLinkOnSave" xml:space="preserve">
<value>Copy Send link on save</value>
<value>Kopier Send-lenke ved lagring</value>
</data>
<data name="SendingCode" xml:space="preserve">
<value>Sender kode</value>

View File

@@ -1924,7 +1924,7 @@
<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>Disable this Send so that no one can access it.</value>
<value>Disable this Send so that no one can access it</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">
@@ -1992,7 +1992,7 @@
<value>Custom</value>
</data>
<data name="ShareOnSave" xml:space="preserve">
<value>Share this Send upon save.</value>
<value>Share this Send upon save</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">
@@ -2004,7 +2004,7 @@
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="HideEmail" xml:space="preserve">
<value>Hide my email address from recipients.</value>
<value>Hide my email address from recipients</value>
</data>
<data name="SendOptionsPolicyInEffect" xml:space="preserve">
<value>One or more organization policies are affecting your Send options.</value>

View File

@@ -1923,7 +1923,7 @@
<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>Wyłącz wysyłkę, aby nikt nie miał do niej dostępu.</value>
<value>Wyłącz wysyłkę, aby nikt nie miał do niej dostępu</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">
@@ -1991,7 +1991,7 @@
<value>Niestandardowe</value>
</data>
<data name="ShareOnSave" xml:space="preserve">
<value>Udostępnij wysyłkę po zapisaniu.</value>
<value>Udostępnij wysyłkę po zapisaniu</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">
@@ -2003,7 +2003,7 @@
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="HideEmail" xml:space="preserve">
<value>Ukryj mój adres e-mail przed odbiorcami.</value>
<value>Ukryj mój adres e-mail przed odbiorcami</value>
</data>
<data name="SendOptionsPolicyInEffect" xml:space="preserve">
<value>Co najmniej jedna zasada organizacji wpływa na ustawienia wysyłek.</value>

View File

@@ -1924,7 +1924,7 @@
<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>Desative este Send para que ninguém possa acessá-lo.</value>
<value>Desabilite este Send para que ninguém possa acessá-lo.</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">

View File

@@ -1924,7 +1924,7 @@
<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>Disable this Send so that no one can access it.</value>
<value>Disable this Send so that no one can access it</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">
@@ -1992,7 +1992,7 @@
<value>Custom</value>
</data>
<data name="ShareOnSave" xml:space="preserve">
<value>Share this Send upon save.</value>
<value>Share this Send upon save</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">
@@ -2004,7 +2004,7 @@
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="HideEmail" xml:space="preserve">
<value>Hide my email address from recipients.</value>
<value>Hide my email address from recipients</value>
</data>
<data name="SendOptionsPolicyInEffect" xml:space="preserve">
<value>One or more organization policies are affecting your Send options.</value>

View File

@@ -1923,7 +1923,7 @@
<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>Dezactivați acest Send astfel încât nimeni să nu-l poată accesa.</value>
<value>Dezactivați acest Send pentru ca nimeni să nu-l poată accesa</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">
@@ -1991,7 +1991,7 @@
<value>Personalizat</value>
</data>
<data name="ShareOnSave" xml:space="preserve">
<value>Partajați această Send după salvare.</value>
<value>Partajați această Send după salvare</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">
@@ -2003,7 +2003,7 @@
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="HideEmail" xml:space="preserve">
<value>Ascundeți adresa mea de e-mail de la destinatari.</value>
<value>Ascundeți adresa mea de e-mail de la destinatari</value>
</data>
<data name="SendOptionsPolicyInEffect" xml:space="preserve">
<value>Una sau mai multe politici organizaționale vă afectează opțiunile Send-ului.</value>

View File

@@ -1924,7 +1924,7 @@
<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>Disable this Send so that no one can access it.</value>
<value>Disable this Send so that no one can access it</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">
@@ -1992,7 +1992,7 @@
<value>Custom</value>
</data>
<data name="ShareOnSave" xml:space="preserve">
<value>Share this Send upon save.</value>
<value>Share this Send upon save</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">
@@ -2004,7 +2004,7 @@
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="HideEmail" xml:space="preserve">
<value>Hide my email address from recipients.</value>
<value>Hide my email address from recipients</value>
</data>
<data name="SendOptionsPolicyInEffect" xml:space="preserve">
<value>One or more organization policies are affecting your Send options.</value>

View File

@@ -1924,7 +1924,7 @@
<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>Disable this Send so that no one can access it.</value>
<value>Disable this Send so that no one can access it</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">

View File

@@ -239,7 +239,7 @@
<value>Hjälp &amp; Feedback</value>
</data>
<data name="Hide" xml:space="preserve">
<value>Göm</value>
<value>Dölj</value>
<comment>Hide a secret value that is currently shown (password).</comment>
</data>
<data name="InternetConnectionRequiredMessage" xml:space="preserve">
@@ -333,7 +333,7 @@
<value>Skicka</value>
</data>
<data name="Sync" xml:space="preserve">
<value>Synka</value>
<value>Synkronisering</value>
<comment>The title for the sync page.</comment>
</data>
<data name="ThankYou" xml:space="preserve">
@@ -412,7 +412,7 @@
<value>Undvik tvetydiga tecken</value>
</data>
<data name="BitwardenAppExtension" xml:space="preserve">
<value>Bitwarden apptillägg</value>
<value>Bitwarden Apptillägg</value>
</data>
<data name="BitwardenAppExtensionAlert2" xml:space="preserve">
<value>Det enklaste sättet att lägga till nya inloggningar i ditt valv är genom apptillägget. Läs mer om Bitwardens apptillägg genom att navigera till fliken "Inställningar".</value>
@@ -1582,7 +1582,7 @@
<value>Din inloggningssession har upphört.</value>
</data>
<data name="BiometricsDirection" xml:space="preserve">
<value>Använd biometri för att bekräfta.</value>
<value>Biometrisk verifiering</value>
</data>
<data name="Biometrics" xml:space="preserve">
<value>Biometri</value>
@@ -1920,7 +1920,7 @@
<value>Lösenordet har tagits bort.</value>
</data>
<data name="NotesInfo" xml:space="preserve">
<value>Private notes about this Send.</value>
<value>Privata anteckningar om denna 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">
@@ -2124,21 +2124,21 @@
<value>Copy Send link on save</value>
</data>
<data name="SendingCode" xml:space="preserve">
<value>Sending code</value>
<value>Skickar kod</value>
</data>
<data name="Verifying" xml:space="preserve">
<value>Verifying</value>
<value>Verifierar</value>
</data>
<data name="ResendCode" xml:space="preserve">
<value>Resend Code</value>
</data>
<data name="AVerificationCodeWasSentToYourEmail" xml:space="preserve">
<value>A verification code was sent to your email</value>
<value>En verifieringskod skickades till din e-postadress</value>
</data>
<data name="AnErrorOccurredWhileSendingAVerificationCodeToYourEmailPleaseTryAgain" xml:space="preserve">
<value>An error occurred while sending a verification code to your email. Please try again</value>
</data>
<data name="EnterTheVerificationCodeThatWasSentToYourEmail" xml:space="preserve">
<value>Enter the verification code that was sent to your email</value>
<value>Ange verifieringskoden som skickades till din e-postadress</value>
</data>
</root>

View File

@@ -1924,7 +1924,7 @@
<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>Disable this Send so that no one can access it.</value>
<value>Disable this Send so that no one can access it</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">
@@ -1992,7 +1992,7 @@
<value>Custom</value>
</data>
<data name="ShareOnSave" xml:space="preserve">
<value>Share this Send upon save.</value>
<value>Share this Send upon save</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">
@@ -2004,7 +2004,7 @@
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="HideEmail" xml:space="preserve">
<value>Hide my email address from recipients.</value>
<value>Hide my email address from recipients</value>
</data>
<data name="SendOptionsPolicyInEffect" xml:space="preserve">
<value>One or more organization policies are affecting your Send options.</value>

View File

@@ -1923,7 +1923,7 @@
<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>Disable this Send so that no one can access it.</value>
<value>Disable this Send so that no one can access it</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">
@@ -1991,7 +1991,7 @@
<value>Custom</value>
</data>
<data name="ShareOnSave" xml:space="preserve">
<value>Share this Send upon save.</value>
<value>Share this Send upon save</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">
@@ -2003,7 +2003,7 @@
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data>
<data name="HideEmail" xml:space="preserve">
<value>Hide my email address from recipients.</value>
<value>Hide my email address from recipients</value>
</data>
<data name="SendOptionsPolicyInEffect" xml:space="preserve">
<value>One or more organization policies are affecting your Send options.</value>

View File

@@ -884,7 +884,7 @@
<value>將相機對準 QR code 。</value>
</data>
<data name="ScanQrTitle" xml:space="preserve">
<value>掃描 QR Code</value>
<value>掃描 QR </value>
</data>
<data name="Camera" xml:space="preserve">
<value>相機</value>

View File

@@ -5,6 +5,7 @@ using Bit.App.Abstractions;
using Bit.App.Models;
using Bit.App.Resources;
using Bit.Core.Abstractions;
using Bit.Core.Enums;
using Plugin.Fingerprint;
using Plugin.Fingerprint.Abstractions;
using Xamarin.Essentials;
@@ -35,8 +36,6 @@ namespace Bit.App.Services
_broadcasterService = broadcasterService;
}
public string IdentityClientId => "mobile";
public void Init()
{
_broadcasterService.Subscribe(nameof(MobilePlatformUtilsService), (message) =>
@@ -80,6 +79,11 @@ namespace Bit.App.Services
return DeviceInfo.Model;
}
public ClientType GetClientType()
{
return ClientType.Mobile;
}
public bool IsViewOpen()
{
return false;

View File

@@ -7,11 +7,10 @@ namespace Bit.Core.Abstractions
{
public interface IPlatformUtilsService
{
string IdentityClientId { get; }
string GetApplicationVersion();
DeviceType GetDevice();
string GetDeviceString();
ClientType GetClientType();
bool IsDev();
bool IsSelfHost();
bool IsViewOpen();

View File

@@ -0,0 +1,36 @@
namespace Bit.Core.Enums
{
public enum ClientType: byte
{
Web = 1,
Browser = 2,
Desktop = 3,
Mobile = 4,
Cli = 5,
DirectoryConnector = 6,
}
public static class ClientTypeExtensions
{
public static string GetString(this ClientType me)
{
switch (me)
{
case ClientType.Web:
return "web";
case ClientType.Browser:
return "browser";
case ClientType.Desktop:
return "desktop";
case ClientType.Mobile:
return "mobile";
case ClientType.Cli:
return "cli";
case ClientType.DirectoryConnector:
return "connector";
default:
return "";
}
}
}
}

View File

@@ -1,4 +1,5 @@
using Bit.Core.Abstractions;
using Bit.Core.Enums;
using Bit.Core.Exceptions;
using Bit.Core.Models.Domain;
using Bit.Core.Models.Request;
@@ -37,6 +38,8 @@ namespace Bit.Core.Services
_logoutCallbackAsync = logoutCallbackAsync;
var device = (int)_platformUtilsService.GetDevice();
_httpClient.DefaultRequestHeaders.Add("Device-Type", device.ToString());
_httpClient.DefaultRequestHeaders.Add("Bitwarden-Client-Name", _platformUtilsService.GetClientType().GetString());
_httpClient.DefaultRequestHeaders.Add("Bitwarden-Client-Version", _platformUtilsService.GetApplicationVersion());
if (!string.IsNullOrWhiteSpace(customUserAgent))
{
_httpClient.DefaultRequestHeaders.UserAgent.ParseAdd(customUserAgent);
@@ -87,7 +90,7 @@ namespace Bit.Core.Services
Version = new Version(1, 0),
RequestUri = new Uri(string.Concat(IdentityBaseUrl, "/connect/token")),
Method = HttpMethod.Post,
Content = new FormUrlEncodedContent(request.ToIdentityToken(_platformUtilsService.IdentityClientId))
Content = new FormUrlEncodedContent(request.ToIdentityToken(_platformUtilsService.GetClientType().GetString()))
};
requestMessage.Headers.Add("Accept", "application/json");
request.AlterIdentityTokenHeaders(requestMessage.Headers);

View File

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

View File

@@ -23,19 +23,6 @@ namespace Bit.iOS.Core.Renderers
{
Control.Text = element.PlaceHolder;
}
// force use of wheel picker on iOS 14+
// TODO remove this when we upgrade to X.F 5 SR-1
// https://github.com/xamarin/Xamarin.Forms/issues/12258#issuecomment-700168665
try
{
if (UIDevice.CurrentDevice.CheckSystemVersion(13, 2))
{
var picker = (UIDatePicker)Control.InputView;
picker.PreferredDatePickerStyle = UIDatePickerStyle.Wheels;
}
}
catch { }
}
}

View File

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

View File

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

View File

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

View File

@@ -2,7 +2,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>Bit.Publisher</RootNamespace>
<Configurations>Debug;Release;FDroid</Configurations>
</PropertyGroup>