правки

This commit is contained in:
Artem Tsyrulnikov
2026-02-03 14:22:49 +03:00
parent 26a5792665
commit c99afd6c0a
3 changed files with 49 additions and 31 deletions

View File

@@ -22,19 +22,20 @@ type PurchaseChannelInput struct {
}
type SelectChannelsForPurchase struct {
ProjectID string
ProjectTitle string
ProjectTelegramID int64
ProjectUsername string
ProjectStatus string
CreativeID string
CreativeTitle string
Channels []PurchaseChannelInput
CurrentPage int
InvalidUsernames []string
Duplicates []string // дубликаты каналов
ParsingErrors []ParseError // ошибки парсинга с предложениями
BackState bot.State
ProjectID string
ProjectTitle string
ProjectTelegramID int64
ProjectUsername string
ProjectStatus string
CreativeID string
CreativeTitle string
Channels []PurchaseChannelInput
CurrentPage int
InvalidUsernames []string
Duplicates []string // дубликаты каналов
ParsingErrors []ParseError // ошибки парсинга с предложениями
OptionalDetailsState *PurchaseOptionalDetails // сохранённое состояние деталей
BackState bot.State
}
// ParseError представляет ошибку парсинга с предложением исправления
@@ -216,14 +217,23 @@ func (s *SelectChannelsForPurchase) HandleCallback(b *bot.Bot, u *echotron.Updat
}
// Каналы уже резолвлены в HandleMessage, переходим к следующему шагу
b.SetState(&PurchaseOptionalDetails{
ProjectID: s.ProjectID,
ProjectTitle: s.ProjectTitle,
CreativeID: s.CreativeID,
CreativeTitle: s.CreativeTitle,
Channels: s.Channels,
BackState: s.BackState,
}, bot.EditMessage)
// Если есть сохранённое состояние - используем его, иначе создаём новое
var optionalDetails *PurchaseOptionalDetails
if s.OptionalDetailsState != nil {
optionalDetails = s.OptionalDetailsState
// Обновляем каналы на случай если они изменились
optionalDetails.Channels = s.Channels
} else {
optionalDetails = &PurchaseOptionalDetails{
ProjectID: s.ProjectID,
ProjectTitle: s.ProjectTitle,
CreativeID: s.CreativeID,
CreativeTitle: s.CreativeTitle,
Channels: s.Channels,
BackState: s,
}
}
b.SetState(optionalDetails, bot.EditMessage)
case "back_to_select":
s.Enter(b, bot.EditMessage)