Skip to content

Commit 484a151

Browse files
committed
Added Disposed event
1 parent 488b7d1 commit 484a151

File tree

7 files changed

+31
-9
lines changed

7 files changed

+31
-9
lines changed

Assets/Samples/SampleLifecycle.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ void Start()
1919
.Completed(isLoaded => Debug.Log($"Completed, isLoaded={isLoaded}")) // if completed (failed, loaded or canceled)
2020
.Then(sprite => Debug.Log("Loaded")) // if loaded
2121
.ThenSet(image) // if loaded set sprite into image
22-
.Canceled(() => Debug.Log("Canceled")) // if cancelled
22+
.Canceled(() => Debug.Log("Canceled")) // if canceled
23+
.Disposed(() => Debug.Log("Disposed")) // if disposed
2324
.Forget();
2425
}
2526
}

Assets/_PackageRoot/Documentation~/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,8 @@ public class SampleLifecycle : MonoBehaviour
232232
.Completed(isLoaded => Debug.Log($"Completed, isLoaded={isLoaded}")) // if completed (failed, loaded or canceled)
233233
.Then(sprite => Debug.Log("Loaded")) // if loaded
234234
.ThenSet(image) // if loaded set sprite into image
235-
.Canceled(() => Debug.Log("Canceled")) // if cancelled
235+
.Canceled(() => Debug.Log("Canceled")) // if canceled
236+
.Disposed(() => Debug.Log("Disposed")) // if disposed
236237
.Forget();
237238
}
238239
}

Assets/_PackageRoot/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,8 @@ public class SampleLifecycle : MonoBehaviour
232232
.Completed(isLoaded => Debug.Log($"Completed, isLoaded={isLoaded}")) // if completed (failed, loaded or canceled)
233233
.Then(sprite => Debug.Log("Loaded")) // if loaded
234234
.ThenSet(image) // if loaded set sprite into image
235-
.Canceled(() => Debug.Log("Canceled")) // if cancelled
235+
.Canceled(() => Debug.Log("Canceled")) // if canceled
236+
.Disposed(() => Debug.Log("Disposed")) // if disposed
236237
.Forget();
237238
}
238239
}

Assets/_PackageRoot/Runtime/Future/Future.API.cs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,18 @@ public Future<T> Canceled(Action action)
142142
action();
143143
return this;
144144
}
145-
OnCancelled += action;
145+
OnCanceled += action;
146+
return this;
147+
}
148+
149+
/// <summary>
150+
/// When the Future is going to be disposed
151+
/// </summary>
152+
/// <param name="action">action to execute on the event</param>
153+
/// <returns>Returns the Future instance</returns>
154+
public Future<T> Disposed(Action action)
155+
{
156+
OnDispose += action;
146157
return this;
147158
}
148159

@@ -156,7 +167,7 @@ public void Cancel()
156167
Debug.Log($"[ImageLoader] Cancel: {Url}");
157168
Status = FutureStatus.Canceled;
158169
cts.Cancel();
159-
OnCancelled?.Invoke();
170+
OnCanceled?.Invoke();
160171
Clear();
161172
}
162173

@@ -167,8 +178,12 @@ public void Dispose()
167178
{
168179
Clear();
169180
Status = FutureStatus.Disposed;
181+
OnDispose?.Invoke();
182+
OnDispose = null;
183+
170184
if (value is IDisposable disposable)
171185
disposable?.Dispose();
186+
172187
value = default;
173188
exception = default;
174189
cts.Cancel();

Assets/_PackageRoot/Runtime/Future/Future.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ public partial class Future<T> : IFuture, IDisposable
2727
private event Action<T> OnLoaded;
2828
private event Action<Exception> OnFailedToLoad;
2929
private event Action<bool> OnCompleted;
30-
private event Action OnCancelled;
30+
private event Action OnCanceled;
31+
private event Action OnDispose;
3132

3233
private readonly CancellationTokenSource cts;
3334
private readonly bool muteLogs;
@@ -70,6 +71,8 @@ internal Future<T> PassEvents(Future<T> to, bool passCancelled = true)
7071
if (passCancelled)
7172
Canceled(to.Cancel);
7273

74+
Disposed(to.Dispose);
75+
7376
return this;
7477
}
7578
internal void Loading(FutureLoadingFrom loadingFrom)
@@ -148,7 +151,7 @@ private void Clear()
148151
OnLoaded = null;
149152
OnFailedToLoad = null;
150153
OnCompleted = null;
151-
OnCancelled = null;
154+
OnCanceled = null;
152155
}
153156

154157
public override string ToString() => Url;

Assets/_PackageRoot/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"name": "Ivan Murzak",
66
"url": "https://github.com/IvanMurzak"
77
},
8-
"version": "5.2.0",
8+
"version": "5.3.0",
99
"unity": "2019.2",
1010
"description": "Asynchronous image loading from remote or local destination. It has two layers of configurable Memory and Disk cache systems.",
1111
"dependencies": {

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,8 @@ public class SampleLifecycle : MonoBehaviour
232232
.Completed(isLoaded => Debug.Log($"Completed, isLoaded={isLoaded}")) // if completed (failed, loaded or canceled)
233233
.Then(sprite => Debug.Log("Loaded")) // if loaded
234234
.ThenSet(image) // if loaded set sprite into image
235-
.Canceled(() => Debug.Log("Canceled")) // if cancelled
235+
.Canceled(() => Debug.Log("Canceled")) // if canceled
236+
.Disposed(() => Debug.Log("Disposed")) // if disposed
236237
.Forget();
237238
}
238239
}

0 commit comments

Comments
 (0)