Maybe sort race condition.

This commit is contained in:
Ottermandias 2023-05-01 22:50:34 +02:00
parent a38a989fe7
commit ee50994b39
5 changed files with 11 additions and 6 deletions

View file

@ -43,7 +43,7 @@ public class ActiveCollections : ISavable, IDisposable
Current = storage.DefaultNamed;
Default = storage.DefaultNamed;
Interface = storage.DefaultNamed;
Individuals = new IndividualCollections(actors, config);
Individuals = new IndividualCollections(actors, config, false);
_communicator.CollectionChange.Subscribe(OnCollectionChange, -100);
LoadCollections();
UpdateCurrentCollectionInUse();

View file

@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Dalamud.Game;
using Dalamud.Game.ClientState.Objects.Enums;
using Dalamud.Interface.Internal.Notifications;
using Newtonsoft.Json.Linq;
@ -37,6 +36,7 @@ public partial class IndividualCollections
{
if (ReadJObjectInternal(obj, storage))
saver.ImmediateSave(parent);
IsLoaded = true;
Loaded.Invoke();
_actorService.FinishedCreation -= Func;
});

View file

@ -18,14 +18,16 @@ public sealed partial class IndividualCollections
private readonly Dictionary<ActorIdentifier, ModCollection> _individuals = new();
public event Action Loaded;
public bool IsLoaded { get; private set; }
public IReadOnlyList<(string DisplayName, IReadOnlyList<ActorIdentifier> Identifiers, ModCollection Collection)> Assignments
=> _assignments;
public IndividualCollections(ActorService actorService, Configuration config)
public IndividualCollections(ActorService actorService, Configuration config, bool temporary)
{
_config = config;
_actorService = actorService;
IsLoaded = temporary;
Loaded += () => Penumbra.Log.Information($"{_assignments.Count} Individual Assignments loaded after delay.");
}

View file

@ -25,7 +25,7 @@ public class TempCollectionManager : IDisposable
_communicator = communicator;
_actors = actors;
_storage = storage;
Collections = new IndividualCollections(actors, config);
Collections = new IndividualCollections(actors, config, true);
_communicator.TemporaryGlobalModChange.Subscribe(OnGlobalModChange);
}