summaryrefslogtreecommitdiff
path: root/internal/client
diff options
context:
space:
mode:
Diffstat (limited to 'internal/client')
-rw-r--r--internal/client/api/api.go32
-rw-r--r--internal/client/client.go12
2 files changed, 42 insertions, 2 deletions
diff --git a/internal/client/api/api.go b/internal/client/api/api.go
index 9cfa1d4..d52b727 100644
--- a/internal/client/api/api.go
+++ b/internal/client/api/api.go
@@ -11,6 +11,7 @@ import (
"github.com/kyren223/eko/internal/data"
"github.com/kyren223/eko/internal/packet"
"github.com/kyren223/eko/pkg/assert"
+ "github.com/kyren223/eko/pkg/snowflake"
)
type AppendMessage data.Message
@@ -18,7 +19,11 @@ type AppendMessage data.Message
func SendMessage(message string) tea.Cmd {
return func() tea.Msg {
log.Println("request SendMessage sent")
- request := packet.SendMessage{Content: message}
+ frequencyId := snowflake.ID(1852771536100921344)
+ request := packet.SendMessage{
+ Content: message,
+ FrequencyID: &frequencyId,
+ }
response, ok := <-gateway.Send(&request)
if !ok {
log.Println()
@@ -36,3 +41,28 @@ func SendMessage(message string) tea.Cmd {
return fmt.Errorf("received invalid response from server: %v", response.Type())
}
}
+
+func GetMessages() tea.Msg {
+ log.Println("request GetMessages sent")
+ frequencyId := snowflake.ID(1852771536100921344)
+ request := packet.GetMessagesRange{
+ FrequencyID: &frequencyId,
+ ReceiverID: nil,
+ From: nil,
+ To: nil,
+ }
+ response, ok := <-gateway.Send(&request)
+ if !ok {
+ log.Println()
+ return errors.New("request timeout")
+ }
+ log.Println("request GetMessages received response")
+
+ switch response := response.(type) {
+ case *packet.ErrorMessage:
+ return errors.New(response.Error)
+ case *packet.Messages:
+ return response
+ }
+ return fmt.Errorf("received invalid response from server: %v", response.Type())
+}
diff --git a/internal/client/client.go b/internal/client/client.go
index b091343..2dc432c 100644
--- a/internal/client/client.go
+++ b/internal/client/client.go
@@ -83,7 +83,7 @@ func initialModel() model {
}
func (m model) Init() tea.Cmd {
- return textarea.Blink
+ return tea.Batch(textarea.Blink, api.GetMessages)
}
func (m model) View() string {
@@ -158,6 +158,16 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
return m, nil
}
+ case api.AppendMessage:
+ m.messages = append(m.messages, msg.Content)
+
+ m.viewport.SetContent(strings.Join(m.messages, "\n"))
+ m.viewport.GotoBottom()
+
+ var cmd tea.Cmd
+ m.viewport, cmd = m.viewport.Update(msg)
+ return m, cmd
+
case cursor.BlinkMsg:
var cmd tea.Cmd
m.textarea, cmd = m.textarea.Update(msg)