From 313c96613153d92e4964bef4d2469b09a9505597 Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Thu, 17 Apr 2025 10:52:47 +0200 Subject: Split views on subfiles --- pkg/ui/views/game_api.go | 59 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 pkg/ui/views/game_api.go (limited to 'pkg/ui/views/game_api.go') diff --git a/pkg/ui/views/game_api.go b/pkg/ui/views/game_api.go new file mode 100644 index 0000000..5d4edf9 --- /dev/null +++ b/pkg/ui/views/game_api.go @@ -0,0 +1,59 @@ +package views + +import ( + "encoding/json" + "fmt" + "os" + + "github.com/boozec/rahanna/internal/api/database" + tea "github.com/charmbracelet/bubbletea" +) + +func (m GameModel) handleDatabaseGameMsg(msg database.Game) GameModel { + m.game = &msg + if m.peer == "peer-2" { + m.network.Peer = msg.IP2 + } else { + m.network.Peer = msg.IP1 + } + return m +} + +func (m *GameModel) getGame() tea.Cmd { + return func() tea.Msg { + var game database.Game + + // Get authorization token + authorization, err := getAuthorizationToken() + if err != nil { + return nil + } + + // Send API request + url := fmt.Sprintf("%s/play/%d", os.Getenv("API_BASE"), m.currentGameID) + resp, err := sendAPIRequest("GET", url, nil, authorization) + if err != nil { + return nil + } + defer resp.Body.Close() + + if err := json.NewDecoder(resp.Body).Decode(&game); err != nil { + return nil + } + + // Establish peer connection + if m.peer == "peer-2" { + if game.IP2 != "" { + remote := game.IP2 + go m.network.Server.AddPeer("peer-2", remote) + } + } else { + if game.IP1 != "" { + remote := game.IP1 + go m.network.Server.AddPeer("peer-1", remote) + } + } + + return game + } +} -- cgit v1.2.3-18-g5258