Simplifiy AutoCleanForm

Improving serialization by replacing the message with just the ID
This commit is contained in:
FlorianDahn 2020-09-05 02:07:48 +02:00
parent 82469cff70
commit 193a4811bf

View File

@ -17,7 +17,7 @@ namespace TelegramBotBase.Form
public class AutoCleanForm : FormBase public class AutoCleanForm : FormBase
{ {
[SaveState] [SaveState]
public List<Message> OldMessages { get; set; } public List<int> OldMessages { get; set; }
[SaveState] [SaveState]
public eDeleteMode DeleteMode { get; set; } public eDeleteMode DeleteMode { get; set; }
@ -29,7 +29,7 @@ namespace TelegramBotBase.Form
public AutoCleanForm() public AutoCleanForm()
{ {
this.OldMessages = new List<Message>(); this.OldMessages = new List<int>();
this.DeleteMode = eDeleteMode.OnEveryCall; this.DeleteMode = eDeleteMode.OnEveryCall;
this.DeleteSide = eDeleteSide.BotOnly; this.DeleteSide = eDeleteSide.BotOnly;
@ -56,7 +56,7 @@ namespace TelegramBotBase.Form
if (this.DeleteSide == eDeleteSide.BotOnly) if (this.DeleteSide == eDeleteSide.BotOnly)
return; return;
this.OldMessages.Add(e.Message); this.OldMessages.Add(e.Message.MessageId);
} }
private void Device_MessageSent(object sender, MessageSentEventArgs e) private void Device_MessageSent(object sender, MessageSentEventArgs e)
@ -64,7 +64,7 @@ namespace TelegramBotBase.Form
if (this.DeleteSide == eDeleteSide.UserOnly) if (this.DeleteSide == eDeleteSide.UserOnly)
return; return;
this.OldMessages.Add(e.Message); this.OldMessages.Add(e.Message.MessageId);
} }
public override async Task PreLoad(MessageResult message) public override async Task PreLoad(MessageResult message)
@ -81,7 +81,17 @@ namespace TelegramBotBase.Form
/// <param name="Id"></param> /// <param name="Id"></param>
public void AddMessage(Message m) public void AddMessage(Message m)
{ {
this.OldMessages.Add(m); this.OldMessages.Add(m.MessageId);
}
/// <summary>
/// Adds a message to this of removable ones
/// </summary>
/// <param name="Id"></param>
public void AddMessage(int messageId)
{
this.OldMessages.Add(messageId);
} }
/// <summary> /// <summary>
@ -90,11 +100,7 @@ namespace TelegramBotBase.Form
/// <param name="Id"></param> /// <param name="Id"></param>
public void LeaveMessage(int Id) public void LeaveMessage(int Id)
{ {
var m = this.OldMessages.FirstOrDefault(a => a.MessageId == Id); this.OldMessages.Remove(Id);
if (m == null)
return;
this.OldMessages.Remove(m);
} }
/// <summary> /// <summary>
@ -124,7 +130,7 @@ namespace TelegramBotBase.Form
{ {
while (this.OldMessages.Count > 0) while (this.OldMessages.Count > 0)
{ {
if (!await this.Device.DeleteMessage(this.OldMessages[0].MessageId)) if (!await this.Device.DeleteMessage(this.OldMessages[0]))
{ {
//Message can't be deleted cause it seems not to exist anymore //Message can't be deleted cause it seems not to exist anymore
if (this.OldMessages.Count > 0) if (this.OldMessages.Count > 0)