diff --git a/tg_bot/screens/creative_details.go b/tg_bot/screens/creative_details.go index bf18b91..cc078b0 100644 --- a/tg_bot/screens/creative_details.go +++ b/tg_bot/screens/creative_details.go @@ -31,6 +31,12 @@ type CreativeDetails struct { } func (s *CreativeDetails) Enter(b *bot.Bot, mode bot.RenderMode) { + // Удаляем сообщение предыдущего экрана + if b.LastMessageID != 0 { + b.DeleteMessage(b.ChatID, b.LastMessageID) + b.LastMessageID = 0 + } + creative, err := b.Backend.GetCreative(context.Background(), b.Session.JWT, b.Session.WorkspaceID, s.CreativeID) if err != nil { log.Error().Err(err).Str("creative_id", s.CreativeID).Msg("Failed to get creative") diff --git a/tg_bot/screens/creative_view.go b/tg_bot/screens/creative_view.go index 6a94151..e4c1160 100644 --- a/tg_bot/screens/creative_view.go +++ b/tg_bot/screens/creative_view.go @@ -2,6 +2,7 @@ package screens import ( "context" + "fmt" "strings" "github.com/NicoNex/echotron/v3" @@ -29,13 +30,17 @@ type CreativeView struct { renaming bool // режим ввода нового названия } -const msgCreativeView = ` -📋 Просмотр креатива - -Выберите действие: -` +func msgCreativeView(name string) string { + return fmt.Sprintf("📋 %s\n\nВыберите действие:", name) +} func (s *CreativeView) Enter(b *bot.Bot, mode bot.RenderMode) { + // Удаляем сообщение предыдущего экрана (его клавиатуру не очищает SendCreativePreview) + if b.LastMessageID != 0 { + b.DeleteMessage(b.ChatID, b.LastMessageID) + b.LastMessageID = 0 + } + // Сбрасываем старые ID — при re-enter всегда создаём свежие сообщения s.CreativeMessageID = nil s.ControlPanelMessageID = nil @@ -201,7 +206,11 @@ func (s *CreativeView) showActionPanel(b *bot.Bot) { ), } - s.ShowControlPanel(b, msgCreativeView, buttons) + name := "Креатив" + if s.Name != nil && *s.Name != "" { + name = *s.Name + } + s.ShowControlPanel(b, msgCreativeView(name), buttons) } // toggleTag переключает тег креатива (testing <-> production)