@@ -88,10 +88,9 @@ public DiscordService(IDiscordServiceConfiguration configuration,
8888
8989 public async Task Init ( )
9090 {
91+ await discordLock . WaitAsync ( ) ;
9192 try
9293 {
93- await discordLock . WaitAsync ( ) ;
94-
9594 using ( var context = _dbContextFactory . Create < ApplicationDbContext > ( ) )
9695 {
9796 var servers = context . DiscordServers . AsQueryable ( ) . ToArrayAsync ( ) ;
@@ -173,10 +172,9 @@ public async Task<Result> SetNamedChannel(string name, ulong channelId)
173172 return Result . Failure ( Constants . InvalidNameErrorKey , "Channel name can not be empty or whitespace or contain space ' ' characters." ) ;
174173 }
175174
175+ await discordLock . WaitAsync ( ) ;
176176 try
177177 {
178- await discordLock . WaitAsync ( ) ;
179-
180178 using ( var context = _dbContextFactory . Create < ApplicationDbContext > ( ) )
181179 {
182180 NamedDiscordChannel [ ] query = await context . NamedDiscordChannels . AsQueryable ( ) . Where ( x => x . Name == name ) . ToArrayAsync ( ) ;
@@ -217,10 +215,9 @@ public async Task<Result> SetNamedChannel(string name, ulong channelId)
217215
218216 public async Task < Result > UnSetNamedChannel ( string name )
219217 {
218+ await discordLock . WaitAsync ( ) ;
220219 try
221220 {
222- await discordLock . WaitAsync ( ) ;
223-
224221 using ( var context = _dbContextFactory . Create < ApplicationDbContext > ( ) )
225222 {
226223 NamedDiscordChannel [ ] query = await context . NamedDiscordChannels . AsQueryable ( ) . Where ( x => x . Name == name ) . ToArrayAsync ( ) ;
@@ -256,10 +253,9 @@ public async Task<Result> UnSetNamedChannel(string name)
256253
257254 public async Task < Result < string ? > > UnSetServer ( ulong channelId )
258255 {
256+ await discordLock . WaitAsync ( ) ;
259257 try
260258 {
261- await discordLock . WaitAsync ( ) ;
262-
263259 using ( var context = _dbContextFactory . Create < ApplicationDbContext > ( ) )
264260 {
265261 DiscordServers [ ] query = await context . DiscordServers . AsQueryable ( ) . Where ( x => x . DiscordChannelId == channelId ) . ToArrayAsync ( ) ;
@@ -322,10 +318,9 @@ public async Task SendToNamedChannel(string name, string? text = null, Embed? em
322318
323319 public async Task < Result < ( string name , ulong channel ) [ ] > > GetNamedChannels ( )
324320 {
321+ await discordLock . WaitAsync ( ) ;
325322 try
326323 {
327- await discordLock . WaitAsync ( ) ;
328-
329324 var array = nameToDiscord . Select ( x => ( x . Key , x . Value ) ) . ToArray ( ) ;
330325 return Result < ( string name , ulong channel ) [ ] > . OK ( array ) ;
331326 }
@@ -353,10 +348,9 @@ public async Task ScheduleUpdateChannelNameAndTopic(string serverId)
353348
354349 private async Task < Result > SetServerInner ( string serverId , ulong channelId )
355350 {
351+ await discordLock . WaitAsync ( ) ;
356352 try
357353 {
358- await discordLock . WaitAsync ( ) ;
359-
360354 using ( var context = _dbContextFactory . Create < ApplicationDbContext > ( ) )
361355 {
362356 DiscordServers [ ] query = await context . DiscordServers . AsQueryable ( ) . Where ( x => x . DiscordChannelId == channelId || x . ServerId == serverId ) . ToArrayAsync ( ) ;
@@ -401,9 +395,9 @@ private async Task<Result> SetServerInner(string serverId, ulong channelId)
401395 return null ;
402396 }
403397
398+ await discordLock . WaitAsync ( ) ;
404399 try
405400 {
406- await discordLock . WaitAsync ( ) ;
407401 if ( ! serverdToDiscord . TryGetValue ( serverId , out ulong channelId ) )
408402 {
409403 return null ;
@@ -424,9 +418,9 @@ private async Task<Result> SetServerInner(string serverId, ulong channelId)
424418 return null ;
425419 }
426420
421+ await discordLock . WaitAsync ( ) ;
427422 try
428423 {
429- await discordLock . WaitAsync ( ) ;
430424 if ( ! nameToDiscord . TryGetValue ( channelName , out ulong channelId ) )
431425 {
432426 return null ;
@@ -474,9 +468,9 @@ private static void EnqueueMessage(IMessageQueue messageQueue, string? text = nu
474468 return null ;
475469 }
476470
471+ await discordLock . WaitAsync ( ) ;
477472 try
478473 {
479- await discordLock . WaitAsync ( ) ;
480474 if ( ! serverdToDiscord . TryGetValue ( serverId , out ulong channelId ) )
481475 {
482476 return null ;
@@ -500,10 +494,9 @@ private static void EnqueueMessage(IMessageQueue messageQueue, string? text = nu
500494 private async void MessageReceived ( IDiscordMessageHandlingService sender , MessageReceivedEventArgs eventArgs )
501495 {
502496 string serverId ;
497+ await discordLock . WaitAsync ( ) ;
503498 try
504499 {
505- await discordLock . WaitAsync ( ) ;
506-
507500 if ( ! discordToServer . TryGetValue ( eventArgs . Channel . Id , out string ? id ) )
508501 {
509502 return ;
0 commit comments