Compare commits
4 Commits
v2023.1.0
...
community/
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7500073e7e | ||
|
|
6b77fee72b | ||
|
|
a0e62771fd | ||
|
|
733464e05d |
BIN
.github/secrets/GoogleService-Info.plist.gpg
vendored
30
.github/workflows/build.yml
vendored
@@ -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'
|
||||||
|
|||||||
@@ -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"),
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -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"/>
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
34
src/Core/Utilities/StringExtensions.cs
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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>
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 738 B After Width: | Height: | Size: 473 B |
|
Before Width: | Height: | Size: 899 B After Width: | Height: | Size: 691 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 788 B |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 1.5 KiB |
@@ -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>
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
import WatchKit
|
|
||||||
import FirebaseCore
|
|
||||||
|
|
||||||
class ExtensionDelegate: NSObject, WKExtensionDelegate {
|
|
||||||
|
|
||||||
func applicationDidFinishLaunching() {
|
|
||||||
#if !DEBUG
|
|
||||||
FirebaseApp.configure()
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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
|
|
||||||
}
|
|
||||||
@@ -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 = """
|
||||||
|
|||||||