Skip to content

Commit ef2edcb

Browse files
committed
Fixed build and tests
1 parent e8f9c1d commit ef2edcb

File tree

39 files changed

+761
-598
lines changed

39 files changed

+761
-598
lines changed

samples/Sample.Blazor/Components/Layout/MainLayout.razor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
using ISynergy.Framework.Core.Abstractions;
1+
using ISynergy.Framework.Core.Abstractions;
22
using ISynergy.Framework.Core.Abstractions.Base;
33
using ISynergy.Framework.Core.Abstractions.Services;
4-
using ISynergy.Framework.Core.Messages;
4+
using ISynergy.Framework.Core.Services;
55
using ISynergy.Framework.Mvvm.Messages;
66
using Microsoft.AspNetCore.Components;
77
using Microsoft.AspNetCore.Components.Routing;

samples/Sample.Maui/Views/ShellView.xaml.cs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,24 @@ namespace Sample.Views;
77

88
public partial class ShellView : IShellView
99
{
10+
/// <summary>
11+
/// Gets or sets the viewmodel and data context for a view.
12+
/// </summary>
13+
/// <value>The data context.</value>
1014
public IViewModel ViewModel
1115
{
12-
get => BindingContext as IViewModel ?? throw new InvalidOperationException("ViewModel is not set");
13-
set => BindingContext = value;
16+
get
17+
{
18+
if (BindingContext is IViewModel viewModel)
19+
return viewModel;
20+
21+
throw new InvalidOperationException("The BindingContext is not of type IViewModel.");
22+
}
23+
set
24+
{
25+
BindingContext = value;
26+
SetBinding(View.TitleProperty, new Binding(nameof(value.Title)));
27+
}
1428
}
1529

1630
public ShellView(ShellViewModel viewModel)
@@ -45,7 +59,6 @@ protected virtual void Dispose(bool disposing)
4559
{
4660
// free managed resources
4761
ViewModel?.Dispose();
48-
ViewModel = null;
4962
}
5063

5164
// free native resources if there are any.
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using ISynergy.Framework.Core.Abstractions.Services;
1+
using ISynergy.Framework.Core.Abstractions.Services;
22
using ISynergy.Framework.UI.Services.Base;
33
using Microsoft.Extensions.Logging;
44

@@ -7,6 +7,7 @@ namespace Sample.Services;
77
public class ExceptionHandlerService(
88
IBusyService busyService,
99
ILanguageService languageService,
10-
ILogger<BaseExceptionHandlerService> logger) : BaseExceptionHandlerService(busyService, languageService, logger)
10+
IMessengerService messengerService,
11+
ILogger<BaseExceptionHandlerService> logger) : BaseExceptionHandlerService(busyService, languageService, messengerService, logger)
1112
{
1213
}

src/ISynergy.Framework.Automations/Abstractions/IActionQueueBuilder.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
using System.Collections.Concurrent;
2+
13
namespace ISynergy.Framework.Automations.Abstractions;
24

35
/// <summary>

src/ISynergy.Framework.Core/Extensions/ConfigurationExtensions.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using ISynergy.Framework.Core.Locators;
1+
using ISynergy.Framework.Core.Locators;
22
using Microsoft.Extensions.Configuration;
33
using Microsoft.Extensions.Logging;
44
using System.Runtime.CompilerServices;
@@ -48,7 +48,7 @@ public void Dispose()
4848
{
4949
try
5050
{
51-
return ServiceLocator.Default.ServiceProvider.GetService<ILoggerFactory>()?
51+
return ServiceLocator.Default.GetRequiredService<ILoggerFactory>()?
5252
.CreateLogger(typeof(ConfigurationExtensions));
5353
}
5454
catch
@@ -77,7 +77,7 @@ public static void BindWithReload(this IConfiguration configuration, object inst
7777
};
7878

7979
configuration.Bind(instance, options => options.ErrorOnUnknownConfiguration = false);
80-
80+
8181
// Register change callback and store the token for disposal
8282
var reloadToken = configuration.GetReloadToken().RegisterChangeCallback((_) =>
8383
{
@@ -109,7 +109,7 @@ public static LogLevel GetDefaultLogLevel(this IConfiguration configuration) =>
109109
public static LogLevel GetLogLevel(this IConfiguration configuration, string category)
110110
{
111111
var logLevel = configuration.GetSection($"LogLevel:{category}").Get<LogLevel>();
112-
112+
113113
// Return Information as default instead of None (which is default(LogLevel))
114114
if (logLevel == default(LogLevel))
115115
{

src/ISynergy.Framework.Core/Extensions/StringExtensions.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System.Drawing;
1+
using System.Drawing;
22
using System.Globalization;
33
using System.Reflection;
44
using System.Text;
@@ -106,15 +106,18 @@ public static string IncreaseString2Long(this string self, long summand)
106106
}
107107
}
108108

109-
// No numeric suffix found
109+
// If codePos is still at self.Length, all characters are digits
110110
if (codePos == self.Length)
111-
return self + summand;
111+
{
112+
var num = long.Parse(self) + summand;
113+
return num.ToString();
114+
}
112115

113116
var numberString = self[codePos..];
114-
var num = long.Parse(numberString) + summand;
117+
var num_value = long.Parse(numberString) + summand;
115118

116119
// Format the number with leading zeros to maintain the original format
117-
return self[..codePos] + num.ToString().PadLeft(numberString.Length, '0');
120+
return self[..codePos] + num_value.ToString().PadLeft(numberString.Length, '0');
118121
}
119122

120123
/// <summary>

src/ISynergy.Framework.Core/Services/MessengerService.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using ISynergy.Framework.Core.Abstractions.Events;
1+
using ISynergy.Framework.Core.Abstractions.Events;
22
using ISynergy.Framework.Core.Abstractions.Services;
33
using ISynergy.Framework.Core.Events;
44
using ISynergy.Framework.Core.Extensions;
@@ -24,7 +24,8 @@ public sealed class MessengerService : IMessengerService
2424
{
2525
private readonly object _recipientsLock = new object();
2626
private readonly object _cleanupLock = new object();
27-
private readonly ILogger<MessengerService>? _logger;
27+
28+
private readonly ILogger<MessengerService> _logger;
2829

2930
private Dictionary<Type, List<WeakActionAndToken>>? _recipientsOfSubclassesAction;
3031
private Dictionary<Type, List<WeakActionAndToken>>? _recipientsStrictAction;
@@ -33,7 +34,7 @@ public sealed class MessengerService : IMessengerService
3334
/// Initializes a new instance of the <see cref="MessengerService"/> class.
3435
/// </summary>
3536
/// <param name="logger">Optional logger for exception handling. If not provided, exceptions will be silently handled.</param>
36-
public MessengerService(ILogger<MessengerService>? logger = null)
37+
public MessengerService(ILogger<MessengerService> logger)
3738
{
3839
_logger = logger;
3940
}
@@ -411,7 +412,7 @@ public void SendToTargetOrType<TMessage>(
411412

412413
if (list is not null)
413414
{
414-
SendToList(message, list, messageType, targetType, token, _logger);
415+
SendToList(message, list, messageType, targetType, token);
415416
}
416417
}
417418
}
@@ -433,7 +434,7 @@ public void SendToTargetOrType<TMessage>(
433434

434435
if (list is not null)
435436
{
436-
SendToList(message, list, messageType, targetType, token, _logger);
437+
SendToList(message, list, messageType, targetType, token);
437438
}
438439
}
439440

@@ -458,13 +459,12 @@ public void SendToTargetOrType<TMessage>(
458459
/// use a token when registering (or who used a different token) will not
459460
/// get the message. Similarly, messages sent without any token, or with a different
460461
/// token, will not be delivered to that recipient.</param>
461-
private static void SendToList<TMessage>(
462+
private void SendToList<TMessage>(
462463
TMessage message,
463464
List<WeakActionAndToken> list,
464465
Type messageType,
465466
Type? targetType,
466-
object? token,
467-
ILogger<MessengerService>? logger)
467+
object? token)
468468
{
469469
if (message is null)
470470
return;
@@ -489,7 +489,7 @@ private static void SendToList<TMessage>(
489489
{
490490
// Log exceptions to prevent one failing recipient from affecting others
491491
// This allows debugging while maintaining message delivery to other recipients
492-
logger?.LogWarning(ex,
492+
_logger?.LogWarning(ex,
493493
"Exception occurred while executing message handler. MessageType: {MessageType}, RecipientType: {RecipientType}",
494494
message?.GetType().Name ?? "Unknown",
495495
item.Action?.Target?.GetType().Name ?? "Unknown");

src/ISynergy.Framework.Mvvm/Abstractions/Services/INavigationService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using ISynergy.Framework.Mvvm.Abstractions.ViewModels;
1+
using ISynergy.Framework.Mvvm.Abstractions.ViewModels;
22

33
namespace ISynergy.Framework.Mvvm.Abstractions.Services;
44

src/ISynergy.Framework.Mvvm/ViewModels/ViewModel.cs

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
using ISynergy.Framework.Core.Abstractions.Services;
1+
using ISynergy.Framework.Core.Abstractions.Services;
22
using ISynergy.Framework.Core.Base;
3-
using ISynergy.Framework.Core.Services;
43
using ISynergy.Framework.Core.Validation;
54
using ISynergy.Framework.Mvvm.Abstractions.ViewModels;
65
using ISynergy.Framework.Mvvm.Commands;
@@ -120,27 +119,19 @@ protected ViewModel(
120119

121120
private async void ScopedContextService_ScopedChanged(object? sender, Core.Events.ReturnEventArgs<bool> e)
122121
{
123-
try
122+
if (e.Value)
124123
{
125-
if (e.Value)
126-
{
127-
IsInitialized = false;
124+
IsInitialized = false;
128125

129-
// Clear existing data
130-
Cleanup();
126+
// Clear existing data
127+
Cleanup();
131128

132-
// Reinitialize with new scope if needed
133-
if (!IsDisposed)
134-
{
135-
await InitializeAsync();
136-
}
129+
// Reinitialize with new scope if needed
130+
if (!IsDisposed)
131+
{
132+
await InitializeAsync();
137133
}
138134
}
139-
catch (Exception ex)
140-
{
141-
_logger.LogError(ex, "Error in ScopedContextService_ScopedChanged for {ViewModelType}", GetType().Name);
142-
_commonServices.ExceptionHandlerService?.HandleException(ex);
143-
}
144135
}
145136

146137
/// <summary>

src/ISynergy.Framework.UI.Blazor/Components/Controls/View.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using ISynergy.Framework.Core.Attributes;
1+
using ISynergy.Framework.Core.Attributes;
22
using ISynergy.Framework.Core.Enumerations;
33
using ISynergy.Framework.Mvvm.Abstractions;
44
using ISynergy.Framework.Mvvm.Abstractions.ViewModels;
@@ -18,7 +18,7 @@ public partial class View<TViewModel> : ComponentBase, IView
1818
/// Gets or sets the viewmodel and data context for a view.
1919
/// </summary>
2020
/// <value>The data context.</value>
21-
[Inject] public TViewModel? ViewModel { get; set; }
21+
[Inject] public required TViewModel ViewModel { get; set; }
2222

2323
/// <summary>
2424
/// Gets or sets the IsEnabled property value.
@@ -30,10 +30,10 @@ public partial class View<TViewModel> : ComponentBase, IView
3030
/// </summary>
3131
private readonly List<ICommand> _subscribedCommands = new();
3232

33-
IViewModel? IView.ViewModel
33+
IViewModel IView.ViewModel
3434
{
3535
get => ViewModel;
36-
set => ViewModel = value is null ? null : (TViewModel)value;
36+
set => ViewModel = (TViewModel)value;
3737
}
3838

3939
protected override async Task OnInitializedAsync()

0 commit comments

Comments
 (0)