Skip to content

Commit

Permalink
client: register capabilities on connect
Browse files Browse the repository at this point in the history
  • Loading branch information
tulir committed Sep 3, 2024
1 parent bf63aa1 commit b1bd303
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 3 deletions.
6 changes: 6 additions & 0 deletions pkg/connector/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,12 @@ func (s *SignalClient) Disconnect() {
}

func (s *SignalClient) tryConnect(ctx context.Context, retryCount int) {
err := s.Client.RegisterCapabilities(ctx)
if err != nil {
zerolog.Ctx(ctx).Err(err).Msg("Failed to register capabilities")
} else {
zerolog.Ctx(ctx).Debug().Msg("Successfully registered capabilities")
}
ch, err := s.Client.StartReceiveLoops(ctx)
if err != nil {
zerolog.Ctx(ctx).Err(err).Msg("Failed to start receive loops")
Expand Down
29 changes: 26 additions & 3 deletions pkg/signalmeow/provisioning.go
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,31 @@ func continueProvisioning(ctx context.Context, ws *websocket.Conn, provisioningC
return provisioningMessage, err
}

var signalCapabilities = map[string]any{
"deleteSync": true,
}

var signalCapabilitiesBody = exerrors.Must(json.Marshal(signalCapabilities))

func (cli *Client) RegisterCapabilities(ctx context.Context) error {
username, password := cli.Store.BasicAuthCreds()
resp, err := web.SendHTTPRequest(ctx, http.MethodPut, "/v1/devices/capabilities", &web.HTTPReqOpt{
Body: signalCapabilitiesBody,
Username: &username,
Password: &password,
ContentType: web.ContentTypeJSON,
})
if resp != nil {
_ = resp.Body.Close()
}
if err != nil {
return err
} else if resp.StatusCode >= 400 {
return fmt.Errorf("unexpected status code %d", resp.StatusCode)
}
return nil
}

func confirmDevice(
ctx context.Context,
username string,
Expand Down Expand Up @@ -383,9 +408,7 @@ func confirmDevice(
"name": encryptedDeviceName,
"registrationId": aciRegistrationID,
"pniRegistrationId": pniRegistrationID,
"capabilities": map[string]any{
"deleteSync": true,
},
"capabilities": signalCapabilities,
},
"aciSignedPreKey": aciSignedPreKeyJson,
"pniSignedPreKey": pniSignedPreKeyJson,
Expand Down

0 comments on commit b1bd303

Please sign in to comment.