Skip to content

Commit c83e20a

Browse files
committed
Fix #4
1 parent d96f252 commit c83e20a

17 files changed

+234
-137
lines changed

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/External/UniTask/AsyncCommand.T.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ public AsyncCommand(Func<T, CancellationToken, UniTask> action, Func<bool> canEx
1818

1919
public void Execute(T parameter)
2020
{
21+
if (IsRunning && AllowConcurrency == false)
22+
{
23+
return;
24+
}
25+
2126
ExecuteAsync(parameter).Forget();
2227
}
2328

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/External/UniTask/AsyncCommand.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ public AsyncCommand(Func<CancellationToken, UniTask> action, Func<bool> canExecu
1818

1919
public void Execute()
2020
{
21+
if (IsRunning && AllowConcurrency == false)
22+
{
23+
return;
24+
}
25+
2126
ExecuteAsync().Forget();
2227
}
2328

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/External/UniTask/AsyncLazyCommand.T.cs

Lines changed: 0 additions & 44 deletions
This file was deleted.

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/External/UniTask/AsyncLazyCommand.T.cs.meta

Lines changed: 0 additions & 3 deletions
This file was deleted.

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/External/UniTask/AsyncLazyCommand.cs

Lines changed: 0 additions & 44 deletions
This file was deleted.

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/External/UniTask/AsyncLazyCommand.cs.meta

Lines changed: 0 additions & 3 deletions
This file was deleted.

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/External/UniTask/BaseAsyncCommand.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ namespace UnityMvvmToolkit.UniTask
55
using Core;
66
using System;
77
using Interfaces;
8+
using Extensions;
89
using System.Runtime.CompilerServices;
910

1011
public abstract class BaseAsyncCommand : BaseCommand, IBaseAsyncCommand
@@ -25,6 +26,8 @@ protected set
2526
}
2627
}
2728

29+
public bool AllowConcurrency { get; set; }
30+
2831
public virtual bool DisableOnExecution { get; set; }
2932

3033
[MethodImpl(MethodImplOptions.AggressiveInlining)]
@@ -40,6 +43,8 @@ public override bool CanExecute()
4043

4144
public virtual void Cancel()
4245
{
46+
throw new InvalidOperationException(
47+
$"To make the 'AsyncCommand' cancelable, use '{nameof(AsyncCommandExtensions.WithCancellation)}' extension.");
4348
}
4449
}
4550
}

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/External/UniTask/BaseAsyncLazyCommand.cs

Lines changed: 0 additions & 30 deletions
This file was deleted.

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/External/UniTask/BaseAsyncLazyCommand.cs.meta

Lines changed: 0 additions & 3 deletions
This file was deleted.

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/External/UniTask/Extensions/AsyncCommandExtensions.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ public static IAsyncCommand WithCancellation(this IAsyncCommand asyncCommand)
1515
throw new NullReferenceException(nameof(asyncCommand));
1616
}
1717

18-
return new AsyncCommandWithCancellation(asyncCommand);
18+
return asyncCommand.AllowConcurrency
19+
? new AsyncCommandWithCancellation(asyncCommand)
20+
: new AsyncLazyCommandWithCancellation(asyncCommand);
1921
}
2022

2123
public static IAsyncCommand<T> WithCancellation<T>(this IAsyncCommand<T> asyncCommand)
@@ -25,7 +27,9 @@ public static IAsyncCommand<T> WithCancellation<T>(this IAsyncCommand<T> asyncCo
2527
throw new NullReferenceException(nameof(asyncCommand));
2628
}
2729

28-
return new AsyncCommandWithCancellation<T>(asyncCommand);
30+
return asyncCommand.AllowConcurrency
31+
? new AsyncCommandWithCancellation<T>(asyncCommand)
32+
: new AsyncLazyCommandWithCancellation<T>(asyncCommand);
2933
}
3034
}
3135
}

0 commit comments

Comments
 (0)