From 749714bab59daf6f116eb2d623f3a6f48f2119d1 Mon Sep 17 00:00:00 2001 From: le-nn Date: Mon, 19 Feb 2024 14:40:06 +0900 Subject: [PATCH] Fix broken links and fix warnings --- README.md | 8 ++++---- docs/Assets/Architecture.jpg | Bin 0 -> 80211 bytes docs/BasicConcept.md | 2 +- docs/README.md | 8 ++++---- .../Memento.Sample.Blazor/Shared/NavMenu.razor | 2 +- src/Memento.Blazor/ObserverComponent.cs | 3 ++- src/Memento.Blazor/StateSubscriber.cs | 8 ++++---- src/Memento.Core/AbstractStore.cs | 13 ------------- src/Memento.Core/MementoStore.cs | 2 +- src/Memento.Core/StateChangedEventArgs.cs | 5 ----- .../ReduxDevToolMiddlewareHandler.cs | 2 +- .../Core/Mock/FluxAsyncCounterStore.cs | 2 +- 12 files changed, 19 insertions(+), 36 deletions(-) create mode 100644 docs/Assets/Architecture.jpg diff --git a/README.md b/README.md index 3b3fccf..278c931 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,10 @@ If you have ReduxDevTool installed, DevTool will launch automatically. You can do state history and time travel. +# Documentation + +https://le-nn.github.io/memento/docs/README.html + ## React or TS/JS bindings Currently, moved to here @@ -166,10 +170,6 @@ Blazor view in Razor ``` -# Documentation - -[See](./docs/README.md) - # License Designed with ♥ by le-nn. Licensed under the MIT License. diff --git a/docs/Assets/Architecture.jpg b/docs/Assets/Architecture.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a17b6113a7a57c02a2b62cec7de645c235b9f181 GIT binary patch literal 80211 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[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 diff --git a/src/Memento.Blazor/ObserverComponent.cs b/src/Memento.Blazor/ObserverComponent.cs index d6391f3..d46ee80 100644 --- a/src/Memento.Blazor/ObserverComponent.cs +++ b/src/Memento.Blazor/ObserverComponent.cs @@ -1,4 +1,5 @@ using Memento.Core.Executors; +using Memento.Core; using Microsoft.AspNetCore.Components; using System.Collections.Concurrent; @@ -6,7 +7,7 @@ namespace Memento.Blazor; /// /// The base class for components that observe state changes in a store. -/// Injected stores that implement the interface will all be subscribed to state change events +/// Injected stores that implement the interface will all be subscribed to state change events /// and automatically call . /// public class ObserverComponent : ComponentBase, IDisposable { diff --git a/src/Memento.Blazor/StateSubscriber.cs b/src/Memento.Blazor/StateSubscriber.cs index 6f40b2e..5a06a27 100644 --- a/src/Memento.Blazor/StateSubscriber.cs +++ b/src/Memento.Blazor/StateSubscriber.cs @@ -16,12 +16,12 @@ public static class StateSubscriber { private static readonly ConcurrentDictionary> _valueDelegatesByType = new(); /// - /// Subscribes to all properties on the specified + /// Subscribes to all properties on the specified /// to ensure is called whenever a state is modified /// - /// The object to scan for properties. + /// The object to scan for properties. /// The action to execute when one of the states are modified - /// + /// An object representing the subscription. Dispose this object to unsubscribe. public static IDisposable Subscribe(object subject, Action callback) { _ = subject ?? throw new ArgumentNullException(nameof(subject)); _ = callback ?? throw new ArgumentNullException(nameof(callback)); @@ -60,4 +60,4 @@ from currentProperty in GetStateChangedNotifierProperties(type) x => (TStateObservable)stronglyTypedDelegate.DynamicInvoke(x)! ) ); -} \ No newline at end of file +} diff --git a/src/Memento.Core/AbstractStore.cs b/src/Memento.Core/AbstractStore.cs index 0dadd1b..3244419 100644 --- a/src/Memento.Core/AbstractStore.cs +++ b/src/Memento.Core/AbstractStore.cs @@ -71,15 +71,6 @@ public void Dispose() { OnDisposed(); } - /// - /// Handles disposable resources of the store. - /// - /// An enumerable of disposable resources. - [Obsolete] - protected virtual IEnumerable OnHandleDisposable() { - return []; - } - /// /// Subscribes to the store with the provided observer. /// @@ -255,10 +246,6 @@ protected void AddDisposable(IEnumerable disposable) { async ValueTask IStore.InitializeAsync(StoreProvider provider) { _provider = provider; - foreach (var item in OnHandleDisposable()) { - _disposables.Add(item); - } - try { await OnInitializedAsync(); } diff --git a/src/Memento.Core/MementoStore.cs b/src/Memento.Core/MementoStore.cs index d08c002..e4611b9 100644 --- a/src/Memento.Core/MementoStore.cs +++ b/src/Memento.Core/MementoStore.cs @@ -15,7 +15,7 @@ HistoryManager historyManager /// The current state. /// The StateHasChanged command to apply. /// The new state after applying the command. - static TState Reducer(TState state, TMessage message) { + static TState Reducer(TState state, TMessage? message) { return state; } diff --git a/src/Memento.Core/StateChangedEventArgs.cs b/src/Memento.Core/StateChangedEventArgs.cs index 259e3ac..2cb87ac 100644 --- a/src/Memento.Core/StateChangedEventArgs.cs +++ b/src/Memento.Core/StateChangedEventArgs.cs @@ -58,11 +58,6 @@ public record StateChangedEventArgs : IStateChangedEventArgs { public interface IStateChangedEventArgs : IStateChangedEventArgs where TState : class where TMessage : notnull { - /// - /// Gets the type of the state change. - /// - StateChangeType StateChangeType { get; } - /// /// Gets the last state before the change. /// diff --git a/src/Memento.ReduxDevTool/ReduxDevToolMiddlewareHandler.cs b/src/Memento.ReduxDevTool/ReduxDevToolMiddlewareHandler.cs index a292cfa..e3e8be4 100644 --- a/src/Memento.ReduxDevTool/ReduxDevToolMiddlewareHandler.cs +++ b/src/Memento.ReduxDevTool/ReduxDevToolMiddlewareHandler.cs @@ -51,7 +51,7 @@ public ReduxDevToolMiddlewareHandler(IDevToolInteropHandler devtoolInteropHandle }); } - public override object? HandleStoreDispatch(object? state, object command, NextStoreMiddlewareCallback next) { + public override object? HandleStoreDispatch(object? state, object? command, NextStoreMiddlewareCallback next) { if (_liftedStore.IsJumping) { return next(null, command); } diff --git a/test/Memento.Test/Core/Mock/FluxAsyncCounterStore.cs b/test/Memento.Test/Core/Mock/FluxAsyncCounterStore.cs index e2558f2..d203aec 100644 --- a/test/Memento.Test/Core/Mock/FluxAsyncCounterStore.cs +++ b/test/Memento.Test/Core/Mock/FluxAsyncCounterStore.cs @@ -29,7 +29,7 @@ public class FluxAsyncCounterStore : FluxStore state with { IsLoading = true