Skip to content

Commit f51cb7b

Browse files
committed
Fixed incorrent cache updating when adding permission overwrites
1 parent e19e16d commit f51cb7b

File tree

3 files changed

+11
-14
lines changed

3 files changed

+11
-14
lines changed

samples/Kook.Net.Samples.TextCommands/Modules/PublicModule.cs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -116,13 +116,10 @@ public async Task ModifyCategoryPermissions()
116116
await guildChannel.AddPermissionOverwriteAsync((IGuildUser)Context.User);
117117
if (guildChannel is SocketChannel socketChannel)
118118
await socketChannel.UpdateAsync();
119-
if (guild.GetChannel(Context.Channel.Id) is { } socketGuildChannel)
120-
{
121-
await socketGuildChannel.ModifyPermissionOverwriteAsync((IGuildUser)Context.User,
122-
permissions => permissions.Modify(
123-
viewChannel: PermValue.Allow,
124-
sendMessages: PermValue.Deny,
125-
attachFiles: PermValue.Allow));
126-
}
119+
await guildChannel.ModifyPermissionOverwriteAsync((IGuildUser)Context.User,
120+
permissions => permissions.Modify(
121+
viewChannel: PermValue.Allow,
122+
sendMessages: PermValue.Deny,
123+
attachFiles: PermValue.Allow));
127124
}
128125
}

src/Kook.Net.Rest/Entities/Channels/RestGuildChannel.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,19 +129,19 @@ public override async Task UpdateAsync(RequestOptions? options = null)
129129
/// <inheritdoc cref="Kook.IGuildChannel.AddPermissionOverwriteAsync(Kook.IGuildUser,Kook.RequestOptions)" />
130130
public async Task AddPermissionOverwriteAsync(IGuildUser user, RequestOptions? options = null)
131131
{
132-
UserPermissionOverwrite permissionOverwrite = await ChannelHelper
132+
UserPermissionOverwrite perms = await ChannelHelper
133133
.AddPermissionOverwriteAsync(this, Kook, user, options)
134134
.ConfigureAwait(false);
135-
_userPermissionOverwrites = [.._userPermissionOverwrites, permissionOverwrite];
135+
_userPermissionOverwrites = [.._userPermissionOverwrites.Where(x => x.TargetId != perms.TargetId), perms];
136136
}
137137

138138
/// <inheritdoc cref="Kook.IGuildChannel.AddPermissionOverwriteAsync(Kook.IRole,Kook.RequestOptions)" />
139139
public async Task AddPermissionOverwriteAsync(IRole role, RequestOptions? options = null)
140140
{
141-
RolePermissionOverwrite permissionOverwrite = await ChannelHelper
141+
RolePermissionOverwrite perms = await ChannelHelper
142142
.AddPermissionOverwriteAsync(this, Kook, role, options)
143143
.ConfigureAwait(false);
144-
_rolePermissionOverwrites = [.._rolePermissionOverwrites, permissionOverwrite];
144+
_rolePermissionOverwrites = [.._rolePermissionOverwrites.Where(x => x.TargetId != perms.TargetId), perms];
145145
}
146146

147147
/// <inheritdoc cref="Kook.IGuildChannel.RemovePermissionOverwriteAsync(Kook.IGuildUser,Kook.RequestOptions)" />

src/Kook.Net.WebSocket/Entities/Channels/SocketGuildChannel.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ public async Task AddPermissionOverwriteAsync(IGuildUser user, RequestOptions? o
118118
UserPermissionOverwrite perms = await ChannelHelper
119119
.AddPermissionOverwriteAsync(this, Kook, user, options)
120120
.ConfigureAwait(false);
121-
_userPermissionOverwrites = [.._userPermissionOverwrites, perms];
121+
_userPermissionOverwrites = [.._userPermissionOverwrites.Where(x => x.TargetId != perms.TargetId), perms];
122122
}
123123

124124
/// <inheritdoc cref="Kook.IGuildChannel.AddPermissionOverwriteAsync(Kook.IRole,Kook.RequestOptions)" />
@@ -127,7 +127,7 @@ public async Task AddPermissionOverwriteAsync(IRole role, RequestOptions? option
127127
RolePermissionOverwrite perms = await ChannelHelper
128128
.AddPermissionOverwriteAsync(this, Kook, role, options)
129129
.ConfigureAwait(false);
130-
_rolePermissionOverwrites = [.._rolePermissionOverwrites, perms];
130+
_rolePermissionOverwrites = [.._rolePermissionOverwrites.Where(x => x.TargetId != perms.TargetId), perms];
131131
}
132132

133133
/// <inheritdoc cref="Kook.IGuildChannel.RemovePermissionOverwriteAsync(Kook.IGuildUser,Kook.RequestOptions)" />

0 commit comments

Comments
 (0)