Skip to content

Commit

Permalink
Pre-fill Last Loaded/Saved Config Name (#228)
Browse files Browse the repository at this point in the history
  • Loading branch information
wbaldoumas authored Jan 12, 2025
1 parent d6e99f2 commit 4ed422f
Show file tree
Hide file tree
Showing 7 changed files with 83 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
</HeaderContent>
<RowTemplate>
<MudTd DataLabel="Configuration">
<MudLink Color="Color.Tertiary" Class="cursor-pointer" OnClick="_ => LoadConfiguration(context.Configuration)">
<MudLink Color="Color.Tertiary" Class="cursor-pointer" OnClick="_ => LoadConfiguration(context)">
@(Path.GetFileNameWithoutExtension(context.ConfigurationFile.Name))
</MudLink>
</MudTd>
Expand All @@ -41,7 +41,7 @@
<MudIconButton Icon="@Icons.Material.Filled.FileOpen"
Color="Color.Primary"
Variant="Variant.Outlined"
OnClick="_ => LoadConfiguration(context.Configuration)"/>
OnClick="_ => LoadConfiguration(context)"/>
</MudTooltip>
<MudTooltip Text="delete configuration" Delay="@ThemeProvider.TooltipDelay" Duration="@ThemeProvider.TooltipDuration">
<MudIconButton Icon="@Icons.Material.Filled.Delete"
Expand Down Expand Up @@ -115,9 +115,10 @@
));
}

private void LoadConfiguration(CompositionConfiguration compositionConfiguration)
private void LoadConfiguration(SavedCompositionConfiguration savedCompositionConfiguration)
{
Dispatcher.Dispatch(new LoadSavedCompositionConfiguration(compositionConfiguration));
Dispatcher.Dispatch(new LoadSavedCompositionConfiguration(savedCompositionConfiguration.Configuration));
Dispatcher.Dispatch(new UpdateLastLoadedConfigurationName(Path.GetFileNameWithoutExtension(savedCompositionConfiguration.ConfigurationFile.Name)));

NavigationManager.NavigateTo("");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,13 @@

[CascadingParameter] private MudDialogInstance? MudDialog { get; set; }

protected override void OnInitialized()
{
ConfigurationName = SavedCompositionConfigurationState.Value.LastLoadedConfigurationName;

base.OnInitialized();
}

private async Task SaveCompositionConfiguration()
{
var configurationFileExists = await CompositionConfigurationPersistenceService.DoesConfigurationExist(
Expand Down Expand Up @@ -70,6 +77,8 @@
new CancellationTokenSource(TimeSpan.FromSeconds(10)).Token
);

Dispatcher.Dispatch(new UpdateLastLoadedConfigurationName(ConfigurationName));

MudDialog?.Close(DialogResult.Ok(isSaved));
}

Expand Down
1 change: 1 addition & 0 deletions src/BaroquenMelody.App.Components/_Imports.razor
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
@inject IState<CompositionConfigurationState> CompositionConfigurationState
@inject IState<CompositionProgressState> CompositionProgressState
@inject IState<BaroquenMelodyState> BaroquenMelodyState
@inject IState<SavedCompositionConfigurationState> SavedCompositionConfigurationState
@inject IDispatcher Dispatcher
@inject IOrnamentationConfigurationService OrnamentationConfigurationService
@inject ICompositionRuleConfigurationService CompositionRuleConfigurationService
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
namespace BaroquenMelody.Library.Store.Actions;

public sealed record UpdateLastLoadedConfigurationName(string LastLoadedConfigurationName);
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using BaroquenMelody.Library.Store.Actions;
using BaroquenMelody.Library.Store.State;
using Fluxor;

namespace BaroquenMelody.Library.Store.Reducers;

public static class SavedCompositionConfigurationReducers
{
[ReducerMethod]
public static SavedCompositionConfigurationState ReduceUpdateLastLoadedConfigurationName(
SavedCompositionConfigurationState state,
UpdateLastLoadedConfigurationName action
) => new(action.LastLoadedConfigurationName);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
using Fluxor;

namespace BaroquenMelody.Library.Store.State;

[FeatureState]
public sealed record SavedCompositionConfigurationState(string LastLoadedConfigurationName)
{
public SavedCompositionConfigurationState()
: this(string.Empty)
{
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
using BaroquenMelody.Library.Store.Actions;
using BaroquenMelody.Library.Store.Reducers;
using BaroquenMelody.Library.Store.State;
using FluentAssertions;
using NUnit.Framework;

namespace BaroquenMelody.Library.Tests.Store.Reducers;

[TestFixture]
internal sealed class SavedCompositionConfigurationReducersTests
{
[Test]
public void ReduceUpdateLastLoadedConfigurationName_with_empty_state_updates_name()
{
// arrange
var state = new SavedCompositionConfigurationState();
var action = new UpdateLastLoadedConfigurationName("NewLastLoadedConfigurationName");

// act
var newState = SavedCompositionConfigurationReducers.ReduceUpdateLastLoadedConfigurationName(state, action);

// assert
newState.LastLoadedConfigurationName.Should().Be("NewLastLoadedConfigurationName");
}

[Test]
public void ReduceUpdateLastLoadedConfigurationName_with_existing_state_updates_name()
{
// arrange
var state = new SavedCompositionConfigurationState("LastLoadedConfigurationName");
var action = new UpdateLastLoadedConfigurationName("NewLastLoadedConfigurationName");

// act
var newState = SavedCompositionConfigurationReducers.ReduceUpdateLastLoadedConfigurationName(state, action);

// assert
newState.LastLoadedConfigurationName.Should().Be("NewLastLoadedConfigurationName");
}
}

0 comments on commit 4ed422f

Please sign in to comment.