public override ValueTask <StageDeletedEventArgs> HandleDispatchAsync(IGatewayApiClient shard, StageInstanceJsonModel model) { IStage stage; if (CacheProvider.TryGetStages(model.GuildId, out var cache) && cache.TryRemove(model.Id, out var cachedStage)) { stage = cachedStage; } else { stage = new TransientStage(Client, model); } var e = new StageDeletedEventArgs(stage); return(new(e)); }
public override ValueTask <StageUpdatedEventArgs> HandleDispatchAsync(IGatewayApiClient shard, StageInstanceJsonModel model) { CachedStage oldStage; IStage newStage; if (CacheProvider.TryGetStages(model.GuildId, out var cache) && cache.TryGetValue(model.Id, out var stage)) { newStage = stage; oldStage = stage.Clone() as CachedStage; newStage.Update(model); } else { oldStage = null; newStage = new TransientStage(Client, model); } var e = new StageUpdatedEventArgs(oldStage, newStage); return(new(e)); }