package main import ( "context" "fergalla.com/dockerbot/internal/docker" "fergalla.com/dockerbot/internal/ui" "github.com/go-telegram/bot/models" ) func (appCtx *App) renderContainerPage(ctx context.Context, pageIndex int, forceRefresh bool) (string, *models.InlineKeyboardMarkup, error) { var data []docker.ContainerBasicInfo var err error // 📦 obtener datos if forceRefresh { data, err = appCtx.containerCache.ForceRefresh() } else { data, err = appCtx.containerCache.Get() } if err != nil { return "", nil, err } totalItems := len(data) if totalItems == 0 { return appCtx.T("e.container.list.not_found"), nil, nil } pageSize := appCtx.config.PageSize totalPages := (totalItems + pageSize - 1) / pageSize // 🛑 clamp if pageIndex < 0 { pageIndex = 0 } if pageIndex >= totalPages { pageIndex = totalPages - 1 } // 🧩 construir view page := ui.Page{ Items: data, Page: pageIndex, PageSize: pageSize, TotalItems: totalItems, } // 🎨 render text, keyboard := appCtx.renderer.RenderContainerList(page) return text, keyboard, nil } func (appCtx *App) renderContainerDetail(ctx context.Context, container string, page int) (string, *models.InlineKeyboardMarkup, error) { info, err := appCtx.dockerInfo.GetContainerInfo(container) if err != nil { return "", nil, err } view := ui.ContainerDetailView{ Container: info, Page: page, } text, keyboard := appCtx.renderer.RenderContainerDetail(view) return text, keyboard, nil } func (appCtx *App) renderContainerLogs(ctx context.Context, container string, page int, tail int) (string, *models.InlineKeyboardMarkup, error) { logs, err := appCtx.dockerInfo.GetContainerLogs(container, tail) if err != nil { return "", nil, err } view := ui.ContainerLogsView{ Container: container, Logs: logs, Page: page, Tail: tail, } text, keyboard := appCtx.renderer.RenderContainerLogs(view) return text, keyboard, nil }