Fluxor

Fluxor is a zero boilerplate Flux/Redux library for Microsoft .NET and Blazor.

MIT License

Stars
1.3K
Committers
29

Bot releases are hidden (Show)

Fluxor - 6.1

Published by mrpmorris about 1 month ago

  • Allow relative URLs in routing middleware (#497)
  • Support JsonOptions and double.Nan serialization in Redux Dev Tools (#503)
Fluxor - 6.0

Published by mrpmorris 5 months ago

  • Breaking change: Remove support for obsolete versions of .NET framework (#384)
  • Breaking change: Replace IDisposable with IAsyncDisposable in Blazor components (#324)
  • Breaking change: UseReduxDevTools no longer ensures UseRouting is called (#360)
  • Breaking change: UseReduxDevTools no longer requires Newtonsoft.Json (#386)
  • Support Action Filtering in Redux Dev Tools (#383)
  • Do not consider anchor (Uri.Fragment) when checking Uri for changes in routing middleware (#455)
  • Resolve bug where StoreInitializer could cause DisposableCallback to throw an exception (#491)
Fluxor - 6.0-Beta2 Latest Release

Published by mrpmorris 7 months ago

  • Breaking change: Remove support for obsolete versions of .NET framework (#384)
  • Breaking change: Replace IDisposable with IAsyncDisposable in Blazor components (#324)
  • Breaking change: UseReduxDevTools no longer ensures UseRouting is called (#360)
  • Breaking change: UseReduxDevTools no longer requires Newtonsoft.Json (#386)
  • Support Action Filtering in Redux Dev Tools (#383)
  • Do not consider anchor (Uri.Fragment) when checking Uri for changes in routing middleware (#455)
Fluxor - 6.0-Beta1

Published by mrpmorris 7 months ago

Fluxor - 5.9

Published by mrpmorris over 1 year ago

  • Adds additional useful information to exception thrown by DisposableAction (#425)
  • Fix deadlock scenario when dispatching actions from an effect triggered by store activation (#426)
Fluxor - 5.8

Published by mrpmorris over 1 year ago

  • Fixes potential for deadlock (#407)
Fluxor - 5.7

Published by mrpmorris almost 2 years ago

  • Fixes memory leak when using ActionSubscriber or SubscribeToAction (#378)
Fluxor - 5.6

Published by mrpmorris almost 2 years ago

New in 5.6

  • Support .NET 7
  • Ensure StateSelection unsubscribes properly (#353)
Fluxor - 5.5

Published by mrpmorris about 2 years ago

  • DisposableCallback includes Caller info when throwing an exception (#320)
  • Ensured initialising the store does not overwrite manually set state (#347)
Fluxor - 5.4

Published by mrpmorris over 2 years ago

  • ActionSubscribers are now notified after state has been reduced (#299)
  • Routing middleware will no longer dispatch a GoAction when URl is the same value but formatted differently (#297)
  • IDispatcher now queues actions whenever there are no subscribers to the ActionDispatched event and then dequeues them when a subscriber is added (#301)
Fluxor - 5.3

Published by mrpmorris over 2 years ago

  • New method EnableStackTrace on ReduxDevToolsMiddlewareOptions to enable passing stack trace to the browser plugin #262
  • ActionSubscriber demo
  • Add LifeCycle to FluxorOptions and use in registration #287
Fluxor - 5.1

Published by mrpmorris over 2 years ago

  • Fixed IStateSelection<TState, TValue> bug that threw exception stating the selector has
    already been set. (#252)
  • Added an optional Action<TValue> selectedValueChanged to IStateSelection<TState, TValue>.Select
    that is executed whenever the selected value changes. This is a convenient alternative to hooking up event handlers.
  • Added event EventHandler<TValue> SelectedValueChanged to IStateSelection<TState, TValue> for strongly
    typed event args when the selected value changes.
  • Changed to avoid .net memory leak in dependency injection (#271)
Fluxor - 5.0.0

Published by mrpmorris almost 3 years ago

  • Separated IDispatcher out of IStore. (#209)
  • Added IState alternative IStateSelector<TState, TValue> for selecting and subscribing to subsets of state. (#221)
  • Made actions that are a generic type human readable in ReduxDevTools. (#205)

Breaking changes

  • Removed need to reference _content/Fluxor.Blazor.Web/scripts/index.js (#235)
  • Removed IState generic StateChanged event.
Fluxor - 4.2.1

Published by mrpmorris almost 3 years ago

  • Support .NET 6.0
Fluxor - 4.2

Published by mrpmorris almost 3 years ago

  • New [FeatureState] attribute to avoid having to create Feature<T> descendant classes. (#204)
  • Add FluxorOptions.ScanTypes to allow scanning of specified classes. (#214)
  • Make FluxorComponent and FluxorLayout abstract. (#217)
  • Add ForceLoad property to GoAction. (#178)
  • Only call Dispose(bool disposing) if not already exposed. (#222)
Fluxor - 4.1

Published by mrpmorris over 3 years ago

  • JSOS serialization control #168
Fluxor - 4.0

Published by mrpmorris over 3 years ago

  • Make Effect.HandleAsync public #161
  • Add Redux Dev Tools docs #156
  • Support ReduxDevTools options #149
Fluxor - Support .NET 5.0

Published by mrpmorris almost 4 years ago

Fluxor - 3.8

Published by mrpmorris almost 4 years ago

  • Allow state notification throttling to reduce time spent rendering (#114) - see:
    • FluxorComponent.MaximumStateChangedNotificationsPerSecond
    • FluxorLayout.MaximumStateChangedNotificationsPerSecond
    • Feature.MaximumStateChangedNotificationsPerSecond
  • Fix for (#105) - Allow FluxorComponent descendents to dispatch actions when overriding Dispose(bool).
  • Added an optional actionType to [EffectMethod] to avoid compiler warnings when the action is not used
public class SomeEffects
{
  [EffectMethod(typeof(RefreshDataAction))]
  public Task CallItWhateverYouLike(IDispatcher dispatcher)
  {
    ... code here ...
  }

  // is equivalent to

  [EffectMethod]
  public Task CallItWhateverYouLike(RefreshDataAction unusedParameter, IDispatcher dispatcher)
  {
    ... code here ...
  }
}
  • Added an optional actionType to [ReducerMethod] to avoid compiler warnings when the action is not used
public class SomeReducers
{
  [ReducerMethod(typeof(IncrementCounterAction))]
  public MyState CallItWhateverYouLike(MyState state) =>
    new MyState(state.Count + 1);

  // is equivalent to

  [ReducerMethod]
  public MyState CallItWhateverYouLike(MyState state, IncrementCounterAction unusedParameter) =>
    new MyState(state.Count + 1);
}
  • Added support for declaring [ReducerMethod] on generic classes
public class TestIntReducer: AbstractGenericStateReducers<int>
{
}

public class TestStringReducer: AbstractGenericStateReducers<string>
{
}

public abstract class AbstractGenericStateReducers<T>
	where T : IEquatable<T>
{
	[ReducerMethod]
	public static TestState<T> ReduceRemoveItemAction(TestState<T> state, RemoveItemAction<T> action) =>
		new TestState<T>(state.Items.Where(x => !x.Equals(action.Item)).ToArray());
}
  • Added support for declaring [EffectMethod] on generic classes
public class GenericEffectClassForMyAction : AbstractGenericEffectClass<MyAction>
{
	public GenericEffectClassForMyAction(SomeService someService) : base(someService)
	{
	}
}

public class GenericEffectClassForAnotherAction : AbstractGenericEffectClass<AnotherAction>
{
	public GenericEffectClassForAnotherAction(SomeService someService) : base(someService)
	{
	}
}

public abstract class AbstractGenericEffectClass<T> 
{
	private readonly ISomeService SomeService;

	protected AbstractGenericEffectClass(ISomeService someService)
	{
		SomeService = someService;
	}

	[EffectMethod]
	public Task HandleTheActionAsync(T action, IDispatcher dispatcher)
	{
		return SomeService.DoSomethingAsync(action);
	}
}
Fluxor - 3.7

Published by mrpmorris about 4 years ago

  • Fix for #84 - Allow observer to unsubscribe from all subscriptions whilst executing the callback from a previous subscription
  • Fix for #82 - Throw an informative exception when FluxorComponent or FluxorLayout has been inherited and the descendant doesn't call base.OnInitialized().
  • Fix for #87 - Exception thrown initialising store in .NET 5.
  • Include ActionSubscriber tutorial in solution