|
|
@@ -1,6 +1,11 @@
|
|
|
package chat
|
|
|
|
|
|
-import "github.com/gdamore/tcell/v3"
|
|
|
+import (
|
|
|
+ "log/slog"
|
|
|
+
|
|
|
+ "github.com/ayn2op/tview"
|
|
|
+ "github.com/gdamore/tcell/v3"
|
|
|
+)
|
|
|
|
|
|
type LogoutEvent struct{ tcell.EventTime }
|
|
|
|
|
|
@@ -17,3 +22,18 @@ func NewQuitEvent() *QuitEvent {
|
|
|
event.SetEventNow()
|
|
|
return event
|
|
|
}
|
|
|
+
|
|
|
+func (v *View) closeState() tcell.Event {
|
|
|
+ if err := v.CloseState(); err != nil {
|
|
|
+ slog.Error("failed to close the session", "err", err)
|
|
|
+ return tcell.NewEventError(err)
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+func (v *View) logout() tview.Command {
|
|
|
+ return tview.BatchCommand{
|
|
|
+ tview.EventCommand(v.closeState),
|
|
|
+ tview.EventCommand(func() tcell.Event { return NewLogoutEvent() }),
|
|
|
+ }
|
|
|
+}
|