summaryrefslogtreecommitdiff
path: root/internal/client/api
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2024-11-27 07:47:30 +0200
committerKyren223 <Kyren223@proton.me>2024-11-27 07:47:30 +0200
commit8ed2527a8879e01f4f3f741feebaf86fee2bf18d (patch)
treea8b426c2f78745c3e4c475b5baf14c95cd27db17 /internal/client/api
parent195a2912b7c67393b806dedb058590d8bc201186 (diff)
Started working on refactoring packet types and some changes to the SQL
schema
Diffstat (limited to 'internal/client/api')
-rw-r--r--internal/client/api/api.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/internal/client/api/api.go b/internal/client/api/api.go
index d91de46..cfc4ce9 100644
--- a/internal/client/api/api.go
+++ b/internal/client/api/api.go
@@ -92,3 +92,39 @@ func GetUserById(id snowflake.ID) tea.Cmd {
}
}
+func CreateServer(
+ name string,
+ icon string,
+ bgHexColor string,
+ fgHexColor string,
+ isPublic bool,
+) tea.Cmd {
+ return func() tea.Msg {
+ requestName := "CreateServer"
+ log.Println("request", requestName, "sent")
+ request := packet.CreateNetwork{
+ Name: name,
+ Icon: icon,
+ BgHexColor: bgHexColor,
+ FgHexColor: fgHexColor,
+ IsPublic: isPublic,
+ }
+ response, ok := <-gateway.Send(&request)
+ if !ok {
+ return fmt.Errorf("request %s timeout", requestName)
+ }
+ log.Println("request", requestName, "received response")
+
+ switch response := response.(type) {
+ case *packet.ErrorMessage:
+ return errors.New(response.Error)
+ case *packet.Users:
+ if len(response.Users) == 0 {
+ return fmt.Errorf("requested user id %v not found", id)
+ }
+ assert.Assert(len(response.Users) == 1, "server must return only one user with the matching id")
+ return UserProfileUpdate(response.Users[0])
+ }
+ return fmt.Errorf("received invalid response from server: %v", response.Type())
+ }
+}