Files
meowlib/client/invitation/server/step4.go

45 lines
1.1 KiB
Go
Raw Normal View History

2026-04-11 22:05:30 +02:00
package server
import (
"errors"
"forge.redroom.link/yves/meowlib/client"
)
// Step4PostConfirmation builds and returns the packed server messages that send the
// invitee's confirmation to the initiator through the initiator's servers.
func Step4PostConfirmation(invitationId string) ([][]byte, error) {
id := client.GetConfig().GetIdentity()
peer := id.Peers.GetFromInvitationId(invitationId)
if peer == nil {
return nil, errors.New("no peer for invitation id " + invitationId)
}
step4msg, err := peer.BuildInvitationStep4Message()
if err != nil {
return nil, err
}
packedMsg, err := peer.ProcessOutboundUserMessage(step4msg)
if err != nil {
return nil, err
}
var results [][]byte
for _, srvUid := range peer.ContactPullServers {
srv, err := id.MessageServers.LoadServer(srvUid)
if err != nil {
continue
}
toSrvMsg := srv.BuildToServerMessageFromUserMessage(packedMsg)
bytemsg, err := srv.ProcessOutboundMessage(toSrvMsg)
if err != nil {
continue
}
results = append(results, bytemsg)
}
if len(results) == 0 {
return nil, errors.New("could not build message for any initiator server")
}
return results, nil
}