small changes

This commit is contained in:
Lobo 2025-10-16 12:29:45 -03:00
parent 77b1a93b30
commit d3b3a62f28
5 changed files with 27 additions and 19 deletions

View file

@ -26,6 +26,10 @@ func initCommandMap() {
} }
app.AppendSystemMessage("commands: %s", s.String()) app.AppendSystemMessage("commands: %s", s.String())
}, },
"send": func(app *App, rest string) {
app.AppendMessage(rest)
app.outgoing <- MessageEvent(rest)
},
"dial": func(app *App, rest string) { "dial": func(app *App, rest string) {
args := strings.Fields(rest) args := strings.Fields(rest)
if len(args) < 1 || len(args) > 2 { if len(args) < 1 || len(args) > 2 {

View file

@ -108,6 +108,10 @@ func (app *App) HandleTerminalEvent(ev vaxis.Event) {
app.pager.ScrollUp() app.pager.ScrollUp()
case "Down": case "Down":
app.pager.ScrollDown() app.pager.ScrollDown()
case "Page_Up":
app.pager.ScrollUpN(app.w.log.Height * 2 / 3)
case "Page_Down":
app.pager.ScrollDownN(app.w.log.Height * 2 / 3)
case "Enter": case "Enter":
app.submitTextInput() app.submitTextInput()
case "Ctrl+p": case "Ctrl+p":

View file

@ -27,7 +27,9 @@ func (ev DialEvent) HandleOutgoing(app *App) error {
var err error var err error
if app.conn != nil { if app.conn != nil {
app.incoming <- SystemMessageEvent(fmt.Sprintf("already connected to %s:%s", app.conn.host, app.conn.port)) app.incoming <- SystemMessageEvent(
fmt.Sprintf("already connected to %s:%s", app.conn.host, app.conn.port),
)
return nil return nil
} }
conn, err := net.Dial("tcp", net.JoinHostPort(ev.Host, ev.Port)) conn, err := net.Dial("tcp", net.JoinHostPort(ev.Host, ev.Port))
@ -51,8 +53,8 @@ func (ev DialEvent) HandleOutgoing(app *App) error {
if err != nil { if err != nil {
return err return err
} }
delta := time.Since(latStart).Round(time.Second) delta := time.Since(latStart)
delta = min(max(time.Second, delta*3/2), 5*time.Second) delta = min(max(time.Second, delta*3/2), 5*time.Second).Round(time.Second)
app.conn.rate = delta app.conn.rate = delta
app.conn.ticker = time.NewTicker(delta) app.conn.ticker = time.NewTicker(delta)

13
main.go
View file

@ -31,12 +31,13 @@ type App struct {
outgoing chan OutgoingEvent outgoing chan OutgoingEvent
error chan error error chan error
vx *vaxis.Vaxis vx *vaxis.Vaxis
w struct { pager *pager.Model
input *textinput.Model
w struct {
log, title, input vaxis.Window log, title, input vaxis.Window
} }
pager *pager.Model
input *textinput.Model
cfgHome string cfgHome string
} }
@ -60,7 +61,7 @@ func (app *App) AppendMessage(data string) {
vaxis.Segment{Text: data, Style: style}, vaxis.Segment{Text: data, Style: style},
vaxis.Segment{Text: "\n"}, vaxis.Segment{Text: "\n"},
) )
app.last += 1
app.pager.Offset = math.MaxInt app.pager.Offset = math.MaxInt
} }
@ -76,7 +77,7 @@ func (app *App) AppendSystemMessage(format string, args ...any) {
func (app *App) SetNick(nick string) { func (app *App) SetNick(nick string) {
nick = strings.TrimSpace(nick) nick = strings.TrimSpace(nick)
app.input.SetPrompt(fmt.Sprintf("%s: ", nick)) app.input.SetPrompt(fmt.Sprintf("[%s] ", nick))
app.input.Prompt.Attribute = vaxis.AttrBold app.input.Prompt.Attribute = vaxis.AttrBold
app.nick = nick app.nick = nick
} }

View file

@ -96,23 +96,20 @@ func (app *App) Last(n int) (num int, err error) {
return 0, err return 0, err
} }
var nsrv int
if !app.conn.Scanner.Scan() { if !app.conn.Scanner.Scan() {
return 0, app.conn.Scanner.Err() return 0, app.conn.Scanner.Err()
} }
nsrvRaw := app.conn.Scanner.Text() numRaw := app.conn.Scanner.Text()
nsrv, err = strconv.Atoi(nsrvRaw) num, err = strconv.Atoi(numRaw)
if err != nil { if err != nil {
return 0, err return 0, err
} }
if nsrv != 0 { for range num {
for range nsrv { if !app.conn.Scanner.Scan() {
if !app.conn.Scanner.Scan() { return 0, app.conn.Scanner.Err()
return 0, app.conn.Scanner.Err()
}
app.incoming <- MessageEvent(app.conn.Scanner.Text())
} }
app.incoming <- MessageEvent(app.conn.Scanner.Text())
} }
var last int var last int
@ -126,5 +123,5 @@ func (app *App) Last(n int) (num int, err error) {
} }
app.incoming <- SetLastEvent(last) app.incoming <- SetLastEvent(last)
return nsrv, nil return num, nil
} }