diff options
author | Santo Cariotti <santo@dcariotti.me> | 2025-04-17 10:52:47 +0200 |
---|---|---|
committer | Santo Cariotti <santo@dcariotti.me> | 2025-04-17 10:52:47 +0200 |
commit | 313c96613153d92e4964bef4d2469b09a9505597 (patch) | |
tree | 0b7e8e58f826a2ef4821145eb27b045cf760849c /pkg/ui/views/game_api.go | |
parent | 39a594829ebddc0bc06b92465241439f81fca205 (diff) |
Split views on subfiles
Diffstat (limited to 'pkg/ui/views/game_api.go')
-rw-r--r-- | pkg/ui/views/game_api.go | 59 |
1 files changed, 59 insertions, 0 deletions
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 + } +} |