улучшение ui

This commit is contained in:
Artem Tsyrulnikov
2026-01-09 12:23:02 +03:00
parent 40c7be8470
commit 9fbb6fdbbf
19 changed files with 635 additions and 453 deletions

View File

@@ -25,7 +25,7 @@ func (s *MyProjects) Enter(b *bot.Bot, mode bot.RenderMode) {
jwt := b.Session.JWT
if jwt == "" {
log.Error().Msg("JWT is empty in session")
b.SendNew("❌ Ошибка авторизации. Попробуйте /start login", bot.Keyboard())
b.SendNew("❌ Ошибка авторизации. Попробуйте /start login", Keyboard())
return
}
@@ -34,7 +34,7 @@ func (s *MyProjects) Enter(b *bot.Bot, mode bot.RenderMode) {
workspaces, err := b.Backend.GetWorkspaces(context.Background(), jwt)
if err != nil {
log.Error().Err(err).Msg("Failed to get workspaces")
b.SendNew("❌ Не удалось загрузить workspace'ы", bot.Keyboard())
b.SendNew("❌ Не удалось загрузить workspace'ы", Keyboard())
return
}
@@ -57,7 +57,7 @@ func (s *MyProjects) Enter(b *bot.Bot, mode bot.RenderMode) {
workspace, err := b.Backend.CreateWorkspace(context.Background(), jwt, username)
if err != nil {
log.Error().Err(err).Msg("Failed to create workspace")
b.SendNew("❌ Не удалось создать workspace", bot.Keyboard())
b.SendNew("❌ Не удалось создать workspace", Keyboard())
return
}
@@ -76,7 +76,7 @@ func (s *MyProjects) renderProjects(b *bot.Bot, mode bot.RenderMode, jwt string)
page, err := b.Backend.GetProjects(context.Background(), jwt, s.WorkspaceID, s.CurrentPage+1, projectsPerPage)
if err != nil {
log.Error().Err(err).Msg("Failed to get projects")
b.SendNew("❌ Не удалось загрузить проекты", bot.Keyboard())
b.SendNew("❌ Не удалось загрузить проекты", Keyboard())
return
}
@@ -122,13 +122,13 @@ func (s *MyProjects) renderProjects(b *bot.Bot, mode bot.RenderMode, jwt string)
// Создаем слоты для проектов
var slots []echotron.InlineKeyboardButton
for _, project := range page.Items {
slots = append(slots, bot.Button(project.Title, fmt.Sprintf("project:%s", project.ID)))
slots = append(slots, Button(project.Title, fmt.Sprintf("project:%s", project.ID)))
}
// Если страниц >= 2, заполняем до 6 слотов пустыми кнопками
if page.Pages >= 2 {
for len(slots) < projectsPerPage {
slots = append(slots, bot.Button(" ", "empty"))
slots = append(slots, Button(" ", "empty"))
}
}
@@ -142,7 +142,7 @@ func (s *MyProjects) renderProjects(b *bot.Bot, mode bot.RenderMode, jwt string)
row = append(row, slots[i+1])
} else {
// Если нечетное количество, добавляем пустую кнопку
row = append(row, bot.Button(" ", "empty"))
row = append(row, Button(" ", "empty"))
}
buttons = append(buttons, row)
@@ -152,18 +152,18 @@ func (s *MyProjects) renderProjects(b *bot.Bot, mode bot.RenderMode, jwt string)
if navRow := ui.BuildNavigationRow(ui.PaginationConfig{
CurrentPage: s.CurrentPage,
TotalPages: page.Pages,
MiddleButtons: []echotron.InlineKeyboardButton{bot.Button(" Добавить", "add_project")},
MiddleButtons: []echotron.InlineKeyboardButton{Button(" Добавить", "add_project")},
}); navRow != nil {
buttons = append(buttons, navRow)
}
// Нижний ряд: Назад + Архив
buttons = append(buttons, bot.Row(
bot.Button("← Назад", "menu"),
bot.Button("≡ Архив", "archive"),
buttons = append(buttons, Row(
Button("← Назад", "menu"),
Button("≡ Архив", "archive"),
))
keyboard := bot.Keyboard(buttons...)
keyboard := Keyboard(buttons...)
b.Render(text, keyboard, mode)
}
@@ -189,8 +189,8 @@ func (s *MyProjects) HandleCallback(b *bot.Bot, u *echotron.Update) {
b.SetState(&MainMenu{}, bot.EditMessage)
case data == "archive":
b.Edit("📦 Архив проектов\n\nЭта функция в разработке", bot.Keyboard(
bot.Row(bot.Button("← Назад", "back_to_projects")),
b.Edit("📦 Архив проектов\n\nЭта функция в разработке", Keyboard(
Row(Button("← Назад", "back_to_projects")),
))
case data == "add_project":