From 07cbb8bfa4ae8003555276c05f46bfd9b83d2fbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A7=D0=BE=D0=B2?= =?UTF-8?q?=D0=BD=D1=8E=D0=BA?= Date: Sat, 7 Dec 2024 22:09:18 +0500 Subject: [PATCH] AutoCleanForm detect only is active form --- .gitea/workflows/TelegramBotFramework.nuget.yaml | 2 +- TelegramBotBase/Form/AutoCleanForm.cs | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/TelegramBotFramework.nuget.yaml b/.gitea/workflows/TelegramBotFramework.nuget.yaml index 2ee5620..ce7988b 100644 --- a/.gitea/workflows/TelegramBotFramework.nuget.yaml +++ b/.gitea/workflows/TelegramBotFramework.nuget.yaml @@ -8,7 +8,7 @@ jobs: Build-TelegramBotBase: env: APP_PROJECT_NAME: TelegramBotBase - PACKAGE_VERSION: "123.1.3" + PACKAGE_VERSION: "123.1.5" strategy: matrix: os: diff --git a/TelegramBotBase/Form/AutoCleanForm.cs b/TelegramBotBase/Form/AutoCleanForm.cs index e994ef3..db145a0 100644 --- a/TelegramBotBase/Form/AutoCleanForm.cs +++ b/TelegramBotBase/Form/AutoCleanForm.cs @@ -24,7 +24,7 @@ public class AutoCleanForm : FormBase DeleteMode = EDeleteMode.OnEveryCall; DeleteSide = EDeleteSide.BotOnly; - Init += AutoCleanForm_Init; + Opened += AutoCleanForm_Init; Closed += AutoCleanForm_Closed; } @@ -35,7 +35,7 @@ public class AutoCleanForm : FormBase [SaveState] public EDeleteSide DeleteSide { get; set; } - private Task AutoCleanForm_Init(object sender, InitEventArgs e) + private Task AutoCleanForm_Init(object sender, EventArgs e) { if (Device == null) { @@ -70,7 +70,8 @@ public class AutoCleanForm : FormBase private Task Device_MessageSent(object sender, MessageSentEventArgs e) { - if (DeleteSide == EDeleteSide.UserOnly) + if (DeleteSide == EDeleteSide.UserOnly + || Device.ActiveForm != this) { return Task.CompletedTask; } @@ -137,6 +138,12 @@ public class AutoCleanForm : FormBase return Task.CompletedTask; } + Device.MessageSent -= Device_MessageSent; + + Device.MessageReceived -= Device_MessageReceived; + + Device.MessageDeleted -= Device_MessageDeleted; + MessageCleanup().Wait(); return Task.CompletedTask; }