diff --git a/.editorconfig b/.editorconfig
index 76dc34418..40d2781d1 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -25,11 +25,6 @@ csharp_style_expression_bodied_indexers = true:silent
csharp_style_expression_bodied_accessors = true:silent
csharp_style_expression_bodied_lambdas = true:silent
csharp_style_expression_bodied_local_functions = false:silent
-dotnet_diagnostic.SA1011.severity = none
-dotnet_diagnostic.SA1101.severity = none
-dotnet_diagnostic.SA1309.severity = none
-dotnet_diagnostic.SA1310.severity = warning
-dotnet_diagnostic.SX1309.severity = none
# Razor files
[*.razor]
@@ -65,59 +60,3 @@ indent_size = 4
[*.xml]
indent_style = space
indent_size = 4
-
-[*.{cs,vb}]
-#### Naming styles ####
-
-# Naming rules
-
-dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
-dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
-dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
-
-dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
-dotnet_naming_rule.types_should_be_pascal_case.symbols = types
-dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
-
-dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
-dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
-dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
-
-# Symbol specifications
-
-dotnet_naming_symbols.interface.applicable_kinds = interface
-dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.interface.required_modifiers =
-
-dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
-dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.types.required_modifiers =
-
-dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
-dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.non_field_members.required_modifiers =
-
-# Naming styles
-
-dotnet_naming_style.begins_with_i.required_prefix = I
-dotnet_naming_style.begins_with_i.required_suffix =
-dotnet_naming_style.begins_with_i.word_separator =
-dotnet_naming_style.begins_with_i.capitalization = pascal_case
-
-dotnet_naming_style.pascal_case.required_prefix =
-dotnet_naming_style.pascal_case.required_suffix =
-dotnet_naming_style.pascal_case.word_separator =
-dotnet_naming_style.pascal_case.capitalization = pascal_case
-
-dotnet_naming_style.pascal_case.required_prefix =
-dotnet_naming_style.pascal_case.required_suffix =
-dotnet_naming_style.pascal_case.word_separator =
-dotnet_naming_style.pascal_case.capitalization = pascal_case
-dotnet_style_operator_placement_when_wrapping = beginning_of_line
-tab_width = 4
-end_of_line = crlf
-dotnet_style_coalesce_expression = false:suggestion
-dotnet_style_null_propagation = false:suggestion
-
-# IDE0046: Convert to conditional expression
-dotnet_diagnostic.IDE0046.severity = silent
diff --git a/.globalconfig b/.globalconfig
new file mode 100644
index 000000000..5b82cc794
--- /dev/null
+++ b/.globalconfig
@@ -0,0 +1,57 @@
+dotnet_diagnostic.SA1011.severity = none
+dotnet_diagnostic.SA1101.severity = none
+dotnet_diagnostic.SA1309.severity = none
+dotnet_diagnostic.SA1310.severity = warning
+dotnet_diagnostic.SX1309.severity = none
+
+# Naming rules
+
+dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
+dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
+dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
+
+dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
+dotnet_naming_rule.types_should_be_pascal_case.symbols = types
+dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
+
+dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
+dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
+dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
+
+# Symbol specifications
+
+dotnet_naming_symbols.interface.applicable_kinds = interface
+dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.interface.required_modifiers =
+
+dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
+dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.types.required_modifiers =
+
+dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
+dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.non_field_members.required_modifiers =
+
+# Naming styles
+
+dotnet_naming_style.begins_with_i.required_prefix = I
+dotnet_naming_style.begins_with_i.required_suffix =
+dotnet_naming_style.begins_with_i.word_separator =
+dotnet_naming_style.begins_with_i.capitalization = pascal_case
+
+dotnet_naming_style.pascal_case.required_prefix =
+dotnet_naming_style.pascal_case.required_suffix =
+dotnet_naming_style.pascal_case.word_separator =
+dotnet_naming_style.pascal_case.capitalization = pascal_case
+
+dotnet_naming_style.pascal_case.required_prefix =
+dotnet_naming_style.pascal_case.required_suffix =
+dotnet_naming_style.pascal_case.word_separator =
+dotnet_naming_style.pascal_case.capitalization = pascal_case
+dotnet_style_operator_placement_when_wrapping = beginning_of_line
+
+dotnet_style_coalesce_expression = false:suggestion
+dotnet_style_null_propagation = false:suggestion
+
+# IDE0046: Convert to conditional expression
+dotnet_diagnostic.IDE0046.severity = silent
diff --git a/src/AliasGenerators/AliasGenerators.csproj b/src/AliasGenerators/AliasGenerators.csproj
index 23b2caeb1..35d83fef2 100644
--- a/src/AliasGenerators/AliasGenerators.csproj
+++ b/src/AliasGenerators/AliasGenerators.csproj
@@ -12,7 +12,7 @@
- true
+ true
diff --git a/src/AliasVault.Api/AliasVault.Api.csproj b/src/AliasVault.Api/AliasVault.Api.csproj
index fcbb05fb4..fa7d2b653 100644
--- a/src/AliasVault.Api/AliasVault.Api.csproj
+++ b/src/AliasVault.Api/AliasVault.Api.csproj
@@ -10,7 +10,7 @@
- false
+ true
diff --git a/src/AliasVault.Shared/AliasVault.Shared.csproj b/src/AliasVault.Shared/AliasVault.Shared.csproj
index ec688bbed..d56a6ba10 100644
--- a/src/AliasVault.Shared/AliasVault.Shared.csproj
+++ b/src/AliasVault.Shared/AliasVault.Shared.csproj
@@ -8,7 +8,7 @@
bin\Debug\net8.0\AliasVault.Shared.xml
- false
+ true
diff --git a/src/AliasVault.WebApp/AliasVault.WebApp.csproj b/src/AliasVault.WebApp/AliasVault.WebApp.csproj
index aeada7dec..3f87ca5bc 100644
--- a/src/AliasVault.WebApp/AliasVault.WebApp.csproj
+++ b/src/AliasVault.WebApp/AliasVault.WebApp.csproj
@@ -8,28 +8,43 @@
$([System.DateTime]::UtcNow.ToString("yyyy-MM-dd HH:mm:ss"))
+
+ bin\Debug\net8.0\AliasVault.WebApp.xml
+ true
+ dev
+
+
+
+ true
+ bin\Release\net8.0\AliasVault.WebApp.xml
+ true
+ True
+ $([System.DateTime]::UtcNow.ToString("yyyyMMddHHmmss"))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
- bin\Debug\net8.0\AliasVault.WebApp.xml
- false
- dev
-
-
-
- true
- bin\Release\net8.0\AliasVault.WebApp.xml
- false
- True
- $([System.DateTime]::UtcNow.ToString("yyyyMMddHHmmss"))
-
-
diff --git a/src/AliasVault.WebApp/Auth/Pages/Login.razor b/src/AliasVault.WebApp/Auth/Pages/Login.razor
index 4957fa586..010c3f1a7 100644
--- a/src/AliasVault.WebApp/Auth/Pages/Login.razor
+++ b/src/AliasVault.WebApp/Auth/Pages/Login.razor
@@ -129,15 +129,19 @@
GlobalNotificationService.ClearMessages();
NavigationManager.NavigateTo("/");
}
+#if DEBUG
catch (Exception ex)
{
- // If in debug mode, throw the exception.
- #if DEBUG
+ // If in debug mode show the actual exception.
_serverValidationErrors.AddError(ex.ToString());
- #else
- _serverValidationErrors.AddError("An error occurred while processing the login request. Try again (later).");
- #endif
}
+#else
+ catch
+ {
+ // If in release mode show a generic error.
+ _serverValidationErrors.AddError("An error occurred while processing the login request. Try again (later).");
+ }
+#endif
finally
{
_loadingIndicator.Hide();
diff --git a/src/Utilities/Cryptography/Cryptography.csproj b/src/Utilities/Cryptography/Cryptography.csproj
index 8907b6efd..0aad782ff 100644
--- a/src/Utilities/Cryptography/Cryptography.csproj
+++ b/src/Utilities/Cryptography/Cryptography.csproj
@@ -7,7 +7,7 @@
- false
+ true
bin\Debug\net8.0\Cryptography.xml
diff --git a/src/Utilities/GenericHelpers/Class1.cs b/src/Utilities/GenericHelpers/Class1.cs
deleted file mode 100644
index e95cd9efb..000000000
--- a/src/Utilities/GenericHelpers/Class1.cs
+++ /dev/null
@@ -1,61 +0,0 @@
-namespace GenericHelpers;
-
-using System;
-using System.Net.Http;
-using System.Threading.Tasks;
-using HtmlAgilityPack;
-
-public class FaviconService
-{
- public static async Task GetFaviconAsync(string url)
- {
- try
- {
- using (HttpClient client = new HttpClient())
- {
- HttpResponseMessage response = await client.GetAsync(url);
- if (!response.IsSuccessStatusCode)
- {
- return null;
- }
-
- string htmlContent = await response.Content.ReadAsStringAsync();
- HtmlDocument htmlDoc = new HtmlDocument();
- htmlDoc.LoadHtml(htmlContent);
-
- // Try to find the favicon link in the HTML
- var faviconNode = htmlDoc.DocumentNode.SelectSingleNode("//link[@rel='icon' or @rel='shortcut icon']");
- if (faviconNode == null)
- {
- return null;
- }
-
- var faviconUrl = faviconNode.GetAttributeValue("href", null);
- if (string.IsNullOrEmpty(faviconUrl))
- {
- return null;
- }
-
- // If the favicon URL is relative, convert it to an absolute URL
- if (!Uri.IsWellFormedUriString(faviconUrl, UriKind.Absolute))
- {
- var baseUri = new Uri(url);
- faviconUrl = new Uri(baseUri, faviconUrl).ToString();
- }
-
- HttpResponseMessage faviconResponse = await client.GetAsync(faviconUrl);
- if (!faviconResponse.IsSuccessStatusCode)
- {
- return null;
- }
-
- byte[] faviconBytes = await faviconResponse.Content.ReadAsByteArrayAsync();
- return faviconBytes;
- }
- }
- catch
- {
- return null;
- }
- }
-}
diff --git a/src/Utilities/GenericHelpers/GenericHelpers.csproj b/src/Utilities/GenericHelpers/GenericHelpers.csproj
deleted file mode 100644
index 3a6353295..000000000
--- a/src/Utilities/GenericHelpers/GenericHelpers.csproj
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
- net8.0
- enable
- enable
-
-
-