restructure app state, basic server connection using inputted user info and basic mainscreen

This commit is contained in:
2021-11-14 06:19:46 +02:00
parent 4bdb4a0fb3
commit 9337b9c462
9 changed files with 210 additions and 97 deletions
+26
View File
@@ -0,0 +1,26 @@
package mainscreen
import (
"log"
tea "github.com/charmbracelet/bubbletea"
)
type ReceivedIRCCommandMsg struct {
Msg string
}
type InitialReadMsg struct{}
func InitialRead() tea.Msg {
return InitialReadMsg{}
}
func (s State) readFromServer() tea.Msg {
msg, err := s.Reader.ReadString('\n')
if err != nil {
log.Print(err)
}
return ReceivedIRCCommandMsg{Msg: msg}
}
+34
View File
@@ -0,0 +1,34 @@
package mainscreen
import (
"bufio"
"fmt"
"strings"
tea "github.com/charmbracelet/bubbletea"
"github.com/illusionman1212/gorc/parser"
)
type State struct {
content string
Reader *bufio.Reader
}
func (s State) Update(msg tea.Msg) (State, tea.Cmd) {
switch msg := msg.(type) {
case InitialReadMsg:
return s, s.readFromServer
case ReceivedIRCCommandMsg:
message := parser.ParseIRCMessage(msg.Msg)
fullMsg := fmt.Sprintf("%s %s %s", message.Source, message.Command, strings.Join(message.Parameters, " "))
s.content += fullMsg
return s, s.readFromServer
}
return s, nil
}
func (s State) View() string {
return s.content
}