events.go 745 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package chat
  2. import (
  3. "log/slog"
  4. "github.com/ayn2op/tview"
  5. "github.com/gdamore/tcell/v3"
  6. )
  7. type LogoutEvent struct{ tcell.EventTime }
  8. func newLogoutEvent() *LogoutEvent {
  9. event := &LogoutEvent{}
  10. event.SetEventNow()
  11. return event
  12. }
  13. func (v *Model) logout() tview.Command {
  14. return tview.EventCommand(func() tcell.Event { return newLogoutEvent() })
  15. }
  16. type QuitEvent struct{ tcell.EventTime }
  17. func NewQuitEvent() *QuitEvent {
  18. event := &QuitEvent{}
  19. event.SetEventNow()
  20. return event
  21. }
  22. func (v *Model) closeState() tview.Command {
  23. return tview.EventCommand(func() tcell.Event {
  24. if err := v.CloseState(); err != nil {
  25. slog.Error("failed to close the session", "err", err)
  26. return tcell.NewEventError(err)
  27. }
  28. return nil
  29. })
  30. }