44
55namespace UniGetUI . PackageEngine . PackageLoader
66{
7+ public class PackagesChangedEvent
8+ {
9+ public PackagesChangedEvent ( bool proceduralChange , IReadOnlyList < IPackage > addedPackages , IReadOnlyList < IPackage > removedPackages )
10+ {
11+ ProceduralChange = proceduralChange ;
12+ AddedPackages = addedPackages ;
13+ RemovedPackages = removedPackages ;
14+ }
15+
16+ public readonly bool ProceduralChange ;
17+ public readonly IReadOnlyList < IPackage > AddedPackages ;
18+ public readonly IReadOnlyList < IPackage > RemovedPackages ;
19+ }
20+
721 public abstract class AbstractPackageLoader
822 {
923 /// <summary>
@@ -34,7 +48,7 @@ public List<IPackage> Packages
3448 /// <summary>
3549 /// Fires when a block of packages (one package or more) is added or removed to the loader
3650 /// </summary>
37- public event EventHandler < EventArgs > ? PackagesChanged ;
51+ public event EventHandler < PackagesChangedEvent > ? PackagesChanged ;
3852
3953 /// <summary>
4054 /// Fires when the loader finishes fetching packages
@@ -85,9 +99,9 @@ public void StopLoading(bool emitFinishSignal = true)
8599 if ( emitFinishSignal ) InvokeFinishedLoadingEvent ( ) ;
86100 }
87101
88- protected void InvokePackagesChangedEvent ( )
102+ protected void InvokePackagesChangedEvent ( bool proceduralChange , IReadOnlyList < IPackage > toAdd , IReadOnlyList < IPackage > toRemove )
89103 {
90- PackagesChanged ? . Invoke ( this , EventArgs . Empty ) ;
104+ PackagesChanged ? . Invoke ( this , new ( proceduralChange , toAdd , toRemove ) ) ;
91105 }
92106
93107 protected void InvokeStartedLoadingEvent ( )
@@ -107,7 +121,7 @@ public virtual async Task ReloadPackages()
107121 {
108122 if ( DISABLE_RELOAD )
109123 {
110- InvokePackagesChangedEvent ( ) ;
124+ InvokePackagesChangedEvent ( false , [ ] , [ ] ) ;
111125 return ;
112126 }
113127
@@ -156,7 +170,7 @@ public virtual async Task ReloadPackages()
156170 AddPackage ( package ) ;
157171 await WhenAddingPackage ( package ) ;
158172 }
159- InvokePackagesChangedEvent ( ) ;
173+ InvokePackagesChangedEvent ( true , task . Result . ToArray ( ) , [ ] ) ;
160174 }
161175 tasks . Remove ( task ) ;
162176 }
@@ -180,7 +194,7 @@ public void ClearPackages(bool emitFinishSignal = true)
180194 PackageReference . Clear ( ) ;
181195 IsLoaded = false ;
182196 IsLoading = false ;
183- InvokePackagesChangedEvent ( ) ;
197+ InvokePackagesChangedEvent ( false , [ ] , [ ] ) ;
184198 }
185199
186200 /// <summary>
@@ -245,7 +259,7 @@ public void AddForeign(IPackage? package)
245259 }
246260
247261 AddPackage ( package ) ;
248- InvokePackagesChangedEvent ( ) ;
262+ InvokePackagesChangedEvent ( true , [ package ] , [ ] ) ;
249263 }
250264
251265 /// <summary>
@@ -264,7 +278,7 @@ public void Remove(IPackage? package)
264278 }
265279
266280 PackageReference . Remove ( HashPackage ( package ) , out IPackage ? _ ) ;
267- InvokePackagesChangedEvent ( ) ;
281+ InvokePackagesChangedEvent ( true , [ ] , [ package ] ) ;
268282 }
269283
270284 /// <summary>
0 commit comments