From 2995b198576989de1953bb158262a6c1f0af5655 Mon Sep 17 00:00:00 2001 From: Eric Busch Date: Thu, 7 Dec 2023 17:03:23 -0600 Subject: [PATCH 01/14] Allow a Parent Coordinator to finish its children --- Float.Core/UX/CoordinatorParent.cs | 19 +++++++++++++++++++ Float.Core/UX/ICoordinatorParent.cs | 8 ++++++++ 2 files changed, 27 insertions(+) diff --git a/Float.Core/UX/CoordinatorParent.cs b/Float.Core/UX/CoordinatorParent.cs index 0fa9386..9201371 100644 --- a/Float.Core/UX/CoordinatorParent.cs +++ b/Float.Core/UX/CoordinatorParent.cs @@ -15,6 +15,11 @@ public abstract class CoordinatorParent : Coordinator, ICoordinatorParent /// readonly List childCoordinators = new (); + /// + /// The event args that have been used as we are waiting to finish all the children before closing the parent. + /// + EventArgs waitingToFinishEventArgs = null; + /// /// Gets a value indicating whether this has children. /// @@ -98,6 +103,14 @@ public virtual void RemoveChild(ICoordinator coordinator) } } + /// + public virtual void FinishFamily(EventArgs args) + { + waitingToFinishEventArgs = args; + NavigationContext?.DismissPageAsync(false); + NavigationContext?.Reset(false); + } + /// /// Use to determine if this coordinator already contains a certain type of child coordinator. /// @@ -149,6 +162,12 @@ protected virtual void HandleChildFinish(object sender, EventArgs args) { RemoveChild(child); } + + if (!HasChildren && waitingToFinishEventArgs != null) + { + Finish(waitingToFinishEventArgs); + waitingToFinishEventArgs = null; + } } } } diff --git a/Float.Core/UX/ICoordinatorParent.cs b/Float.Core/UX/ICoordinatorParent.cs index 7170ebd..17322d0 100644 --- a/Float.Core/UX/ICoordinatorParent.cs +++ b/Float.Core/UX/ICoordinatorParent.cs @@ -1,3 +1,5 @@ +using System; + namespace Float.Core.UX { /// @@ -16,5 +18,11 @@ public interface ICoordinatorParent /// /// The coordinator to remove. void RemoveChild(ICoordinator coordinator); + + /// + /// Ensures all the children can properly finish before the parent finishes. + /// + /// The event args. + void FinishFamily(EventArgs args); } } From 1aef92bc3a5c1200df1bdaa7de08fc53e1ab3311 Mon Sep 17 00:00:00 2001 From: Eric Busch Date: Tue, 12 Dec 2023 17:08:09 -0600 Subject: [PATCH 02/14] Added a RequestFinish method --- Float.Core/UX/Coordinator.cs | 34 +++++++++++++++++++++++++++ Float.Core/UX/CoordinatorParent.cs | 36 ++++++++++++++++++++++------- Float.Core/UX/ICoordinator.cs | 8 +++++++ Float.Core/UX/ICoordinatorParent.cs | 7 +----- 4 files changed, 71 insertions(+), 14 deletions(-) diff --git a/Float.Core/UX/Coordinator.cs b/Float.Core/UX/Coordinator.cs index c0a579a..644c09e 100644 --- a/Float.Core/UX/Coordinator.cs +++ b/Float.Core/UX/Coordinator.cs @@ -26,6 +26,11 @@ public abstract class Coordinator : ICoordinator /// Page managedPage; + /// + /// The event args that are pending a finish. + /// + EventArgs waitingToFinishEventArgs; + /// /// Occurs when this coordinator is started. /// @@ -93,6 +98,35 @@ public virtual void Start() isStarted = true; } + /// + public Task RequestFinish(EventArgs args) + { + return Task.FromResult(HandleFinishRequested(this, args)); + } + + /// + /// Handles when a finish is requested. + /// + /// The coordinator that has requested this coordinator to finish. + /// The event args. + /// A value indicating whether this finished. + public virtual bool HandleFinishRequested(ICoordinator coordinator, EventArgs eventArgs) + { + if (this == coordinator) + { + if (managedPage == null) + { + Finish(eventArgs); + return true; + } + + waitingToFinishEventArgs = eventArgs; + NavigationContext.Reset(false); + } + + return false; + } + /// /// Returning a page here will allow the coordinator to automatically /// manage itself based on the state of the UI. diff --git a/Float.Core/UX/CoordinatorParent.cs b/Float.Core/UX/CoordinatorParent.cs index 9201371..579e281 100644 --- a/Float.Core/UX/CoordinatorParent.cs +++ b/Float.Core/UX/CoordinatorParent.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading.Tasks; using Float.Core.Extensions; namespace Float.Core.UX @@ -103,14 +104,6 @@ public virtual void RemoveChild(ICoordinator coordinator) } } - /// - public virtual void FinishFamily(EventArgs args) - { - waitingToFinishEventArgs = args; - NavigationContext?.DismissPageAsync(false); - NavigationContext?.Reset(false); - } - /// /// Use to determine if this coordinator already contains a certain type of child coordinator. /// @@ -130,6 +123,33 @@ public override string ToString() return $"[{GetType()}, Children: {string.Join(",", childCoordinators)}]"; } + /// + /// Handles the finish request. + /// + /// The calling coordinator. + /// The event args. + /// A value indicating whether this finished. + public override bool HandleFinishRequested(ICoordinator coordinator, EventArgs eventArgs) + { + var didFinish = true; + + waitingToFinishEventArgs = eventArgs; + + foreach (var eachChild in ChildCoordinators) + { + if (eachChild is Coordinator childCoordinator) + { + var finished = childCoordinator.HandleFinishRequested(childCoordinator, eventArgs); + if (!finished) + { + didFinish = false; + } + } + } + + return didFinish; + } + /// protected override void Finish(EventArgs args) { diff --git a/Float.Core/UX/ICoordinator.cs b/Float.Core/UX/ICoordinator.cs index c1cb38c..bd9bf5f 100644 --- a/Float.Core/UX/ICoordinator.cs +++ b/Float.Core/UX/ICoordinator.cs @@ -1,4 +1,5 @@ using System; +using System.Threading.Tasks; namespace Float.Core.UX { @@ -23,5 +24,12 @@ public interface ICoordinator /// /// The navigation context for this coordinator. void Start(INavigationContext navigationContext); + + /// + /// Requests that a coordinator will finish. + /// + /// The event args. + /// A task, with a boolean indicating whether this did finish. + Task RequestFinish(EventArgs eventArgs); } } diff --git a/Float.Core/UX/ICoordinatorParent.cs b/Float.Core/UX/ICoordinatorParent.cs index 17322d0..3379eee 100644 --- a/Float.Core/UX/ICoordinatorParent.cs +++ b/Float.Core/UX/ICoordinatorParent.cs @@ -1,4 +1,5 @@ using System; +using System.Threading.Tasks; namespace Float.Core.UX { @@ -18,11 +19,5 @@ public interface ICoordinatorParent /// /// The coordinator to remove. void RemoveChild(ICoordinator coordinator); - - /// - /// Ensures all the children can properly finish before the parent finishes. - /// - /// The event args. - void FinishFamily(EventArgs args); } } From 1281eebb4eedfc1334a3a8bcf5a13a5bf52a74e5 Mon Sep 17 00:00:00 2001 From: Eric Busch Date: Thu, 14 Dec 2023 16:42:43 -0600 Subject: [PATCH 03/14] Adjustments from comments --- Float.Core/UX/Coordinator.cs | 12 +++++++----- Float.Core/UX/CoordinatorParent.cs | 23 +++++++++++++++-------- Float.Core/UX/ICoordinator.cs | 29 +++++++++++++++++++++++++++-- Float.Core/UX/ICoordinatorParent.cs | 3 --- 4 files changed, 49 insertions(+), 18 deletions(-) diff --git a/Float.Core/UX/Coordinator.cs b/Float.Core/UX/Coordinator.cs index 644c09e..938a41e 100644 --- a/Float.Core/UX/Coordinator.cs +++ b/Float.Core/UX/Coordinator.cs @@ -1,6 +1,7 @@ using System; using System.Threading.Tasks; using Xamarin.Forms; +using static Float.Core.UX.ICoordinator; namespace Float.Core.UX { @@ -99,9 +100,9 @@ public virtual void Start() } /// - public Task RequestFinish(EventArgs args) + public CoordinatorRequestFinishStatus RequestFinish(EventArgs args) { - return Task.FromResult(HandleFinishRequested(this, args)); + return HandleFinishRequested(this, args); } /// @@ -110,21 +111,22 @@ public Task RequestFinish(EventArgs args) /// The coordinator that has requested this coordinator to finish. /// The event args. /// A value indicating whether this finished. - public virtual bool HandleFinishRequested(ICoordinator coordinator, EventArgs eventArgs) + public virtual CoordinatorRequestFinishStatus HandleFinishRequested(ICoordinator coordinator, EventArgs eventArgs) { if (this == coordinator) { if (managedPage == null) { Finish(eventArgs); - return true; + return CoordinatorRequestFinishStatus.FinishedImmediately; } waitingToFinishEventArgs = eventArgs; NavigationContext.Reset(false); + return CoordinatorRequestFinishStatus.PendingFinish; } - return false; + return CoordinatorRequestFinishStatus.Unknown; } /// diff --git a/Float.Core/UX/CoordinatorParent.cs b/Float.Core/UX/CoordinatorParent.cs index 579e281..86b1a33 100644 --- a/Float.Core/UX/CoordinatorParent.cs +++ b/Float.Core/UX/CoordinatorParent.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -using System.Threading.Tasks; using Float.Core.Extensions; +using static Float.Core.UX.ICoordinator; namespace Float.Core.UX { @@ -129,25 +129,32 @@ public override string ToString() /// The calling coordinator. /// The event args. /// A value indicating whether this finished. - public override bool HandleFinishRequested(ICoordinator coordinator, EventArgs eventArgs) + public override CoordinatorRequestFinishStatus HandleFinishRequested(ICoordinator coordinator, EventArgs eventArgs) { - var didFinish = true; - waitingToFinishEventArgs = eventArgs; + CoordinatorRequestFinishStatus? status = null; + foreach (var eachChild in ChildCoordinators) { if (eachChild is Coordinator childCoordinator) { - var finished = childCoordinator.HandleFinishRequested(childCoordinator, eventArgs); - if (!finished) + var freshStatus = childCoordinator.HandleFinishRequested(childCoordinator, eventArgs); + + if (status == null) + { + status = freshStatus; + } + + // If every child finishes with the same status we can return that, otherwise unknown seems to be the best option. + if (freshStatus != status) { - didFinish = false; + status = CoordinatorRequestFinishStatus.Unknown; } } } - return didFinish; + return status ?? CoordinatorRequestFinishStatus.Unknown; } /// diff --git a/Float.Core/UX/ICoordinator.cs b/Float.Core/UX/ICoordinator.cs index bd9bf5f..825e88f 100644 --- a/Float.Core/UX/ICoordinator.cs +++ b/Float.Core/UX/ICoordinator.cs @@ -1,5 +1,4 @@ using System; -using System.Threading.Tasks; namespace Float.Core.UX { @@ -19,6 +18,32 @@ public interface ICoordinator /// event EventHandler Finished; + /// + /// An enum for the possible results of a coordinator's RequestFinish. + /// + public enum CoordinatorRequestFinishStatus + { + /// + /// The coordinator RequestFinish finished immediately. + /// + FinishedImmediately, + + /// + /// The coordinator RequestFinish is pending a finish. + /// + PendingFinish, + + /// + /// The coordinator RequestFinish will not complete. + /// + WillNotFinish, + + /// + /// The coordinator RequestFinish's status is unknown. + /// + Unknown, + } + /// /// Implementing classes should use this to start this coordinator. /// @@ -30,6 +55,6 @@ public interface ICoordinator /// /// The event args. /// A task, with a boolean indicating whether this did finish. - Task RequestFinish(EventArgs eventArgs); + CoordinatorRequestFinishStatus RequestFinish(EventArgs eventArgs); } } diff --git a/Float.Core/UX/ICoordinatorParent.cs b/Float.Core/UX/ICoordinatorParent.cs index 3379eee..7170ebd 100644 --- a/Float.Core/UX/ICoordinatorParent.cs +++ b/Float.Core/UX/ICoordinatorParent.cs @@ -1,6 +1,3 @@ -using System; -using System.Threading.Tasks; - namespace Float.Core.UX { /// From 9f5390f0545e94c53c5d52d4ddf90ba0f45a7517 Mon Sep 17 00:00:00 2001 From: Eric Busch Date: Fri, 15 Dec 2023 11:30:35 -0600 Subject: [PATCH 04/14] Few changes --- Float.Core/UX/Coordinator.cs | 33 ++++++++++++++++-------------- Float.Core/UX/CoordinatorParent.cs | 24 +++++++--------------- 2 files changed, 25 insertions(+), 32 deletions(-) diff --git a/Float.Core/UX/Coordinator.cs b/Float.Core/UX/Coordinator.cs index 938a41e..1c9a0f8 100644 --- a/Float.Core/UX/Coordinator.cs +++ b/Float.Core/UX/Coordinator.cs @@ -27,11 +27,6 @@ public abstract class Coordinator : ICoordinator /// Page managedPage; - /// - /// The event args that are pending a finish. - /// - EventArgs waitingToFinishEventArgs; - /// /// Occurs when this coordinator is started. /// @@ -60,6 +55,14 @@ public abstract class Coordinator : ICoordinator /// true if is finished; otherwise, false. protected bool IsFinished => isFinished; + /// + /// Gets or sets the event args that are pending a finish. + /// + /// + /// The event args that are pending a finish. + /// + protected EventArgs WaitingToFinishEventArgs { get; set; } + /// public virtual void Start(INavigationContext context) { @@ -121,12 +124,12 @@ public virtual CoordinatorRequestFinishStatus HandleFinishRequested(ICoordinator return CoordinatorRequestFinishStatus.FinishedImmediately; } - waitingToFinishEventArgs = eventArgs; + WaitingToFinishEventArgs = eventArgs; NavigationContext.Reset(false); return CoordinatorRequestFinishStatus.PendingFinish; } - return CoordinatorRequestFinishStatus.Unknown; + return CoordinatorRequestFinishStatus.WillNotFinish; } /// @@ -162,6 +165,7 @@ protected virtual void Finish(EventArgs args) } managedPage = null; + WaitingToFinishEventArgs = null; if (NavigationContext != null) { @@ -239,17 +243,16 @@ void HandleNavigation(object sender, NavigationEventArgs args) switch (args.Type) { case NavigationEventArgs.NavigationType.Popped: + case NavigationEventArgs.NavigationType.Reset: if (args.Page == managedPage && !IsFinished) { - Finish(EventArgs.Empty); - } + if (WaitingToFinishEventArgs == null) + { + Finish(EventArgs.Empty); + return; + } - break; - - case NavigationEventArgs.NavigationType.Reset: - if (args.Page != managedPage && !IsFinished) - { - Finish(EventArgs.Empty); + Finish(WaitingToFinishEventArgs); } break; diff --git a/Float.Core/UX/CoordinatorParent.cs b/Float.Core/UX/CoordinatorParent.cs index 86b1a33..57ba577 100644 --- a/Float.Core/UX/CoordinatorParent.cs +++ b/Float.Core/UX/CoordinatorParent.cs @@ -16,11 +16,6 @@ public abstract class CoordinatorParent : Coordinator, ICoordinatorParent /// readonly List childCoordinators = new (); - /// - /// The event args that have been used as we are waiting to finish all the children before closing the parent. - /// - EventArgs waitingToFinishEventArgs = null; - /// /// Gets a value indicating whether this has children. /// @@ -123,15 +118,10 @@ public override string ToString() return $"[{GetType()}, Children: {string.Join(",", childCoordinators)}]"; } - /// - /// Handles the finish request. - /// - /// The calling coordinator. - /// The event args. - /// A value indicating whether this finished. + /// public override CoordinatorRequestFinishStatus HandleFinishRequested(ICoordinator coordinator, EventArgs eventArgs) { - waitingToFinishEventArgs = eventArgs; + WaitingToFinishEventArgs = eventArgs; CoordinatorRequestFinishStatus? status = null; @@ -139,7 +129,7 @@ public override CoordinatorRequestFinishStatus HandleFinishRequested(ICoordinato { if (eachChild is Coordinator childCoordinator) { - var freshStatus = childCoordinator.HandleFinishRequested(childCoordinator, eventArgs); + var freshStatus = childCoordinator.HandleFinishRequested(this, eventArgs); if (status == null) { @@ -154,7 +144,7 @@ public override CoordinatorRequestFinishStatus HandleFinishRequested(ICoordinato } } - return status ?? CoordinatorRequestFinishStatus.Unknown; + return status ?? base.HandleFinishRequested(coordinator, eventArgs); } /// @@ -190,10 +180,10 @@ protected virtual void HandleChildFinish(object sender, EventArgs args) RemoveChild(child); } - if (!HasChildren && waitingToFinishEventArgs != null) + if (!HasChildren && WaitingToFinishEventArgs != null) { - Finish(waitingToFinishEventArgs); - waitingToFinishEventArgs = null; + Finish(WaitingToFinishEventArgs); + WaitingToFinishEventArgs = null; } } } From cabe1022d07b6ec56ab5bcf023b823c269bfcaf4 Mon Sep 17 00:00:00 2001 From: Eric Busch Date: Fri, 5 Jan 2024 07:48:44 -0600 Subject: [PATCH 05/14] More changes for temporary safe keeping --- Float.Core/Float.Core.csproj | 1 - Float.Core/UX/Coordinator.cs | 16 ++++++++++++++-- Float.Core/UX/CoordinatorParent.cs | 19 +++---------------- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/Float.Core/Float.Core.csproj b/Float.Core/Float.Core.csproj index ec13c4a..448288f 100644 --- a/Float.Core/Float.Core.csproj +++ b/Float.Core/Float.Core.csproj @@ -11,7 +11,6 @@ $(AssemblyName) false 9.0 - 1.0.0 true diff --git a/Float.Core/UX/Coordinator.cs b/Float.Core/UX/Coordinator.cs index 5e691d9..e8a63bc 100644 --- a/Float.Core/UX/Coordinator.cs +++ b/Float.Core/UX/Coordinator.cs @@ -119,7 +119,7 @@ public CoordinatorRequestFinishStatus RequestFinish(EventArgs args) /// The coordinator that has requested this coordinator to finish. /// The event args. /// A value indicating whether this finished. - public virtual CoordinatorRequestFinishStatus HandleFinishRequested(ICoordinator coordinator, EventArgs eventArgs) + protected virtual CoordinatorRequestFinishStatus HandleFinishRequested(ICoordinator coordinator, EventArgs eventArgs) { if (this == coordinator) { @@ -248,7 +248,6 @@ void HandleNavigation(object sender, NavigationEventArgs args) switch (args.Type) { case NavigationEventArgs.NavigationType.Popped: - case NavigationEventArgs.NavigationType.Reset: if (args.Page == managedPage && !IsFinished) { if (WaitingToFinishEventArgs == null) @@ -260,6 +259,19 @@ void HandleNavigation(object sender, NavigationEventArgs args) Finish(WaitingToFinishEventArgs); } + break; + case NavigationEventArgs.NavigationType.Reset: + if (args.Page != managedPage && !IsFinished) + { + if (WaitingToFinishEventArgs == null) + { + Finish(EventArgs.Empty); + return; + } + + Finish(WaitingToFinishEventArgs); + } + break; } } diff --git a/Float.Core/UX/CoordinatorParent.cs b/Float.Core/UX/CoordinatorParent.cs index 57ba577..a152a84 100644 --- a/Float.Core/UX/CoordinatorParent.cs +++ b/Float.Core/UX/CoordinatorParent.cs @@ -119,32 +119,19 @@ public override string ToString() } /// - public override CoordinatorRequestFinishStatus HandleFinishRequested(ICoordinator coordinator, EventArgs eventArgs) + protected override CoordinatorRequestFinishStatus HandleFinishRequested(ICoordinator coordinator, EventArgs eventArgs) { WaitingToFinishEventArgs = eventArgs; - CoordinatorRequestFinishStatus? status = null; - foreach (var eachChild in ChildCoordinators) { if (eachChild is Coordinator childCoordinator) { - var freshStatus = childCoordinator.HandleFinishRequested(this, eventArgs); - - if (status == null) - { - status = freshStatus; - } - - // If every child finishes with the same status we can return that, otherwise unknown seems to be the best option. - if (freshStatus != status) - { - status = CoordinatorRequestFinishStatus.Unknown; - } + childCoordinator.HandleFinishRequested(this, eventArgs); } } - return status ?? base.HandleFinishRequested(coordinator, eventArgs); + return base.HandleFinishRequested(coordinator, eventArgs); } /// From dd684f9463cdd018e1eeb6f2a376e0898f5ecb4e Mon Sep 17 00:00:00 2001 From: Eric Busch Date: Fri, 5 Jan 2024 14:37:55 -0600 Subject: [PATCH 06/14] Request finish --- Float.Core/UX/CoordinatorParent.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Float.Core/UX/CoordinatorParent.cs b/Float.Core/UX/CoordinatorParent.cs index a152a84..cbb49fb 100644 --- a/Float.Core/UX/CoordinatorParent.cs +++ b/Float.Core/UX/CoordinatorParent.cs @@ -127,7 +127,7 @@ protected override CoordinatorRequestFinishStatus HandleFinishRequested(ICoordin { if (eachChild is Coordinator childCoordinator) { - childCoordinator.HandleFinishRequested(this, eventArgs); + childCoordinator.RequestFinish(eventArgs); } } From 016353e72290bb41e5bef6db038df6431e4af627 Mon Sep 17 00:00:00 2001 From: Eric Busch Date: Fri, 5 Jan 2024 17:01:26 -0600 Subject: [PATCH 07/14] Changes just to see --- Float.Core/Float.Core.csproj | 1 + Float.Core/UX/Coordinator.cs | 11 +++++------ Float.Core/UX/CoordinatorParent.cs | 3 +-- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/Float.Core/Float.Core.csproj b/Float.Core/Float.Core.csproj index 448288f..ec13c4a 100644 --- a/Float.Core/Float.Core.csproj +++ b/Float.Core/Float.Core.csproj @@ -11,6 +11,7 @@ $(AssemblyName) false 9.0 + 1.0.0 true diff --git a/Float.Core/UX/Coordinator.cs b/Float.Core/UX/Coordinator.cs index e8a63bc..a157755 100644 --- a/Float.Core/UX/Coordinator.cs +++ b/Float.Core/UX/Coordinator.cs @@ -1,6 +1,5 @@ using System; using System.Threading.Tasks; -using static Float.Core.UX.ICoordinator; #if NETSTANDARD using Xamarin.Forms; #else @@ -108,7 +107,7 @@ public virtual void Start() } /// - public CoordinatorRequestFinishStatus RequestFinish(EventArgs args) + public ICoordinator.CoordinatorRequestFinishStatus RequestFinish(EventArgs args) { return HandleFinishRequested(this, args); } @@ -119,22 +118,22 @@ public CoordinatorRequestFinishStatus RequestFinish(EventArgs args) /// The coordinator that has requested this coordinator to finish. /// The event args. /// A value indicating whether this finished. - protected virtual CoordinatorRequestFinishStatus HandleFinishRequested(ICoordinator coordinator, EventArgs eventArgs) + protected virtual ICoordinator.CoordinatorRequestFinishStatus HandleFinishRequested(ICoordinator coordinator, EventArgs eventArgs) { if (this == coordinator) { if (managedPage == null) { Finish(eventArgs); - return CoordinatorRequestFinishStatus.FinishedImmediately; + return ICoordinator.CoordinatorRequestFinishStatus.FinishedImmediately; } WaitingToFinishEventArgs = eventArgs; NavigationContext.Reset(false); - return CoordinatorRequestFinishStatus.PendingFinish; + return ICoordinator.CoordinatorRequestFinishStatus.PendingFinish; } - return CoordinatorRequestFinishStatus.WillNotFinish; + return ICoordinator.CoordinatorRequestFinishStatus.WillNotFinish; } /// diff --git a/Float.Core/UX/CoordinatorParent.cs b/Float.Core/UX/CoordinatorParent.cs index cbb49fb..b9955e1 100644 --- a/Float.Core/UX/CoordinatorParent.cs +++ b/Float.Core/UX/CoordinatorParent.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using Float.Core.Extensions; -using static Float.Core.UX.ICoordinator; namespace Float.Core.UX { @@ -119,7 +118,7 @@ public override string ToString() } /// - protected override CoordinatorRequestFinishStatus HandleFinishRequested(ICoordinator coordinator, EventArgs eventArgs) + protected override ICoordinator.CoordinatorRequestFinishStatus HandleFinishRequested(ICoordinator coordinator, EventArgs eventArgs) { WaitingToFinishEventArgs = eventArgs; From f8b84e0e1e314e0c5288ac1cb562a1df70b6d9dd Mon Sep 17 00:00:00 2001 From: Eric Busch Date: Mon, 15 Jan 2024 15:31:50 -0600 Subject: [PATCH 08/14] Part I Maybe --- .github/workflows/test.yml | 4 ++-- Float.Core.sln | 25 ++++++++++++++++++++----- Float.Core/Float.Core.csproj | 18 ++++++++++++++++++ 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4529991..1295ba7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,9 +22,9 @@ jobs: - name: Restore dependencies run: dotnet restore - name: Build - run: dotnet build --configuration Release --no-restore + run: dotnet build --configuration MAUI --no-restore -f net7.0 - name: Test - run: dotnet test --configuration Release --no-build --verbosity normal --logger:"trx;" + run: dotnet test --configuration MAUI --no-restore -f net7.0 --no-build --verbosity normal --logger:"trx;" - name: Publish Test Results uses: EnricoMi/publish-unit-test-result-action@v2 if: always() diff --git a/Float.Core.sln b/Float.Core.sln index 30db125..ed9e683 100644 --- a/Float.Core.sln +++ b/Float.Core.sln @@ -3,27 +3,42 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Float.Core", "Float.Core\Float.Core.csproj", "{0AF193E3-D9AF-4551-B853-177F15FDC639}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Float.Core.Tests", "Float.Core.Tests\Float.Core.Tests.csproj", "{CD4538B9-EBD5-4340-B44A-890DDCEFC31E}" +Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "Float.Core.Tests", "Float.Core.Tests\Float.Core.Tests.csproj", "{0302630F-9229-48C3-BF66-0A8E7384A3DF}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU + MAUI|Any CPU = MAUI|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {0AF193E3-D9AF-4551-B853-177F15FDC639}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0AF193E3-D9AF-4551-B853-177F15FDC639}.Debug|Any CPU.Build.0 = Debug|Any CPU {0AF193E3-D9AF-4551-B853-177F15FDC639}.Release|Any CPU.ActiveCfg = Release|Any CPU {0AF193E3-D9AF-4551-B853-177F15FDC639}.Release|Any CPU.Build.0 = Release|Any CPU - {CD4538B9-EBD5-4340-B44A-890DDCEFC31E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CD4538B9-EBD5-4340-B44A-890DDCEFC31E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CD4538B9-EBD5-4340-B44A-890DDCEFC31E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CD4538B9-EBD5-4340-B44A-890DDCEFC31E}.Release|Any CPU.Build.0 = Release|Any CPU + {0AF193E3-D9AF-4551-B853-177F15FDC639}.MAUI|Any CPU.ActiveCfg = MAUI|Any CPU + {0AF193E3-D9AF-4551-B853-177F15FDC639}.MAUI|Any CPU.Build.0 = MAUI|Any CPU + {0302630F-9229-48C3-BF66-0A8E7384A3DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0302630F-9229-48C3-BF66-0A8E7384A3DF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0302630F-9229-48C3-BF66-0A8E7384A3DF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0302630F-9229-48C3-BF66-0A8E7384A3DF}.Release|Any CPU.Build.0 = Release|Any CPU + {0302630F-9229-48C3-BF66-0A8E7384A3DF}.MAUI|Any CPU.ActiveCfg = MAUI|Any CPU EndGlobalSection GlobalSection(MonoDevelopProperties) = preSolution Policies = $0 $0.StandardHeader = $1 $1.IncludeInNewFiles = False $0.VersionControlPolicy = $2 + $0.DotNetNamingPolicy = $3 + $3.DirectoryNamespaceAssociation = PrefixedHierarchical + $0.TextStylePolicy = $4 + $4.inheritsSet = null + $4.scope = text/x-csharp + $0.CSharpFormattingPolicy = $5 + $5.scope = text/x-csharp + $0.TextStylePolicy = $6 + $6.FileWidth = 80 + $6.TabsToSpaces = True + $6.scope = text/plain EndGlobalSection EndGlobal diff --git a/Float.Core/Float.Core.csproj b/Float.Core/Float.Core.csproj index ec13c4a..93b401d 100644 --- a/Float.Core/Float.Core.csproj +++ b/Float.Core/Float.Core.csproj @@ -14,6 +14,7 @@ 1.0.0 true + Release;MAUI;Debug @@ -31,6 +32,23 @@ MIT readme.md + + true + TRACE;RELEASE; + + + obj\MAUI + true + false + bin\MAUI + TRACE;DEBUG;MAUI; + 4 + bin\MAUI\Float.Core.xml + + + + TRACE;DEBUG; + From b3f9469ad283b175e87a34905b14c17f83ec1c10 Mon Sep 17 00:00:00 2001 From: Eric Busch Date: Mon, 15 Jan 2024 15:49:56 -0600 Subject: [PATCH 09/14] Part II --- .github/workflows/test.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1295ba7..325697c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,8 +21,10 @@ jobs: run: dotnet workload restore - name: Restore dependencies run: dotnet restore - - name: Build + - name: Build MAUI run: dotnet build --configuration MAUI --no-restore -f net7.0 + - name: Build Legacy + run: dotnet build --configuration MAUI --no-restore -f netstandard2 - name: Test run: dotnet test --configuration MAUI --no-restore -f net7.0 --no-build --verbosity normal --logger:"trx;" - name: Publish Test Results From 419e2a98706cd17f456ff064b1e6a0a3a3be52a0 Mon Sep 17 00:00:00 2001 From: Eric Busch Date: Mon, 15 Jan 2024 17:06:14 -0600 Subject: [PATCH 10/14] Remove net6.0 --- Float.Core/Float.Core.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Float.Core/Float.Core.csproj b/Float.Core/Float.Core.csproj index 93b401d..4a8621b 100644 --- a/Float.Core/Float.Core.csproj +++ b/Float.Core/Float.Core.csproj @@ -1,6 +1,6 @@ - netstandard2;net6.0;net7.0 + netstandard2;net7.0 Float.Core Float Common utility code used by Float projects. From 1f265fd0abce816489016560449c6f36213f85e1 Mon Sep 17 00:00:00 2001 From: Eric Busch Date: Tue, 16 Jan 2024 13:51:36 -0600 Subject: [PATCH 11/14] Test --- .github/workflows/test.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 325697c..077a761 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,9 +22,7 @@ jobs: - name: Restore dependencies run: dotnet restore - name: Build MAUI - run: dotnet build --configuration MAUI --no-restore -f net7.0 - - name: Build Legacy - run: dotnet build --configuration MAUI --no-restore -f netstandard2 + run: dotnet build --configuration MAUI --no-restore - name: Test run: dotnet test --configuration MAUI --no-restore -f net7.0 --no-build --verbosity normal --logger:"trx;" - name: Publish Test Results From 3c997ff517c36d647bb99d8dbe42f727a03e06a2 Mon Sep 17 00:00:00 2001 From: Eric Busch Date: Tue, 16 Jan 2024 15:15:26 -0600 Subject: [PATCH 12/14] A test --- .github/workflows/test.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 077a761..9fa9bf1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,8 +21,14 @@ jobs: run: dotnet workload restore - name: Restore dependencies run: dotnet restore - - name: Build MAUI - run: dotnet build --configuration MAUI --no-restore + - name: Build + run: dotnet build --configuration Release --no-restore + - name: Save Artifact + uses: actions/upload-artifact@v3 + with: + name: bin + path: ./Float.Core/bin/Release/Float.Core/ + retention-days: 5 - name: Test run: dotnet test --configuration MAUI --no-restore -f net7.0 --no-build --verbosity normal --logger:"trx;" - name: Publish Test Results From 30e8eefb6ca81538c189db33b82643bc95711798 Mon Sep 17 00:00:00 2001 From: Eric Busch Date: Tue, 16 Jan 2024 15:32:06 -0600 Subject: [PATCH 13/14] Tests change --- Float.Core.Tests/Float.Core.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Float.Core.Tests/Float.Core.Tests.csproj b/Float.Core.Tests/Float.Core.Tests.csproj index 9d16ce2..d4cc849 100644 --- a/Float.Core.Tests/Float.Core.Tests.csproj +++ b/Float.Core.Tests/Float.Core.Tests.csproj @@ -1,6 +1,6 @@ - netcoreapp3.1;net6.0;net7.0 + netcoreapp3.1;net7.0 false 9.0 true From 8a9b1847562ed5f444134e48fc6cf600d8799a0c Mon Sep 17 00:00:00 2001 From: Eric Busch Date: Tue, 16 Jan 2024 15:45:36 -0600 Subject: [PATCH 14/14] Another attempt --- .github/workflows/test.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9fa9bf1..2f7bbcc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,11 +23,13 @@ jobs: run: dotnet restore - name: Build run: dotnet build --configuration Release --no-restore + - name: Pack + run: dotnet pack --configuration Release --no-restore - name: Save Artifact uses: actions/upload-artifact@v3 with: - name: bin - path: ./Float.Core/bin/Release/Float.Core/ + name: nupkg + path: ./Float.Core/obj/Release/ retention-days: 5 - name: Test run: dotnet test --configuration MAUI --no-restore -f net7.0 --no-build --verbosity normal --logger:"trx;"