summaryrefslogtreecommitdiff
path: root/internal/client
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2024-11-02 13:14:03 +0200
committerKyren223 <Kyren223@proton.me>2024-11-02 13:18:21 +0200
commitc5064f6bbd06596ba1eb002904b9572427d71fc6 (patch)
treeed747581c2eb99758f6b66981c328f96caa7c652 /internal/client
parent7ad5f5aa60cc940dbd4c6ec6cb091e7214a3fdb4 (diff)
feat: client and server api changes to accomedate DB
Diffstat (limited to 'internal/client')
-rw-r--r--internal/client/api/api.go23
-rw-r--r--internal/client/client.go6
2 files changed, 21 insertions, 8 deletions
diff --git a/internal/client/api/api.go b/internal/client/api/api.go
index 56cf054..9cfa1d4 100644
--- a/internal/client/api/api.go
+++ b/internal/client/api/api.go
@@ -1,29 +1,38 @@
package api
import (
+ "errors"
+ "fmt"
"log"
tea "github.com/charmbracelet/bubbletea"
"github.com/kyren223/eko/internal/client/gateway"
+ "github.com/kyren223/eko/internal/data"
"github.com/kyren223/eko/internal/packet"
"github.com/kyren223/eko/pkg/assert"
)
+type AppendMessage data.Message
+
func SendMessage(message string) tea.Cmd {
return func() tea.Msg {
log.Println("request SendMessage sent")
request := packet.SendMessage{Content: message}
- responsePayload, ok := <-gateway.Send(&request)
+ response, ok := <-gateway.Send(&request)
if !ok {
- log.Println("request timeout")
- return ""
+ log.Println()
+ return errors.New("request timeout")
}
log.Println("request SendMessage received response")
- response := responsePayload.(*packet.ErrorMessage)
- assert.Assert(ok, "server should return an ErrorMessage response for a SendMessage request")
- assert.Assert(response.IsOk(), "server should always return an OK if we didn't mess up")
- return ""
+ switch response := response.(type) {
+ case *packet.ErrorMessage:
+ return errors.New(response.Error)
+ case *packet.Messages:
+ assert.Assert(len(response.Messages) == 1, "server must return only the one message that was sent")
+ return AppendMessage(response.Messages[0])
+ }
+ return fmt.Errorf("received invalid response from server: %v", response.Type())
}
}
diff --git a/internal/client/client.go b/internal/client/client.go
index 598772b..b091343 100644
--- a/internal/client/client.go
+++ b/internal/client/client.go
@@ -135,7 +135,11 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
switch msg := msg.(type) {
case *packet.Messages:
slices.SortFunc(msg.Messages, func(a, b data.Message) int {
- if a.ID - b.ID < 0 { return -1 } else { return 1 }
+ if a.ID-b.ID < 0 {
+ return -1
+ } else {
+ return 1
+ }
})
m.messages = []string{}