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

Compare commits

..

4 Commits

Author SHA1 Message Date
Andre Rosado
7500073e7e Removed logs, added null or whitespace validation and improved formatting 2023-01-03 10:58:14 +00:00
aj-rosado
6b77fee72b Merge branch 'master' into fix-ignore-diacritics-in-search 2022-12-29 14:16:26 +00:00
noncenz
a0e62771fd Merge branch 'master' into fix-ignore-diacritics-in-search 2022-08-22 17:03:57 -04:00
noncenz
733464e05d Fix ignore diacritics in search
This change updates the search function to ignore diacritical marks in search results. Marks are stripped from both the search input and results.
2022-08-22 16:26:45 -04:00
38 changed files with 76 additions and 281 deletions

Binary file not shown.

View File

@@ -440,7 +440,7 @@ jobs:
ios: ios:
name: Apple iOS name: Apple iOS
runs-on: macos-12 runs-on: macos-11
needs: setup needs: setup
steps: steps:
- name: Setup NuGet - name: Setup NuGet
@@ -503,8 +503,6 @@ jobs:
gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \
--output $HOME/secrets/dist_watch_app_extension.mobileprovision \ --output $HOME/secrets/dist_watch_app_extension.mobileprovision \
./.github/secrets/dist_watch_app_extension.mobileprovision.gpg ./.github/secrets/dist_watch_app_extension.mobileprovision.gpg
gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \
--output ./src/watchOS/bitwarden/GoogleService-Info.plist ./.github/secrets/GoogleService-Info.plist.gpg
shell: bash shell: bash
- name: Increment version - name: Increment version
@@ -592,6 +590,9 @@ jobs:
echo "########################################" echo "########################################"
echo "##### Done" echo "##### Done"
echo "########################################" echo "########################################"
cd src/watchOS
ls -R
cd ../..
shell: bash shell: bash
- name: Restore packages - name: Restore packages
@@ -629,12 +630,7 @@ jobs:
ARCHIVE_DSYMS_PATH="$HOME/Library/Developer/Xcode/Archives/*/*.xcarchive/dSYMs" ARCHIVE_DSYMS_PATH="$HOME/Library/Developer/Xcode/Archives/*/*.xcarchive/dSYMs"
EXPORT_PATH="./bitwarden-export" EXPORT_PATH="./bitwarden-export"
WATCH_ARCHIVE_DSYMS_PATH="./src/watchOS/bitwarden.xcarchive/dSYMs/" cp -r $ARCHIVE_DSYMS_PATH $EXPORT_PATH
WATCH_DSYMS_EXPORT_PATH="$EXPORT_PATH/Watch_dSYMs"
cp -r -v $ARCHIVE_DSYMS_PATH $EXPORT_PATH
mkdir $WATCH_DSYMS_EXPORT_PATH
cp -r -v $WATCH_ARCHIVE_DSYMS_PATH $WATCH_DSYMS_EXPORT_PATH
shell: bash shell: bash
- name: Upload App Store .ipa & dSYMs artifacts - name: Upload App Store .ipa & dSYMs artifacts
@@ -667,22 +663,6 @@ jobs:
run: appcenter crashes upload-symbols -a bitwarden/bitwarden -s "./bitwarden-export/dSYMs" --token $APPCENTER_IOS_TOKEN run: appcenter crashes upload-symbols -a bitwarden/bitwarden -s "./bitwarden-export/dSYMs" --token $APPCENTER_IOS_TOKEN
shell: bash shell: bash
- name: Upload Watch dSYMs to Firebase Crashlytics
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'
run: |
echo "########################################"
echo "##### Uploading Watch dSYMs to Firebase"
echo "########################################"
find "$HOME/Library/Developer/XCode/DerivedData" -name "upload-symbols" -exec chmod +x {} \; -exec {} -gsp "./src/watchOS/bitwarden/GoogleService-Info.plist" -p ios "./bitwarden-export/Watch_dSYMs" \;
shell: bash
- name: Deploy to App Store - name: Deploy to App Store
if: | if: |
(github.ref == 'refs/heads/master' (github.ref == 'refs/heads/master'

View File

@@ -132,7 +132,6 @@ namespace Bit.Droid.Accessibility
new Browser("com.htc.sense.browser", "title"), new Browser("com.htc.sense.browser", "title"),
new Browser("com.jerky.browser2", "enterUrl"), new Browser("com.jerky.browser2", "enterUrl"),
new Browser("com.ksmobile.cb", "address_bar_edit_text"), new Browser("com.ksmobile.cb", "address_bar_edit_text"),
new Browser("com.lemurbrowser.exts","url_bar"),
new Browser("com.linkbubble.playstore", "url_text"), new Browser("com.linkbubble.playstore", "url_text"),
new Browser("com.mx.browser", "address_editor_with_progress"), new Browser("com.mx.browser", "address_editor_with_progress"),
new Browser("com.mx.browser.tablet", "address_editor_with_progress"), new Browser("com.mx.browser.tablet", "address_editor_with_progress"),

View File

@@ -79,7 +79,6 @@ namespace Bit.Droid.Autofill
"com.jamal2367.styx", "com.jamal2367.styx",
"com.kiwibrowser.browser", "com.kiwibrowser.browser",
"com.kiwibrowser.browser.dev", "com.kiwibrowser.browser.dev",
"com.lemurbrowser.exts",
"com.microsoft.emmx", "com.microsoft.emmx",
"com.microsoft.emmx.beta", "com.microsoft.emmx.beta",
"com.microsoft.emmx.canary", "com.microsoft.emmx.canary",

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?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="2023.1.0" 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="2022.12.0" android:installLocation="internalOnly" package="com.x8bit.bitwarden">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="33" /> <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="33" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.NFC" /> <uses-permission android:name="android.permission.NFC" />
@@ -40,16 +40,4 @@
</intent-filter> </intent-filter>
</activity> </activity>
</application> </application>
<!-- Support for Xamarin.Essentials.Browser.OpenAsync (for Android > 11) -->
<!-- Related docs: https://learn.microsoft.com/en-us/xamarin/essentials/open-browser?tabs=android -->
<queries>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="http"/>
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="https"/>
</intent>
</queries>
</manifest> </manifest>

View File

@@ -92,9 +92,6 @@
<compatibility-package <compatibility-package
android:name="com.kiwibrowser.browser.dev" android:name="com.kiwibrowser.browser.dev"
android:maxLongVersionCode="10000000000"/> android:maxLongVersionCode="10000000000"/>
<compatibility-package
android:name="com.lemurbrowser.exts"
android:maxLongVersionCode="10000000000"/>
<compatibility-package <compatibility-package
android:name="com.microsoft.emmx" android:name="com.microsoft.emmx"
android:maxLongVersionCode="10000000000"/> android:maxLongVersionCode="10000000000"/>

View File

@@ -1,5 +1,4 @@
using System; using System;
using System.Diagnostics;
using System.Globalization; using System.Globalization;
using Bit.App.Abstractions; using Bit.App.Abstractions;
using Bit.App.Models; using Bit.App.Models;
@@ -26,13 +25,13 @@ namespace Bit.Droid.Services
try try
{ {
var fallback = ToDotnetFallbackLanguage(new PlatformCulture(netLanguage)); var fallback = ToDotnetFallbackLanguage(new PlatformCulture(netLanguage));
Debug.WriteLine(netLanguage + " failed, trying " + fallback + " (" + e1.Message + ")"); Console.WriteLine(netLanguage + " failed, trying " + fallback + " (" + e1.Message + ")");
ci = new CultureInfo(fallback); ci = new CultureInfo(fallback);
} }
catch (CultureNotFoundException e2) catch (CultureNotFoundException e2)
{ {
// iOS language not valid .NET culture, falling back to English // iOS language not valid .NET culture, falling back to English
Debug.WriteLine(netLanguage + " couldn't be set, using 'en' (" + e2.Message + ")"); Console.WriteLine(netLanguage + " couldn't be set, using 'en' (" + e2.Message + ")");
ci = new CultureInfo("en"); ci = new CultureInfo("en");
} }
} }
@@ -41,7 +40,7 @@ namespace Bit.Droid.Services
private string AndroidToDotnetLanguage(string androidLanguage) private string AndroidToDotnetLanguage(string androidLanguage)
{ {
Debug.WriteLine("Android Language:" + androidLanguage); Console.WriteLine("Android Language:" + androidLanguage);
var netLanguage = androidLanguage; var netLanguage = androidLanguage;
if (androidLanguage.StartsWith("zh")) if (androidLanguage.StartsWith("zh"))
{ {
@@ -80,13 +79,13 @@ namespace Bit.Droid.Services
// ONLY use cultures that have been tested and known to work // ONLY use cultures that have been tested and known to work
} }
} }
Debug.WriteLine(".NET Language/Locale:" + netLanguage); Console.WriteLine(".NET Language/Locale:" + netLanguage);
return netLanguage; return netLanguage;
} }
private string ToDotnetFallbackLanguage(PlatformCulture platCulture) private string ToDotnetFallbackLanguage(PlatformCulture platCulture)
{ {
Debug.WriteLine(".NET Fallback Language:" + platCulture.LanguageCode); Console.WriteLine(".NET Fallback Language:" + platCulture.LanguageCode);
var netLanguage = platCulture.LanguageCode; // use the first part of the identifier (two chars, usually); var netLanguage = platCulture.LanguageCode; // use the first part of the identifier (two chars, usually);
switch (platCulture.LanguageCode) switch (platCulture.LanguageCode)
{ {
@@ -96,7 +95,7 @@ namespace Bit.Droid.Services
// add more application-specific cases here (if required) // add more application-specific cases here (if required)
// ONLY use cultures that have been tested and known to work // ONLY use cultures that have been tested and known to work
} }
Debug.WriteLine(".NET Fallback Language/Locale:" + netLanguage + " (application-specific)"); Console.WriteLine(".NET Fallback Language/Locale:" + netLanguage + " (application-specific)");
return netLanguage; return netLanguage;
} }

View File

@@ -118,17 +118,17 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="About" xml:space="preserve"> <data name="About" xml:space="preserve">
<value>عن التطبيق</value> <value>حول</value>
</data> </data>
<data name="Add" xml:space="preserve"> <data name="Add" xml:space="preserve">
<value>أضِف</value> <value>إضافة</value>
<comment>Add/create a new entity (verb).</comment> <comment>Add/create a new entity (verb).</comment>
</data> </data>
<data name="AddFolder" xml:space="preserve"> <data name="AddFolder" xml:space="preserve">
<value>مجلد مضاف</value> <value>إضافة مجلد</value>
</data> </data>
<data name="AddItem" xml:space="preserve"> <data name="AddItem" xml:space="preserve">
<value>تمت إضافة العنصر</value> <value>إضافة عنصر</value>
<comment>The title for the add item page.</comment> <comment>The title for the add item page.</comment>
</data> </data>
<data name="AnErrorHasOccurred" xml:space="preserve"> <data name="AnErrorHasOccurred" xml:space="preserve">
@@ -2451,7 +2451,7 @@
<value>عشوائي</value> <value>عشوائي</value>
</data> </data>
<data name="ConnectToWatch" xml:space="preserve"> <data name="ConnectToWatch" xml:space="preserve">
<value>متّصل بالسّاعة</value> <value>Connect to Watch</value>
</data> </data>
<data name="AccessibilityServiceDisclosure" xml:space="preserve"> <data name="AccessibilityServiceDisclosure" xml:space="preserve">
<value>كشف خدمة إمكانية الوصول</value> <value>كشف خدمة إمكانية الوصول</value>

View File

@@ -425,10 +425,10 @@
<value>Service de remplissage automatique</value> <value>Service de remplissage automatique</value>
</data> </data>
<data name="AvoidAmbiguousCharacters" xml:space="preserve"> <data name="AvoidAmbiguousCharacters" xml:space="preserve">
<value>Éviter les caractères ambigus</value> <value>Évitez les caractères ambigus</value>
</data> </data>
<data name="BitwardenAppExtension" xml:space="preserve"> <data name="BitwardenAppExtension" xml:space="preserve">
<value>Extension de l'application Bitwarden</value> <value>Extension de l'application bitwarden</value>
</data> </data>
<data name="BitwardenAppExtensionAlert2" xml:space="preserve"> <data name="BitwardenAppExtensionAlert2" xml:space="preserve">
<value>Le meilleur moyen d'ajouter de nouveaux sites à votre coffre est d'utiliser l'extension de l'application Bitwarden. Parcourez le menu "Paramètres" pour en apprendre davantage.</value> <value>Le meilleur moyen d'ajouter de nouveaux sites à votre coffre est d'utiliser l'extension de l'application Bitwarden. Parcourez le menu "Paramètres" pour en apprendre davantage.</value>
@@ -468,7 +468,7 @@
<comment>Message shown when interacting with the server</comment> <comment>Message shown when interacting with the server</comment>
</data> </data>
<data name="EditItem" xml:space="preserve"> <data name="EditItem" xml:space="preserve">
<value>Modifier l'élément</value> <value>Modifier l'Élément</value>
</data> </data>
<data name="EnableAutomaticSyncing" xml:space="preserve"> <data name="EnableAutomaticSyncing" xml:space="preserve">
<value>Activer la synchronisation automatique</value> <value>Activer la synchronisation automatique</value>
@@ -692,10 +692,10 @@
<comment>Message shown when interacting with the server</comment> <comment>Message shown when interacting with the server</comment>
</data> </data>
<data name="SyncingComplete" xml:space="preserve"> <data name="SyncingComplete" xml:space="preserve">
<value>Synchronisation terminée</value> <value>Synchronisation terminée.</value>
</data> </data>
<data name="SyncingFailed" xml:space="preserve"> <data name="SyncingFailed" xml:space="preserve">
<value>Échec de la synchronisation</value> <value>Échec de la synchronisation.</value>
</data> </data>
<data name="SyncVaultNow" xml:space="preserve"> <data name="SyncVaultNow" xml:space="preserve">
<value>Synchroniser le coffre maintenant</value> <value>Synchroniser le coffre maintenant</value>

View File

@@ -2452,7 +2452,7 @@ välj Lägg till TOTP för att lagra nyckeln på ett säkert sätt</value>
<value>Slumpmässig</value> <value>Slumpmässig</value>
</data> </data>
<data name="ConnectToWatch" xml:space="preserve"> <data name="ConnectToWatch" xml:space="preserve">
<value>Anslut till Watch</value> <value>Connect to Watch</value>
</data> </data>
<data name="AccessibilityServiceDisclosure" xml:space="preserve"> <data name="AccessibilityServiceDisclosure" xml:space="preserve">
<value>Delgivning av tillgänglighetstjänst</value> <value>Delgivning av tillgänglighetstjänst</value>
@@ -2514,6 +2514,6 @@ Vill du byta till detta konto?</value>
<value>Denna förfrågan är inte längre giltig</value> <value>Denna förfrågan är inte längre giltig</value>
</data> </data>
<data name="EnableCamerPermissionToUseTheScanner" xml:space="preserve"> <data name="EnableCamerPermissionToUseTheScanner" xml:space="preserve">
<value>Bevilja kamerabehörighet för att använda skannern</value> <value>Enable camera permission to use the scanner</value>
</data> </data>
</root> </root>

View File

@@ -5,6 +5,7 @@ using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Bit.Core.Abstractions; using Bit.Core.Abstractions;
using Bit.Core.Models.View; using Bit.Core.Models.View;
using Bit.Core.Utilities;
namespace Bit.Core.Services namespace Bit.Core.Services
{ {
@@ -76,12 +77,12 @@ namespace Bit.Core.Services
ct.ThrowIfCancellationRequested(); ct.ThrowIfCancellationRequested();
var matchedCiphers = new List<CipherView>(); var matchedCiphers = new List<CipherView>();
var lowPriorityMatchedCiphers = new List<CipherView>(); var lowPriorityMatchedCiphers = new List<CipherView>();
query = query.Trim().ToLower(); query = query.Trim().ToLower().RemoveDiacritics();
foreach (var c in ciphers) foreach (var c in ciphers)
{ {
ct.ThrowIfCancellationRequested(); ct.ThrowIfCancellationRequested();
if (c.Name?.ToLower().Contains(query) ?? false) if (c.Name?.ToLower().RemoveDiacritics().Contains(query) ?? false)
{ {
matchedCiphers.Add(c); matchedCiphers.Add(c);
} }
@@ -89,7 +90,7 @@ namespace Bit.Core.Services
{ {
lowPriorityMatchedCiphers.Add(c); lowPriorityMatchedCiphers.Add(c);
} }
else if (c.SubTitle?.ToLower().Contains(query) ?? false) else if (c.SubTitle?.ToLower().RemoveDiacritics().Contains(query) ?? false)
{ {
lowPriorityMatchedCiphers.Add(c); lowPriorityMatchedCiphers.Add(c);
} }

View File

@@ -0,0 +1,34 @@
using System;
using System.Globalization;
using System.Text;
namespace Bit.Core.Utilities
{
public static class StringExtensions
{
public static string RemoveDiacritics(this string text)
{
if (string.IsNullOrWhiteSpace(text))
{
return text;
}
var normalizedString = text.Normalize(NormalizationForm.FormD);
var stringBuilder = new StringBuilder(capacity: normalizedString.Length);
for (int i = 0; i < normalizedString.Length; i++)
{
char c = normalizedString[i];
var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c);
if (unicodeCategory != UnicodeCategory.NonSpacingMark)
{
stringBuilder.Append(c);
}
}
return stringBuilder
.ToString()
.Normalize(NormalizationForm.FormC);
}
}
}

View File

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

View File

@@ -1,5 +1,4 @@
using System; using System;
using System.Diagnostics;
using System.Globalization; using System.Globalization;
using Bit.App.Abstractions; using Bit.App.Abstractions;
using Bit.App.Models; using Bit.App.Models;
@@ -32,13 +31,13 @@ namespace Bit.iOS.Core.Services
try try
{ {
var fallback = ToDotnetFallbackLanguage(new PlatformCulture(netLanguage)); var fallback = ToDotnetFallbackLanguage(new PlatformCulture(netLanguage));
Debug.WriteLine(netLanguage + " failed, trying " + fallback + " (" + e1.Message + ")"); Console.WriteLine(netLanguage + " failed, trying " + fallback + " (" + e1.Message + ")");
ci = new CultureInfo(fallback); ci = new CultureInfo(fallback);
} }
catch (CultureNotFoundException e2) catch (CultureNotFoundException e2)
{ {
// iOS language not valid .NET culture, falling back to English // iOS language not valid .NET culture, falling back to English
Debug.WriteLine(netLanguage + " couldn't be set, using 'en' (" + e2.Message + ")"); Console.WriteLine(netLanguage + " couldn't be set, using 'en' (" + e2.Message + ")");
ci = new CultureInfo("en"); ci = new CultureInfo("en");
} }
} }
@@ -48,7 +47,7 @@ namespace Bit.iOS.Core.Services
private string iOSToDotnetLanguage(string iOSLanguage) private string iOSToDotnetLanguage(string iOSLanguage)
{ {
Debug.WriteLine("iOS Language:" + iOSLanguage); Console.WriteLine("iOS Language:" + iOSLanguage);
var netLanguage = iOSLanguage; var netLanguage = iOSLanguage;
if (iOSLanguage.StartsWith("zh-Hant") || iOSLanguage.StartsWith("zh-HK")) if (iOSLanguage.StartsWith("zh-Hant") || iOSLanguage.StartsWith("zh-HK"))
{ {
@@ -78,13 +77,13 @@ namespace Bit.iOS.Core.Services
} }
} }
Debug.WriteLine(".NET Language/Locale:" + netLanguage); Console.WriteLine(".NET Language/Locale:" + netLanguage);
return netLanguage; return netLanguage;
} }
private string ToDotnetFallbackLanguage(PlatformCulture platCulture) private string ToDotnetFallbackLanguage(PlatformCulture platCulture)
{ {
Debug.WriteLine(".NET Fallback Language:" + platCulture.LanguageCode); Console.WriteLine(".NET Fallback Language:" + platCulture.LanguageCode);
// Use the first part of the identifier (two chars, usually); // Use the first part of the identifier (two chars, usually);
var netLanguage = platCulture.LanguageCode; var netLanguage = platCulture.LanguageCode;
switch (platCulture.LanguageCode) switch (platCulture.LanguageCode)
@@ -98,7 +97,7 @@ namespace Bit.iOS.Core.Services
// add more application-specific cases here (if required) // add more application-specific cases here (if required)
// ONLY use cultures that have been tested and known to work // ONLY use cultures that have been tested and known to work
} }
Debug.WriteLine(".NET Fallback Language/Locale:" + netLanguage + " (application-specific)"); Console.WriteLine(".NET Fallback Language/Locale:" + netLanguage + " (application-specific)");
return netLanguage; return netLanguage;
} }

View File

@@ -1,7 +1,6 @@
using Bit.App.Utilities; using Bit.App.Utilities;
using Foundation; using Foundation;
using System; using System;
using System.Diagnostics;
using UIKit; using UIKit;
using Xamarin.Forms; using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS; using Xamarin.Forms.Platform.iOS;
@@ -111,7 +110,7 @@ namespace Bit.iOS.Core.Views
} }
else else
{ {
Debug.WriteLine("Toast needs a keyWindows to display."); Console.WriteLine("Toast needs a keyWindows to display.");
} }
} }

View File

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

View File

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

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 738 B

After

Width:  |  Height:  |  Size: 473 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 899 B

After

Width:  |  Height:  |  Size: 691 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 788 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -1,34 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CLIENT_ID</key>
<string>___________</string>
<key>REVERSED_CLIENT_ID</key>
<string>___________</string>
<key>API_KEY</key>
<string>___________</string>
<key>GCM_SENDER_ID</key>
<string>___________</string>
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>com.8bit.bitwarden.watchkitapp.watchkitextension</string>
<key>PROJECT_ID</key>
<string>___________</string>
<key>STORAGE_BUCKET</key>
<string>___________</string>
<key>IS_ADS_ENABLED</key>
<false/>
<key>IS_ANALYTICS_ENABLED</key>
<false/>
<key>IS_APPINVITE_ENABLED</key>
<true/>
<key>IS_GCM_ENABLED</key>
<true/>
<key>IS_SIGNIN_ENABLED</key>
<true/>
<key>GOOGLE_APP_ID</key>
<string>___________</string>
</dict>
</plist>

View File

@@ -1,11 +0,0 @@
import WatchKit
import FirebaseCore
class ExtensionDelegate: NSObject, WKExtensionDelegate {
func applicationDidFinishLaunching() {
#if !DEBUG
FirebaseApp.configure()
#endif
}
}

View File

@@ -34,7 +34,7 @@ public class CryptoService{
let item = try JSONDecoder().decode(type, from: decryptedData) let item = try JSONDecoder().decode(type, from: decryptedData)
return item return item
} catch { } catch {
Log.e("Fail to decode item for keychain: \(error)") assertionFailure("Fail to decode item for keychain: \(error)")
return nil return nil
} }
} }

View File

@@ -1,9 +1,7 @@
import SwiftUI import SwiftUI
@main @main
struct bitwardenApp: App { struct bitwardenApp: App {
@WKExtensionDelegateAdaptor(ExtensionDelegate.self) var delegate
@SceneBuilder var body: some Scene { @SceneBuilder var body: some Scene {
WindowGroup { WindowGroup {
NavigationView { NavigationView {

View File

@@ -35,11 +35,6 @@
1B59EC632901B1C100A8718D /* LoggerHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B59EC622901B1C100A8718D /* LoggerHelper.swift */; }; 1B59EC632901B1C100A8718D /* LoggerHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B59EC622901B1C100A8718D /* LoggerHelper.swift */; };
1B5AFF0329196C81004478F9 /* ColorUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B5AFF0229196C81004478F9 /* ColorUtils.swift */; }; 1B5AFF0329196C81004478F9 /* ColorUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B5AFF0229196C81004478F9 /* ColorUtils.swift */; };
1B5AFF0729197822004478F9 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 1B5AFF0929197822004478F9 /* Localizable.strings */; }; 1B5AFF0729197822004478F9 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 1B5AFF0929197822004478F9 /* Localizable.strings */; };
1B5BE451295A08A900E0C323 /* FirebaseCrashlytics in Frameworks */ = {isa = PBXBuildFile; productRef = 1B5BE450295A08A900E0C323 /* FirebaseCrashlytics */; };
1B5BE453295A08C600E0C323 /* ExtensionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B5BE452295A08C600E0C323 /* ExtensionDelegate.swift */; };
1B5BE45E295B472C00E0C323 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1B5BE45D295B472C00E0C323 /* GoogleService-Info.plist */; };
1B5BE45F295B472C00E0C323 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1B5BE45D295B472C00E0C323 /* GoogleService-Info.plist */; };
1B5BE460295B472C00E0C323 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1B5BE45D295B472C00E0C323 /* GoogleService-Info.plist */; };
1B5F5E38293F9CF8009B5FCC /* TrackableWithHeaderListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B5F5E37293F9CF8009B5FCC /* TrackableWithHeaderListView.swift */; }; 1B5F5E38293F9CF8009B5FCC /* TrackableWithHeaderListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B5F5E37293F9CF8009B5FCC /* TrackableWithHeaderListView.swift */; };
1B5F5E3A293F9D6F009B5FCC /* ViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B5F5E39293F9D6F009B5FCC /* ViewExtensions.swift */; }; 1B5F5E3A293F9D6F009B5FCC /* ViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B5F5E39293F9D6F009B5FCC /* ViewExtensions.swift */; };
1B5F5E3E293FBB17009B5FCC /* CipherItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B5F5E3D293FBB17009B5FCC /* CipherItemView.swift */; }; 1B5F5E3E293FBB17009B5FCC /* CipherItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B5F5E3D293FBB17009B5FCC /* CipherItemView.swift */; };
@@ -149,8 +144,6 @@
1B59EC622901B1C100A8718D /* LoggerHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoggerHelper.swift; sourceTree = "<group>"; }; 1B59EC622901B1C100A8718D /* LoggerHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoggerHelper.swift; sourceTree = "<group>"; };
1B5AFF0229196C81004478F9 /* ColorUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorUtils.swift; sourceTree = "<group>"; }; 1B5AFF0229196C81004478F9 /* ColorUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorUtils.swift; sourceTree = "<group>"; };
1B5AFF0829197822004478F9 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; }; 1B5AFF0829197822004478F9 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
1B5BE452295A08C600E0C323 /* ExtensionDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionDelegate.swift; sourceTree = "<group>"; };
1B5BE45D295B472C00E0C323 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
1B5F5E37293F9CF8009B5FCC /* TrackableWithHeaderListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackableWithHeaderListView.swift; sourceTree = "<group>"; }; 1B5F5E37293F9CF8009B5FCC /* TrackableWithHeaderListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackableWithHeaderListView.swift; sourceTree = "<group>"; };
1B5F5E39293F9D6F009B5FCC /* ViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewExtensions.swift; sourceTree = "<group>"; }; 1B5F5E39293F9D6F009B5FCC /* ViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewExtensions.swift; sourceTree = "<group>"; };
1B5F5E3D293FBB17009B5FCC /* CipherItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CipherItemView.swift; sourceTree = "<group>"; }; 1B5F5E3D293FBB17009B5FCC /* CipherItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CipherItemView.swift; sourceTree = "<group>"; };
@@ -197,7 +190,6 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
1B5BE451295A08A900E0C323 /* FirebaseCrashlytics in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -238,7 +230,6 @@
1B15612628B7F3D400610B9B = { 1B15612628B7F3D400610B9B = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
1B5BE45D295B472C00E0C323 /* GoogleService-Info.plist */,
1B15613128B7F3D400610B9B /* bitwarden */, 1B15613128B7F3D400610B9B /* bitwarden */,
1B15614128B7F3D700610B9B /* bitwarden WatchKit App */, 1B15614128B7F3D700610B9B /* bitwarden WatchKit App */,
1B15614C28B7F3D800610B9B /* bitwarden WatchKit Extension */, 1B15614C28B7F3D800610B9B /* bitwarden WatchKit Extension */,
@@ -307,7 +298,6 @@
1B15615D28B7F3D900610B9B /* PushNotificationPayload.apns */, 1B15615D28B7F3D900610B9B /* PushNotificationPayload.apns */,
1B15615928B7F3D900610B9B /* Preview Content */, 1B15615928B7F3D900610B9B /* Preview Content */,
1B15616D28B81A4300610B9B /* WatchConnectivityManager.swift */, 1B15616D28B81A4300610B9B /* WatchConnectivityManager.swift */,
1B5BE452295A08C600E0C323 /* ExtensionDelegate.swift */,
); );
path = "bitwarden WatchKit Extension"; path = "bitwarden WatchKit Extension";
sourceTree = "<group>"; sourceTree = "<group>";
@@ -480,9 +470,6 @@
dependencies = ( dependencies = (
); );
name = "bitwarden WatchKit Extension"; name = "bitwarden WatchKit Extension";
packageProductDependencies = (
1B5BE450295A08A900E0C323 /* FirebaseCrashlytics */,
);
productName = "bitwarden WatchKit Extension"; productName = "bitwarden WatchKit Extension";
productReference = 1B15614828B7F3D800610B9B /* bitwarden WatchKit Extension.appex */; productReference = 1B15614828B7F3D800610B9B /* bitwarden WatchKit Extension.appex */;
productType = "com.apple.product-type.watchkit2-extension"; productType = "com.apple.product-type.watchkit2-extension";
@@ -517,9 +504,6 @@
Base, Base,
); );
mainGroup = 1B15612628B7F3D400610B9B; mainGroup = 1B15612628B7F3D400610B9B;
packageReferences = (
1B5BE44F295A08A900E0C323 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */,
);
productRefGroup = 1B15613028B7F3D400610B9B /* Products */; productRefGroup = 1B15613028B7F3D400610B9B /* Products */;
projectDirPath = ""; projectDirPath = "";
projectRoot = ""; projectRoot = "";
@@ -538,7 +522,6 @@
files = ( files = (
1B15613A28B7F3D700610B9B /* Preview Assets.xcassets in Resources */, 1B15613A28B7F3D700610B9B /* Preview Assets.xcassets in Resources */,
1B15613728B7F3D700610B9B /* Assets.xcassets in Resources */, 1B15613728B7F3D700610B9B /* Assets.xcassets in Resources */,
1B5BE45E295B472C00E0C323 /* GoogleService-Info.plist in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -547,7 +530,6 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
1B15614328B7F3D800610B9B /* Assets.xcassets in Resources */, 1B15614328B7F3D800610B9B /* Assets.xcassets in Resources */,
1B5BE45F295B472C00E0C323 /* GoogleService-Info.plist in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -556,7 +538,6 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
1B15615B28B7F3D900610B9B /* Preview Assets.xcassets in Resources */, 1B15615B28B7F3D900610B9B /* Preview Assets.xcassets in Resources */,
1B5BE460295B472C00E0C323 /* GoogleService-Info.plist in Resources */,
1B5AFF0729197822004478F9 /* Localizable.strings in Resources */, 1B5AFF0729197822004478F9 /* Localizable.strings in Resources */,
1B15615828B7F3D900610B9B /* Assets.xcassets in Resources */, 1B15615828B7F3D900610B9B /* Assets.xcassets in Resources */,
); );
@@ -619,7 +600,6 @@
1B15616E28B81A4300610B9B /* WatchConnectivityManager.swift in Sources */, 1B15616E28B81A4300610B9B /* WatchConnectivityManager.swift in Sources */,
1B5AFF0329196C81004478F9 /* ColorUtils.swift in Sources */, 1B5AFF0329196C81004478F9 /* ColorUtils.swift in Sources */,
1B59EC612900C48E00A8718D /* KeychainHelper.swift in Sources */, 1B59EC612900C48E00A8718D /* KeychainHelper.swift in Sources */,
1B5BE453295A08C600E0C323 /* ExtensionDelegate.swift in Sources */,
1B59EC5729007DEE00A8718D /* BitwardenDB.xcdatamodeld in Sources */, 1B59EC5729007DEE00A8718D /* BitwardenDB.xcdatamodeld in Sources */,
1B8BF90D2919BED9006F069E /* Base32.swift in Sources */, 1B8BF90D2919BED9006F069E /* Base32.swift in Sources */,
1B8453EC290C672E00F921E1 /* CipherEntity+CoreDataClass.swift in Sources */, 1B8453EC290C672E00F921E1 /* CipherEntity+CoreDataClass.swift in Sources */,
@@ -847,7 +827,6 @@
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = LTZ2PFU5D6; DEVELOPMENT_TEAM = LTZ2PFU5D6;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
IBSC_MODULE = bitwarden_WatchKit_Extension; IBSC_MODULE = bitwarden_WatchKit_Extension;
@@ -1005,25 +984,6 @@
}; };
/* End XCConfigurationList section */ /* End XCConfigurationList section */
/* Begin XCRemoteSwiftPackageReference section */
1B5BE44F295A08A900E0C323 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/firebase/firebase-ios-sdk";
requirement = {
kind = exactVersion;
version = 9.6.0;
};
};
/* End XCRemoteSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */
1B5BE450295A08A900E0C323 /* FirebaseCrashlytics */ = {
isa = XCSwiftPackageProductDependency;
package = 1B5BE44F295A08A900E0C323 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
productName = FirebaseCrashlytics;
};
/* End XCSwiftPackageProductDependency section */
/* Begin XCVersionGroup section */ /* Begin XCVersionGroup section */
1B59EC5529007DEE00A8718D /* BitwardenDB.xcdatamodeld */ = { 1B59EC5529007DEE00A8718D /* BitwardenDB.xcdatamodeld */ = {
isa = XCVersionGroup; isa = XCVersionGroup;

View File

@@ -1,113 +0,0 @@
{
"pins" : [
{
"identity" : "abseil-cpp-swiftpm",
"kind" : "remoteSourceControl",
"location" : "https://github.com/firebase/abseil-cpp-SwiftPM.git",
"state" : {
"revision" : "583de9bd60f66b40e78d08599cc92036c2e7e4e1",
"version" : "0.20220203.2"
}
},
{
"identity" : "boringssl-swiftpm",
"kind" : "remoteSourceControl",
"location" : "https://github.com/firebase/boringssl-SwiftPM.git",
"state" : {
"revision" : "dd3eda2b05a3f459fc3073695ad1b28659066eab",
"version" : "0.9.1"
}
},
{
"identity" : "firebase-ios-sdk",
"kind" : "remoteSourceControl",
"location" : "https://github.com/firebase/firebase-ios-sdk",
"state" : {
"revision" : "7e80c25b51c2ffa238879b07fbfc5baa54bb3050",
"version" : "9.6.0"
}
},
{
"identity" : "googleappmeasurement",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/GoogleAppMeasurement.git",
"state" : {
"revision" : "c1cfde8067668027b23a42c29d11c246152fe046",
"version" : "9.6.0"
}
},
{
"identity" : "googledatatransport",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/GoogleDataTransport.git",
"state" : {
"revision" : "5056b15c5acbb90cd214fe4d6138bdf5a740e5a8",
"version" : "9.2.0"
}
},
{
"identity" : "googleutilities",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/GoogleUtilities.git",
"state" : {
"revision" : "6db6edb48bdd9943426562c7f042a5492de5ba3d",
"version" : "7.10.0"
}
},
{
"identity" : "grpc-ios",
"kind" : "remoteSourceControl",
"location" : "https://github.com/grpc/grpc-ios.git",
"state" : {
"revision" : "8440b914756e0d26d4f4d054a1c1581daedfc5b6",
"version" : "1.44.3-grpc"
}
},
{
"identity" : "gtm-session-fetcher",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/gtm-session-fetcher.git",
"state" : {
"revision" : "5ccda3981422a84186387dbb763ba739178b529c",
"version" : "2.3.0"
}
},
{
"identity" : "leveldb",
"kind" : "remoteSourceControl",
"location" : "https://github.com/firebase/leveldb.git",
"state" : {
"revision" : "0706abcc6b0bd9cedfbb015ba840e4a780b5159b",
"version" : "1.22.2"
}
},
{
"identity" : "nanopb",
"kind" : "remoteSourceControl",
"location" : "https://github.com/firebase/nanopb.git",
"state" : {
"revision" : "819d0a2173aff699fb8c364b6fb906f7cdb1a692",
"version" : "2.30909.0"
}
},
{
"identity" : "promises",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/promises.git",
"state" : {
"revision" : "3e4e743631e86c8c70dbc6efdc7beaa6e90fd3bb",
"version" : "2.1.1"
}
},
{
"identity" : "swift-protobuf",
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-protobuf.git",
"state" : {
"revision" : "ab3a58b7209a17d781c0d1dbb3e1ff3da306bae8",
"version" : "1.20.3"
}
}
],
"version" : 2
}

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
repo_url = "https://mobileapp.bitwarden.com/fdroid/repo" repo_url = "https://mobileapp.bitwarden.com/fdroid"
repo_name = "Bitwarden F-Droid Repo" repo_name = "Bitwarden F-Droid Repo"
repo_icon = "fdroid-icon.png" repo_icon = "fdroid-icon.png"
repo_description = """ repo_description = """