изображения projects!

This commit is contained in:
Artem Tsyrulnikov
2026-01-19 21:47:44 +03:00
parent f7ad52f543
commit f4a876836e
11 changed files with 682 additions and 73 deletions

View File

@@ -14,17 +14,31 @@ const addPurchaseCreativesPerPage = 5
const addPurchaseProjectsPerPage = 6
type AddPurchase struct {
WorkspaceID string
ProjectID string
ProjectTitle string
CreativeID string
CreativeTitle string
ProjectPage int
CreativePage int
ActivePicker string // "" | "project_list" | "creative_list"
BackState bot.State
lastProjects map[string]string
lastCreatives map[string]string
WorkspaceID string
ProjectID string
ProjectTitle string
ProjectTelegramID int64
ProjectUsername string
ProjectStatus string
CreativeID string
CreativeTitle string
ProjectPage int
CreativePage int
ActivePicker string // "" | "project_list" | "creative_list"
BackState bot.State
lastProjects map[string]projectInfo
lastCreatives map[string]creativeInfo
}
type projectInfo struct {
Title string
TelegramID int64
Username string
Status string
}
type creativeInfo struct {
Title string
}
func (s *AddPurchase) Enter(b *bot.Bot, mode bot.RenderMode) {
@@ -78,9 +92,18 @@ func (s *AddPurchase) renderSelection(b *bot.Bot, mode bot.RenderMode, jwt strin
return
}
s.lastProjects = make(map[string]string)
s.lastProjects = make(map[string]projectInfo)
for _, project := range page.Items {
s.lastProjects[project.ID] = project.Title
username := ""
if project.Username != nil {
username = *project.Username
}
s.lastProjects[project.ID] = projectInfo{
Title: project.Title,
TelegramID: project.TelegramID,
Username: username,
Status: project.Status,
}
}
if len(page.Items) == 0 {
@@ -143,9 +166,11 @@ func (s *AddPurchase) renderSelection(b *bot.Bot, mode bot.RenderMode, jwt strin
return
}
s.lastCreatives = make(map[string]string)
s.lastCreatives = make(map[string]creativeInfo)
for _, creative := range page.Items {
s.lastCreatives[creative.ID] = creative.Name
s.lastCreatives[creative.ID] = creativeInfo{
Title: creative.Name,
}
}
if len(page.Items) == 0 {
@@ -202,6 +227,11 @@ func (s *AddPurchase) renderSelection(b *bot.Bot, mode bot.RenderMode, jwt strin
keyboard := Keyboard(buttons...)
b.Render(text, keyboard, mode)
if s.ActivePicker == "" && s.ProjectTelegramID != 0 {
messageID := b.LastMessageID
updateProjectHeaderMedia(b, messageID, text, keyboard, s.ProjectTelegramID, s.ProjectTitle, s.ProjectUsername, s.ProjectStatus)
}
}
func (s *AddPurchase) HandleCallback(b *bot.Bot, u *echotron.Update) {
@@ -258,13 +288,16 @@ func (s *AddPurchase) HandleCallback(b *bot.Bot, u *echotron.Update) {
}
if s.ProjectID != "" && s.CreativeID != "" {
b.SetState(&SelectChannelsForPurchase{
WorkspaceID: s.WorkspaceID,
ProjectID: s.ProjectID,
ProjectTitle: s.ProjectTitle,
CreativeID: s.CreativeID,
CreativeTitle: s.CreativeTitle,
Channels: []PurchaseChannelInput{},
BackState: s.BackState,
WorkspaceID: s.WorkspaceID,
ProjectID: s.ProjectID,
ProjectTitle: s.ProjectTitle,
ProjectTelegramID: s.ProjectTelegramID,
ProjectUsername: s.ProjectUsername,
ProjectStatus: s.ProjectStatus,
CreativeID: s.CreativeID,
CreativeTitle: s.CreativeTitle,
Channels: []PurchaseChannelInput{},
BackState: s.BackState,
}, bot.EditMessage)
}
@@ -272,7 +305,12 @@ func (s *AddPurchase) HandleCallback(b *bot.Bot, u *echotron.Update) {
if len(data) > 8 && data[:8] == "project:" {
projectID := data[8:]
if s.lastProjects != nil {
s.ProjectTitle = s.lastProjects[projectID]
if info, ok := s.lastProjects[projectID]; ok {
s.ProjectTitle = info.Title
s.ProjectTelegramID = info.TelegramID
s.ProjectUsername = info.Username
s.ProjectStatus = info.Status
}
}
s.ProjectID = projectID
s.CreativeID = ""
@@ -285,7 +323,9 @@ func (s *AddPurchase) HandleCallback(b *bot.Bot, u *echotron.Update) {
if len(data) > 9 && data[:9] == "creative:" {
creativeID := data[9:]
if s.lastCreatives != nil {
s.CreativeTitle = s.lastCreatives[creativeID]
if info, ok := s.lastCreatives[creativeID]; ok {
s.CreativeTitle = info.Title
}
}
s.CreativeID = creativeID
s.ActivePicker = ""