DynamicData icon indicating copy to clipboard operation
DynamicData copied to clipboard

[Feature]: TransformOnRefresh parameter for TransformAsync()

Open oysteinkrog opened this issue 3 years ago • 2 comments

Describe the functionality desired 🐞

The Transform() method has a transformOnRefresh parameter that is very handy. It would be nice to have the same parameter available for TransformAsync()

The steps the functionality will provide

You can call TransformAsync(.., transformOnRefresh: true). My scenario is that I am using FilterOnObservable(..).TransformAsync(), and I want the transform to be re-applied when the filtered items change.

Considerations

I have created a RewriteRefreshToAddRemove() extension method, but it is not as elegant as simply having the transformOnRefresh parameter.

oysteinkrog avatar Jul 20 '22 09:07 oysteinkrog

Mind providing a comment to your RewriteRefreshToAddRemove() extension method code to assist?

glennawatson avatar Jul 20 '22 09:07 glennawatson

@glennawatson Sure, it's a fairly naive piece of code though:

       public static IObservable<IChangeSet<T>> RewriteRefreshToAddRemove<T>(this IObservable<IChangeSet<T>> changSetObs)
        {
            return changSetObs.Select(v =>
            {
                var changes = new List<Change<T>>();

                foreach (Change<T> change in v)
                {
                    if (change.Reason == ListChangeReason.Refresh)
                    {
                        changes.Add(new Change<T>(ListChangeReason.Remove, change.Item.Current));
                        changes.Add(new Change<T>(ListChangeReason.Add, change.Item.Current));
                    }
                    else
                    {
                        changes.Add(v);
                    }
                }

                return new ChangeSet<T>(changes);
            });
        }
    }

oysteinkrog avatar Aug 01 '22 14:08 oysteinkrog

Fixed by #625

oysteinkrog avatar Aug 19 '22 07:08 oysteinkrog

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

github-actions[bot] avatar Sep 03 '22 01:09 github-actions[bot]