Example #1
0
        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));
        }