Skip to content
This repository has been archived by the owner on Jul 22, 2024. It is now read-only.

Commit

Permalink
Fix Showing sent messages in signal desktop
Browse files Browse the repository at this point in the history
  • Loading branch information
nanu-c committed Apr 7, 2020
1 parent 62c9aad commit 6c66a38
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 14 deletions.
2 changes: 1 addition & 1 deletion contacts.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ func RequestContactInfo() error {
Type: &t,
},
}
_, err := sendSyncMessage(omsg)
_, err := sendSyncMessage(omsg, nil)
if err != nil {
return err
}
Expand Down
27 changes: 16 additions & 11 deletions server.go
Original file line number Diff line number Diff line change
Expand Up @@ -532,6 +532,8 @@ type jsonMessage struct {

func createMessage(msg *outgoingMessage) *signalservice.DataMessage {
dm := &signalservice.DataMessage{}
now := uint64(time.Now().UnixNano() / 1000000)
dm.Timestamp = &now
if msg.msg != "" {
dm.Body = &msg.msg
}
Expand Down Expand Up @@ -694,15 +696,18 @@ var ErrRemoteGone = errors.New("the remote device is gone (probably reinstalled)

var deviceLists = map[string][]uint32{}

func buildAndSendMessage(tel string, paddedMessage []byte, isSync bool) (*sendMessageResponse, error) {
func buildAndSendMessage(tel string, paddedMessage []byte, isSync bool, timestamp *uint64) (*sendMessageResponse, error) {
bm, err := buildMessage(tel, paddedMessage, deviceLists[tel], isSync)
if err != nil {
return nil, err
}
m := make(map[string]interface{})
m["messages"] = bm
now := uint64(time.Now().UnixNano() / 1000000)
m["timestamp"] = now
if timestamp == nil {
now := uint64(time.Now().UnixNano() / 1000000)
timestamp = &now
}
m["timestamp"] = timestamp
m["destination"] = tel
body, err := json.Marshal(m)
if err != nil {
Expand Down Expand Up @@ -732,7 +737,7 @@ func buildAndSendMessage(tel string, paddedMessage []byte, isSync bool) (*sendMe
}
}
deviceLists[tel] = append(devs, j.MissingDevices...)
return buildAndSendMessage(tel, paddedMessage, isSync)
return buildAndSendMessage(tel, paddedMessage, isSync, timestamp)
}
if resp.Status == staleDevicesStatus {
dec := json.NewDecoder(resp.Body)
Expand All @@ -742,7 +747,7 @@ func buildAndSendMessage(tel string, paddedMessage []byte, isSync bool) (*sendMe
for _, id := range j.StaleDevices {
textSecureStore.DeleteSession(recID(tel), id)
}
return buildAndSendMessage(tel, paddedMessage, isSync)
return buildAndSendMessage(tel, paddedMessage, isSync, timestamp)
}
if resp.isError() {
return nil, resp
Expand All @@ -751,7 +756,7 @@ func buildAndSendMessage(tel string, paddedMessage []byte, isSync bool) (*sendMe
var smRes sendMessageResponse
dec := json.NewDecoder(resp.Body)
dec.Decode(&smRes)
smRes.Timestamp = now
smRes.Timestamp = *timestamp

log.Debugf("[textsecure] SendMessageResponse: %+v\n", smRes)
return &smRes, nil
Expand All @@ -772,7 +777,7 @@ func sendMessage(msg *outgoingMessage) (uint64, error) {
return 0, err
}

resp, err := buildAndSendMessage(msg.tel, padMessage(b), false)
resp, err := buildAndSendMessage(msg.tel, padMessage(b), false, dm.Timestamp)
if err != nil {
return 0, err
}
Expand All @@ -782,12 +787,12 @@ func sendMessage(msg *outgoingMessage) (uint64, error) {
sm := &signalservice.SyncMessage{
Sent: &signalservice.SyncMessage_Sent{
DestinationE164: &msg.tel,
Timestamp: &resp.Timestamp,
Timestamp: dm.Timestamp,
Message: dm,
},
}

_, serr := sendSyncMessage(sm)
_, serr := sendSyncMessage(sm, dm.Timestamp)
if serr != nil {
log.WithFields(log.Fields{
"error": serr,
Expand All @@ -800,7 +805,7 @@ func sendMessage(msg *outgoingMessage) (uint64, error) {
return resp.Timestamp, err
}

func sendSyncMessage(sm *signalservice.SyncMessage) (uint64, error) {
func sendSyncMessage(sm *signalservice.SyncMessage, timestamp *uint64) (uint64, error) {
if _, ok := deviceLists[config.Tel]; !ok {
deviceLists[config.Tel] = []uint32{1}
}
Expand All @@ -814,6 +819,6 @@ func sendSyncMessage(sm *signalservice.SyncMessage) (uint64, error) {
return 0, err
}

resp, err := buildAndSendMessage(config.Tel, padMessage(b), true)
resp, err := buildAndSendMessage(config.Tel, padMessage(b), true, timestamp)
return resp.Timestamp, err
}
4 changes: 2 additions & 2 deletions sync.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ func sendContactUpdate() error {
},
}

_, err = sendSyncMessage(sm)
_, err = sendSyncMessage(sm, nil)
return err
}

Expand Down Expand Up @@ -202,7 +202,7 @@ func sendGroupUpdate() error {
},
}

_, err = sendSyncMessage(sm)
_, err = sendSyncMessage(sm, nil)
return err
}

Expand Down

0 comments on commit 6c66a38

Please sign in to comment.