Skip to content

Commit ecec564

Browse files
committed
Add ChannelCreated, ChannelDeleted, ChannelUpdated events
1 parent c7bd9d7 commit ecec564

3 files changed

Lines changed: 35 additions & 12 deletions

File tree

Fluxify.Application/EventArgs/ChannelEventArgs.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15+
using Fluxify.Application.Entities.Channels;
16+
1517
namespace Fluxify.Application.EventArgs;
1618

17-
public class ChannelEventArgs
19+
public class ChannelEventArgs(CacheRef<IChannel> channel)
1820
{
19-
21+
public CacheRef<IChannel> Channel { get; } = channel;
2022
}

Fluxify.Application/FluxerApplication.EventMappings.cs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -404,25 +404,28 @@ private async Task HandleGuildEmojisUpdate(GatewayEmojiUpdate arg)
404404

405405
private async Task HandleChannelCreate(ChannelResponse arg)
406406
{
407-
InsertChannel(arg);
407+
var channel = InsertChannel(arg);
408+
409+
await _channelCreatedHandlers.CallHandlersAsync(new ChannelEventArgs(channel));
408410
}
409411

410-
private Task HandleChannelUpdate(ChannelResponse arg)
412+
private async Task HandleChannelUpdate(ChannelResponse arg)
411413
{
412-
InsertChannel(arg);
413-
return Task.CompletedTask;
414+
var channel = InsertChannel(arg);
415+
416+
await _channelUpdatedHandlers.CallHandlersAsync(new ChannelEventArgs(channel));
414417
}
415418

416-
private Task HandleChannelDelete(ChannelResponse arg)
419+
private async Task HandleChannelDelete(ChannelResponse arg)
417420
{
418421
if (ChannelsRepository.GetCachedOrDefault(arg.Id) is { Value: IGuildChannel guildChannel })
419422
{
420423
guildChannel.Guild?.GuildChannels.Remove(guildChannel.Id, out _);
421424
}
422425

423-
ChannelsRepository.Remove(arg.Id, out _);
424-
425-
return Task.CompletedTask;
426+
ChannelsRepository.Remove(arg.Id, out var channel);
427+
428+
await _channelUpdatedHandlers.CallHandlersAsync(new ChannelEventArgs(channel));
426429
}
427430

428431
private async Task HandleGuildRoleUpdate(GatewayGuildRole arg)

Fluxify.Application/FluxerApplication.Events.cs

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ public partial class FluxerApplication
3030
private readonly HandlerContainer<ReactionRemoveAllEventArgs> _messageReactionRemoveAllHandlers = new();
3131

3232
private readonly HandlerContainer<ChannelEventArgs> _channelCreatedHandlers = new();
33+
private readonly HandlerContainer<ChannelEventArgs> _channelUpdatedHandlers = new();
34+
private readonly HandlerContainer<ChannelEventArgs> _channelDeletedHandlers = new();
3335

3436
private readonly HandlerContainer<GuildEventArgs> _guildCreatedHandlers = new();
3537
private readonly HandlerContainer<GuildEventArgs> _guildUpdatedHandlers = new();
@@ -100,6 +102,22 @@ public event Func<GuildDeletedEventArgs, Task> GuildDeleted
100102
add => _guildDeletedHandlers.InsertDelegate(value);
101103
remove => _guildDeletedHandlers.RemoveDelegate(value);
102104
}
103-
104-
105+
106+
public event Func<ChannelEventArgs, Task> ChannelCreated
107+
{
108+
add => _channelCreatedHandlers.InsertDelegate(value);
109+
remove => _channelCreatedHandlers.RemoveDelegate(value);
110+
}
111+
112+
public event Func<ChannelEventArgs, Task> ChannelUpdated
113+
{
114+
add => _channelUpdatedHandlers.InsertDelegate(value);
115+
remove => _channelUpdatedHandlers.RemoveDelegate(value);
116+
}
117+
118+
public event Func<ChannelEventArgs, Task> ChannelDeleted
119+
{
120+
add => _channelDeletedHandlers.InsertDelegate(value);
121+
remove => _channelDeletedHandlers.RemoveDelegate(value);
122+
}
105123
}

0 commit comments

Comments
 (0)