diff --git a/src/Core/Models/View/LoginView.cs b/src/Core/Models/View/LoginView.cs
index 9993c2f11..9c9bafbaf 100644
--- a/src/Core/Models/View/LoginView.cs
+++ b/src/Core/Models/View/LoginView.cs
@@ -1,8 +1,7 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using Bit.Core.Enums;
+using Bit.Core.Enums;
using Bit.Core.Models.Domain;
+using Bit.Core.Resources.Localization;
+using Bit.Core.Utilities;
namespace Bit.Core.Models.View
{
@@ -40,4 +39,15 @@ namespace Bit.Core.Models.View
};
}
}
+
+ public static class LoginViewExtensions
+ {
+ public static string GetMainFido2CredentialUsername(this LoginView loginView)
+ {
+ return loginView.MainFido2Credential.UserName
+ .FallbackOnNullOrWhiteSpace(loginView.MainFido2Credential.UserDisplayName)
+ .FallbackOnNullOrWhiteSpace(loginView.Username)
+ .FallbackOnNullOrWhiteSpace(AppResources.UnknownAccount);
+ }
+ }
}
diff --git a/src/Core/Resources/Localization/AppResources.Designer.cs b/src/Core/Resources/Localization/AppResources.Designer.cs
index 0eb5f3bd0..557cd8d9f 100644
--- a/src/Core/Resources/Localization/AppResources.Designer.cs
+++ b/src/Core/Resources/Localization/AppResources.Designer.cs
@@ -7208,6 +7208,15 @@ namespace Bit.Core.Resources.Localization {
}
}
+ ///
+ /// Looks up a localized string similar to Unknown account.
+ ///
+ public static string UnknownAccount {
+ get {
+ return ResourceManager.GetString("UnknownAccount", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Unknown {0} error occurred..
///
diff --git a/src/Core/Resources/Localization/AppResources.resx b/src/Core/Resources/Localization/AppResources.resx
index 65f596360..79731f3cb 100644
--- a/src/Core/Resources/Localization/AppResources.resx
+++ b/src/Core/Resources/Localization/AppResources.resx
@@ -2942,6 +2942,9 @@ Do you want to switch to this account?
Passwords
+
+ Unknown account
+
Set up auto-fill
diff --git a/src/Core/Utilities/StringExtensions.cs b/src/Core/Utilities/StringExtensions.cs
index a37dc9f49..5dd92be31 100644
--- a/src/Core/Utilities/StringExtensions.cs
+++ b/src/Core/Utilities/StringExtensions.cs
@@ -1,5 +1,4 @@
-using System;
-using System.Globalization;
+using System.Globalization;
using System.Text;
namespace Bit.Core.Utilities
@@ -30,5 +29,7 @@ namespace Bit.Core.Utilities
.ToString()
.Normalize(NormalizationForm.FormC);
}
+
+ public static string FallbackOnNullOrWhiteSpace(this string s, string fallback) => string.IsNullOrWhiteSpace(s) ? fallback : s;
}
}
diff --git a/src/iOS.Core/Utilities/ASHelpers.cs b/src/iOS.Core/Utilities/ASHelpers.cs
index d04c8bdd1..6810df020 100644
--- a/src/iOS.Core/Utilities/ASHelpers.cs
+++ b/src/iOS.Core/Utilities/ASHelpers.cs
@@ -2,6 +2,7 @@
using Bit.Core.Abstractions;
using Bit.Core.Enums;
using Bit.Core.Models.View;
+using Bit.Core.Resources.Localization;
using Bit.Core.Services;
using Bit.Core.Utilities;
using Foundation;
@@ -148,19 +149,8 @@ namespace Bit.iOS.Core.Utilities
return null;
}
- var userName = cipher.Login.MainFido2Credential.UserName;
- if (string.IsNullOrWhiteSpace(userName))
- {
- userName = cipher.Login.MainFido2Credential.UserDisplayName;
-
- if (string.IsNullOrWhiteSpace(userName))
- {
- userName = cipher.Login.Username;
- }
- }
-
return new ASPasskeyCredentialIdentity(cipher.Login.MainFido2Credential.RpId,
- userName,
+ cipher.Login.GetMainFido2CredentialUsername(),
NSData.FromArray(cipher.Login.MainFido2Credential.CredentialId.GuidToRawFormat()),
cipher.Login.MainFido2Credential.UserHandle,
cipher.Id);