Compare commits

..
5 Commits
Author SHA1 Message Date
FlorianDahn 8e29652148 Fixing possible Deadlock in AutoCleanForm 2021-10-17 15:39:31 +02:00
Florian Dahn 5bb316d874 Merge pull request #15 from victorrar/f/update-readme
Fix documentation inaccuracy

Thanks !
2021-10-04 21:35:59 +02:00
Victor d2ae08771e Fix documentation inaccuracy 2021-10-04 21:55:41 +03:00
Florian Dahn 9162c0894c Merge pull request #14 from MajMcCloud/development
AutoCleanForm FIX
2021-10-01 18:36:24 +02:00
FlorianDahn e0ec133209 AutoCleanForm FIX
- adding MessageDeleted event to AutoCleanForm for catching messages getting deleted outside of AutoCleanForm
- added OnMessageDelete invoke to DeleteMessage in DeviceSession
2021-10-01 18:35:05 +02:00
3 changed files with 35 additions and 22 deletions
+1 -3
View File
@@ -170,10 +170,8 @@ public class StartForm : FormBase
}
//Gets invoked during Navigation to this form
public override async Task Init(params object[] param)
{
}
//Init() got replaced with event handler
//Opened() got replaced with event handler
+23 -2
View File
@@ -49,8 +49,15 @@ namespace TelegramBotBase.Form
this.Device.MessageSent += Device_MessageSent;
this.Device.MessageReceived += Device_MessageReceived;
this.Device.MessageDeleted += Device_MessageDeleted;
}
private void Device_MessageDeleted(object sender, MessageDeletedEventArgs e)
{
if (OldMessages.Contains(e.MessageId))
OldMessages.Remove(e.MessageId);
}
private void Device_MessageReceived(object sender, MessageReceivedEventArgs e)
{
@@ -142,9 +149,16 @@ namespace TelegramBotBase.Form
try
{
parallelQuery.ForAll(i =>
{
try
{
Device.DeleteMessage(i).GetAwaiter().GetResult();
deletedMessages.Add(i);
}
catch (ApiRequestException req) when (req.ErrorCode == 400)
{
deletedMessages.Add(i);
}
});
}
catch (AggregateException ex)
@@ -157,7 +171,7 @@ namespace TelegramBotBase.Form
retryAfterTask = Task.Delay(retryAfterSeconds * 1000);
}
deletedMessages.AsParallel().ForAll(i => Device.OnMessageDeleted(new MessageDeletedEventArgs(i)));
//deletedMessages.AsParallel().ForAll(i => Device.OnMessageDeleted(new MessageDeletedEventArgs(i)));
oldMessages = oldMessages.Where(x => !deletedMessages.Contains(x));
if (retryAfterTask != null)
@@ -175,9 +189,16 @@ namespace TelegramBotBase.Form
try
{
parallelQuery.ForAll(i =>
{
try
{
Device.DeleteMessage(i).GetAwaiter().GetResult();
deletedMessages.Add(i);
}
catch (ApiRequestException req) when (req.ErrorCode == 400)
{
deletedMessages.Add(i);
}
});
}
catch (AggregateException ex)
@@ -190,7 +211,7 @@ namespace TelegramBotBase.Form
retryAfterTask = Task.Delay(retryAfterSeconds * 1000);
}
deletedMessages.AsParallel().ForAll(i => Device.OnMessageDeleted(new MessageDeletedEventArgs(i)));
//deletedMessages.AsParallel().ForAll(i => Device.OnMessageDeleted(new MessageDeletedEventArgs(i)));
oldMessages = oldMessages.Where(x => !deletedMessages.Contains(x));
if (retryAfterTask != null)
+3 -9
View File
@@ -644,19 +644,13 @@ namespace TelegramBotBase.Sessions
/// <returns></returns>
public virtual async Task<bool> DeleteMessage(int messageId = -1)
{
try
{
await RAW(a => a.DeleteMessageAsync(this.DeviceId, messageId));
OnMessageDeleted(new MessageDeletedEventArgs(messageId));
return true;
}
catch (ApiRequestException)
{
}
return false;
}
/// <summary>
/// Deletes the given message