59 рядки
2.0 KiB
Go
59 рядки
2.0 KiB
Go
package list
|
|
|
|
import (
|
|
"github.com/mymmrac/telego"
|
|
th "github.com/mymmrac/telego/telegohandler"
|
|
|
|
"git.entityseven.com/rilaxik/pllist/internal/domain"
|
|
"git.entityseven.com/rilaxik/pllist/internal/service"
|
|
"git.entityseven.com/rilaxik/pllist/internal/telegram/shared"
|
|
)
|
|
|
|
func (h *Handler) listsCallback(ctx *th.Context, query telego.CallbackQuery) error {
|
|
return h.showLists(ctx, shared.UserFrom(ctx).ID,
|
|
shared.QueryChatID(query), shared.QueryMessageID(query))
|
|
}
|
|
|
|
func (h *Handler) newCallback(ctx *th.Context, query telego.CallbackQuery) error {
|
|
return h.startCreateList(ctx, shared.QueryChatID(query), shared.UserFrom(ctx).TelegramID)
|
|
}
|
|
|
|
func (h *Handler) renameCallback(ctx *th.Context, query telego.CallbackQuery) error {
|
|
listID, err := shared.CallbackID(query.Data, shared.ActionListRename)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if _, err := h.access.Authorize(ctx, shared.UserFrom(ctx).ID, listID, domain.ActionEditListMeta); err != nil {
|
|
return err
|
|
}
|
|
h.pending.Set(shared.UserFrom(ctx).TelegramID, service.Pending{
|
|
Action: service.PendingRenameList,
|
|
ListID: listID,
|
|
})
|
|
return h.sender.Send(ctx, shared.QueryChatID(query), renameTitlePrompt, nil)
|
|
}
|
|
|
|
func (h *Handler) deleteCallback(ctx *th.Context, query telego.CallbackQuery) error {
|
|
listID, err := shared.CallbackID(query.Data, shared.ActionListDelete)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if _, err := h.access.Authorize(ctx, shared.UserFrom(ctx).ID, listID, domain.ActionDeleteList); err != nil {
|
|
return err
|
|
}
|
|
return h.sender.EditOrSend(ctx, shared.QueryChatID(query), shared.QueryMessageID(query),
|
|
deleteText, deleteKeyboard(listID))
|
|
}
|
|
|
|
func (h *Handler) deleteYesCallback(ctx *th.Context, query telego.CallbackQuery) error {
|
|
listID, err := shared.CallbackID(query.Data, shared.ActionListDeleteYes)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if err := h.lists.Delete(ctx, shared.UserFrom(ctx).ID, listID); err != nil {
|
|
return err
|
|
}
|
|
return h.showLists(ctx, shared.UserFrom(ctx).ID,
|
|
shared.QueryChatID(query), shared.QueryMessageID(query))
|
|
}
|