-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmessages.go
77 lines (63 loc) · 1.87 KB
/
messages.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package messagix
import (
"fmt"
"log"
"strconv"
"github.com/0xzer/messagix/socket"
"github.com/0xzer/messagix/table"
)
type Messages struct {
client *Client
}
func (m *Messages) SendReaction(threadId int64, messageId string, reaction string) (*table.LSTable, error) {
accId, err := strconv.Atoi(m.client.configs.browserConfigTable.CurrentUserInitialData.AccountID)
if err != nil {
return nil, fmt.Errorf("failed to convert AccountId to int64: %e", err)
}
tskm := m.client.NewTaskManager()
tskm.AddNewTask(&socket.SendReactionTask{
ThreadKey: threadId,
MessageID: messageId,
ActorID: int64(accId),
Reaction: reaction,
SendAttribution: table.MESSENGER_INBOX_IN_THREAD,
})
payload, err := tskm.FinalizePayload()
if err != nil {
log.Fatal(err)
}
packetId, err := m.client.socket.makeLSRequest(payload, 3)
if err != nil {
log.Fatal(err)
}
resp := m.client.socket.responseHandler.waitForPubResponseDetails(packetId)
if resp == nil {
return nil, fmt.Errorf("failed to receive response from socket after sending reaction. packetId: %d", packetId)
}
resp.Finish()
return &resp.Table, nil
}
func (m *Messages) DeleteMessage(messageId string, deleteForMeOnly bool) (*table.LSTable, error) {
var taskData socket.Task
if deleteForMeOnly {
taskData = &socket.DeleteMessageMeOnlyTask{MessageId: messageId,}
} else {
taskData = &socket.DeleteMessageTask{MessageId: messageId}
}
tskm := m.client.NewTaskManager()
tskm.AddNewTask(taskData)
payload, err := tskm.FinalizePayload()
if err != nil {
log.Fatal(err)
}
packetId, err := m.client.socket.makeLSRequest(payload, 3)
if err != nil {
log.Fatal(err)
}
resp := m.client.socket.responseHandler.waitForPubResponseDetails(packetId)
if resp == nil {
return nil, fmt.Errorf("failed to receive response from socket after deleting message. packetId: %d", packetId)
}
resp.Finish()
return &resp.Table, nil
}