155 lines
3.5 KiB
Go
155 lines
3.5 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"github.com/go-telegram/bot"
|
|
"github.com/go-telegram/bot/models"
|
|
)
|
|
|
|
func (appCtx *App) handleDockerList(ctx context.Context, b *bot.Bot, chatID int64) {
|
|
text, keyboard, _ := appCtx.renderContainerPage(ctx, 0, true)
|
|
appCtx.sendMessage(ctx, b, chatID, text, true, keyboard)
|
|
}
|
|
|
|
func (appCtx *App) callbackDockerPagination(ctx context.Context, b *bot.Bot, update *models.Update) {
|
|
if update.CallbackQuery == nil {
|
|
return
|
|
}
|
|
|
|
cb := update.CallbackQuery
|
|
parts := strings.Split(cb.Data, ":")
|
|
|
|
if len(parts) != 2 {
|
|
return
|
|
}
|
|
|
|
pageIndex, err := strconv.Atoi(parts[1])
|
|
if err != nil {
|
|
pageIndex = 0
|
|
}
|
|
|
|
text, keyboard, err := appCtx.renderContainerPage(ctx, pageIndex, false)
|
|
if err != nil {
|
|
appCtx.logger.Error("Pagination render failed", "error", err)
|
|
b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{
|
|
CallbackQueryID: cb.ID,
|
|
Text: appCtx.T("e.container.list"),
|
|
ShowAlert: true,
|
|
})
|
|
return
|
|
}
|
|
|
|
b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{
|
|
CallbackQueryID: cb.ID,
|
|
})
|
|
|
|
_, err = b.EditMessageText(ctx, &bot.EditMessageTextParams{
|
|
ChatID: cb.Message.Message.Chat.ID,
|
|
MessageID: cb.Message.Message.ID,
|
|
Text: text,
|
|
ParseMode: "html",
|
|
ReplyMarkup: keyboard,
|
|
})
|
|
|
|
if err != nil {
|
|
appCtx.logger.Warn("Failed pagination edit", "error", err)
|
|
return
|
|
}
|
|
}
|
|
|
|
func (appCtx *App) callbackDockerListRefresh(ctx context.Context, b *bot.Bot, update *models.Update) {
|
|
if update.CallbackQuery == nil {
|
|
return
|
|
}
|
|
|
|
cb := update.CallbackQuery
|
|
parts := strings.Split(cb.Data, ":")
|
|
|
|
if len(parts) != 2 {
|
|
return
|
|
}
|
|
|
|
pageIndex, err := strconv.Atoi(parts[1])
|
|
if err != nil {
|
|
pageIndex = 0
|
|
}
|
|
|
|
text, keyboard, err := appCtx.renderContainerPage(ctx, pageIndex, true)
|
|
if err != nil {
|
|
appCtx.logger.Error("Refresh render failed", "error", err)
|
|
b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{
|
|
CallbackQueryID: cb.ID,
|
|
Text: appCtx.T("e.container.list"),
|
|
ShowAlert: true,
|
|
})
|
|
return
|
|
}
|
|
|
|
b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{
|
|
CallbackQueryID: cb.ID,
|
|
Text: "🔄 Actualizado",
|
|
})
|
|
|
|
_, err = b.EditMessageText(ctx, &bot.EditMessageTextParams{
|
|
ChatID: cb.Message.Message.Chat.ID,
|
|
MessageID: cb.Message.Message.ID,
|
|
Text: text,
|
|
ParseMode: "html",
|
|
ReplyMarkup: keyboard,
|
|
})
|
|
|
|
if err != nil {
|
|
appCtx.logger.Warn("Failed refresh edit", "error", err)
|
|
return
|
|
}
|
|
}
|
|
|
|
func (appCtx *App) callbackDockerBack(ctx context.Context, b *bot.Bot, update *models.Update) {
|
|
if update.CallbackQuery == nil {
|
|
return
|
|
}
|
|
|
|
cb := update.CallbackQuery
|
|
parts := strings.Split(cb.Data, ":")
|
|
|
|
if len(parts) != 2 {
|
|
return
|
|
}
|
|
|
|
pageIndex, err := strconv.Atoi(parts[1])
|
|
if err != nil {
|
|
pageIndex = 0
|
|
}
|
|
|
|
text, keyboard, err := appCtx.renderContainerPage(ctx, pageIndex, false)
|
|
if err != nil {
|
|
appCtx.logger.Error("Back render failed", "error", err)
|
|
b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{
|
|
CallbackQueryID: cb.ID,
|
|
Text: appCtx.T("e.container.list"),
|
|
ShowAlert: true,
|
|
})
|
|
return
|
|
}
|
|
|
|
b.AnswerCallbackQuery(ctx, &bot.AnswerCallbackQueryParams{
|
|
CallbackQueryID: cb.ID,
|
|
})
|
|
|
|
_, err = b.EditMessageText(ctx, &bot.EditMessageTextParams{
|
|
ChatID: cb.Message.Message.Chat.ID,
|
|
MessageID: cb.Message.Message.ID,
|
|
Text: text,
|
|
ParseMode: "html",
|
|
ReplyMarkup: keyboard,
|
|
})
|
|
|
|
if err != nil {
|
|
appCtx.logger.Warn("Failed back edit", "error", err)
|
|
return
|
|
}
|
|
}
|