فهرست منبع

refactor: replace tview application methods with direct screen initialization

- Replace EnableMouse, SetInputCapture, EnablePaste with direct screen setup
- Add explicit screen creation and initialization in run method
- Move mouse enablement, title setting, and focus/paste features to screen level
- Update SetRoot calls to remove fullscreen parameter
ayn2op 4 ماه پیش
والد
کامیت
99be800e98
3فایلهای تغییر یافته به همراه30 افزوده شده و 10 حذف شده
  1. 23 7
      cmd/application.go
  2. 3 1
      go.mod
  3. 4 2
      go.sum

+ 23 - 7
cmd/application.go

@@ -1,10 +1,12 @@
 package cmd
 
 import (
+	"fmt"
 	"log/slog"
 
 	"github.com/ayn2op/discordo/internal/clipboard"
 	"github.com/ayn2op/discordo/internal/config"
+	"github.com/ayn2op/discordo/internal/consts"
 	"github.com/ayn2op/discordo/internal/login"
 	"github.com/ayn2op/tview"
 	"github.com/gdamore/tcell/v3"
@@ -27,28 +29,42 @@ func newApplication(cfg *config.Config) *application {
 		slog.Error("failed to init clipboard", "err", err)
 	}
 
-	app.
-		EnableMouse(cfg.Mouse).
-		SetInputCapture(app.onInputCapture).
-		EnablePaste(true)
+	app.SetInputCapture(app.onInputCapture)
 	return app
 }
 
 func (a *application) run(token string) error {
+	screen, err := tcell.NewScreen()
+	if err != nil {
+		return fmt.Errorf("failed to create screen: %w", err)
+	}
+
+	if err := screen.Init(); err != nil {
+		return fmt.Errorf("failed to init screen: %w", err)
+	}
+
+	if a.cfg.Mouse {
+		screen.EnableMouse()
+	}
+
+	screen.SetTitle(consts.Name)
+	screen.EnablePaste()
+	screen.EnableFocus()
+	a.SetScreen(screen)
+
 	if token == "" {
 		loginForm := login.NewForm(a.Application, a.cfg, func(token string) {
 			if err := a.run(token); err != nil {
 				slog.Error("failed to run application", "err", err)
 			}
 		})
-		a.SetRoot(loginForm, true)
+		a.SetRoot(loginForm)
 	} else {
 		a.chatView = newChatView(a.Application, a.cfg)
 		if err := openState(token); err != nil {
 			return err
 		}
-
-		a.SetRoot(a.chatView, true)
+		a.SetRoot(a.chatView)
 	}
 
 	return a.Run()

+ 3 - 1
go.mod

@@ -2,10 +2,12 @@ module github.com/ayn2op/discordo
 
 go 1.25.3
 
+// replace github.com/ayn2op/tview => ../tview
+
 require (
 	github.com/BurntSushi/toml v1.6.0
 	github.com/andybalholm/brotli v1.2.0
-	github.com/ayn2op/tview v0.0.0-20251223015859-f555ac780c93
+	github.com/ayn2op/tview v0.0.0-20251225004535-05fe7a1d5ec7
 	github.com/deckarep/gosx-notifier v0.0.0-20180201035817-e127226297fb
 	github.com/diamondburned/arikawa/v3 v3.6.1-0.20250928004212-a891a653eb26
 	github.com/diamondburned/ningen/v3 v3.0.1-0.20250920191746-98fbd92e134d

+ 4 - 2
go.sum

@@ -27,10 +27,12 @@ github.com/akavel/rsrc v0.10.2 h1:Zxm8V5eI1hW4gGaYsJQUhxpjkENuG91ki8B4zCrvEsw=
 github.com/akavel/rsrc v0.10.2/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c=
 github.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ=
 github.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY=
-github.com/ayn2op/tview v0.0.0-20251221223224-6c423ddda063 h1:vhHyOG5KRHCupPzFT0cw6nww3O4mzaKowW4LoP9zpVg=
-github.com/ayn2op/tview v0.0.0-20251221223224-6c423ddda063/go.mod h1:UW4EyJvaPc0vQMzlE5eJe4KVpeQ2cq091kfQCYHGsLI=
 github.com/ayn2op/tview v0.0.0-20251223015859-f555ac780c93 h1:CLqahwq0StRQrUMPIzWgJD7zeKotQOftZpJ4Tjn2z2I=
 github.com/ayn2op/tview v0.0.0-20251223015859-f555ac780c93/go.mod h1:UW4EyJvaPc0vQMzlE5eJe4KVpeQ2cq091kfQCYHGsLI=
+github.com/ayn2op/tview v0.0.0-20251225003719-d628ee1dee08 h1:pyo+tn/yBdJsWmuWfO9aW7mbDa0jeZJi8kGyFoZdQoo=
+github.com/ayn2op/tview v0.0.0-20251225003719-d628ee1dee08/go.mod h1:UW4EyJvaPc0vQMzlE5eJe4KVpeQ2cq091kfQCYHGsLI=
+github.com/ayn2op/tview v0.0.0-20251225004535-05fe7a1d5ec7 h1:K9l9ZxGjTFVNX5KTfI3y7m+6Y5utOjJsBBoi320wPmY=
+github.com/ayn2op/tview v0.0.0-20251225004535-05fe7a1d5ec7/go.mod h1:UW4EyJvaPc0vQMzlE5eJe4KVpeQ2cq091kfQCYHGsLI=
 github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
 github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
 github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=