55 lines
1.7 KiB
Go
55 lines
1.7 KiB
Go
package screens
|
||
|
||
import (
|
||
"context"
|
||
|
||
"example.com/m/bot"
|
||
"github.com/NicoNex/echotron/v3"
|
||
"github.com/rs/zerolog/log"
|
||
)
|
||
|
||
type AcceptWorkspaceInvite struct {
|
||
InviteID string
|
||
}
|
||
|
||
func (s *AcceptWorkspaceInvite) Enter(b *bot.Bot, mode bot.RenderMode) {
|
||
// Получаем JWT токен
|
||
jwt, err := b.Backend.GetJWTByTelegramID(context.Background(), b.ChatID)
|
||
if err != nil {
|
||
log.Error().Err(err).Msg("Failed to get JWT")
|
||
b.SendNew("❌ Ошибка авторизации. Попробуйте /start", bot.Keyboard())
|
||
return
|
||
}
|
||
|
||
// Принимаем приглашение
|
||
err = b.Backend.AcceptWorkspaceInvite(context.Background(), jwt, s.InviteID)
|
||
if err != nil {
|
||
log.Error().Err(err).Str("invite_id", s.InviteID).Msg("Failed to accept workspace invite")
|
||
b.SendNew("❌ Не удалось принять приглашение. Возможно, оно уже было использовано.", bot.Keyboard())
|
||
return
|
||
}
|
||
|
||
// Успешно принято
|
||
text := "✅ Вы присоединились к рабочему пространству!\n\n" +
|
||
"Администратор сможет выдать вам необходимые права в веб-интерфейсе."
|
||
|
||
b.SendNew(text, bot.Keyboard(
|
||
bot.Row(bot.Button("🏠 Главное меню", "menu")),
|
||
))
|
||
}
|
||
|
||
func (s *AcceptWorkspaceInvite) HandleCallback(b *bot.Bot, u *echotron.Update) {
|
||
if u.CallbackQuery == nil || u.CallbackQuery.Data == "" {
|
||
return
|
||
}
|
||
|
||
if u.CallbackQuery.Data == "menu" {
|
||
b.SetState(&MainMenu{}, bot.EditMessage)
|
||
}
|
||
return
|
||
}
|
||
|
||
func (s *AcceptWorkspaceInvite) HandleMessage(_ *bot.Bot, _ *echotron.Update) { return }
|
||
|
||
func (s *AcceptWorkspaceInvite) Handle(_ *bot.Bot, _ *echotron.Update) { return }
|