43 lines
1.3 KiB
Go
43 lines
1.3 KiB
Go
package handlers
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"example.com/m/bot"
|
|
"example.com/m/screens"
|
|
)
|
|
|
|
// HandleGlobalCallback обрабатывает глобальные callbacks из уведомлений
|
|
// Возвращает новый State если callback был обработан, иначе nil
|
|
func HandleGlobalCallback(callbackData string) bot.State {
|
|
// pending_channel:{channel_id} - выбор workspace для нового канала
|
|
if strings.HasPrefix(callbackData, "pending_channel:") {
|
|
parts := strings.Split(callbackData, ":")
|
|
if len(parts) == 2 {
|
|
channelID := parts[1]
|
|
return &screens.SelectWorkspace{
|
|
ChannelID: channelID,
|
|
BackState: &screens.MainMenu{},
|
|
}
|
|
}
|
|
}
|
|
|
|
// workspace_invite_accept:{invite_id} - принятие приглашения в workspace
|
|
if strings.HasPrefix(callbackData, "workspace_invite_accept:") {
|
|
parts := strings.Split(callbackData, ":")
|
|
if len(parts) == 2 {
|
|
inviteID := parts[1]
|
|
return &screens.AcceptWorkspaceInvite{
|
|
InviteID: inviteID,
|
|
}
|
|
}
|
|
}
|
|
|
|
// Здесь можно добавлять другие глобальные callback паттерны
|
|
// Например:
|
|
// if strings.HasPrefix(callbackData, "notification:") { ... }
|
|
// if strings.HasPrefix(callbackData, "alert:") { ... }
|
|
|
|
return nil
|
|
}
|