-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathMessenger.txt
208 lines (166 loc) · 15 KB
/
Messenger.txt
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
Messenger регестрируется в javascript по имени messenger
Q_INVOKABLE void setMhcType(bool isMhc);
Установить тип валюты, с которой идет работа (по умолчанию mhc)
Результат вернется в функцию
msgSetWalletTypeResultJs(isMhc, errorNum, errorMessage)
Q_INVOKABLE void unlockWallet(QString address, QString password, QString passwordRsa, int timeSeconds);
Разблокировать кошелек на заданное время. При новой разблокировке старый кошелек блокируется
Результат вернется в функцию
msgUnlockWalletResultJs(address, errorNum, errorMessage)
Q_INVOKABLE void lockWallet();
Заблокировать разблокированный кошелек
Результат вернется в функцию
msgLockWalletResultJs(errorNum, errorMessage)
Q_INVOKABLE void remainingTime();
Возвращает оставшееся время разблокировки ключа
Результат вернется в функцию
msgRemainingTimeResultJs(address, remainingTime, errorNum, errorMessage)
Q_INVOKABLE void sendPubkeyAddressToBlockchain(QString address, QString feeStr, QString paramsJson);
Отправляет публичный ключ адреса в блокчейн
paramsJson как в signMessagesV3
feeStr - размер транзакции равен примерно 325
Результат вернется в функцию
msgPubkeyAddressToBlockchainResultJs("Ok"/"Not ok", errorNum, errorMessage)
Q_INVOKABLE void registerAddress(bool isForcibly, QString address, QString feeStr);
Зарегестрировать адрес в сервисе сообщений. Если адрес уже зарегестрирован (есть сохраненная инфа в bd), то не будет регестрироваться, если не выстовлен флаг isForcibly
isForcibly - перерегестрировать принудидельно (желательно выставлять в false)
Результат вернется в функцию
msgAddressAppendToMessengerJs("Ok", errorNum, errorMessage)
Q_INVOKABLE void registerAddressBlockchain(bool isForcibly, QString address, QString feeStr, QString txHash, QString blockchainName, QString blockchainServ);
Зарегестрировать адрес в сервисе сообщений. Если адрес уже зарегестрирован (есть сохраненная инфа в bd), то не будет регестрироваться, если не выстовлен флаг
Сервис сообщений возьмет публичный rsa ключ адреса из блокчейна
blockchainServ - имя блокчейна в сервисе сообщений
blockchainName - имя блокчейна для показа пользователю
txHash - хэш транзакции
Результат вернется в функцию
msgAddressAppendToMessengerBlockchainJs("Ok", errorNum, errorMessage)
Q_INVOKABLE void savePublicKeyCollocutor(bool isForcibly, QString address, QString collocutor);
Получить публичный ключ собеседника и сохранить его в bd. Если адрес уже существует (есть сохраненная инфа в bd), то не будет регестрироваться, если не выстовлен флаг isForcibly.
Если публичный ключ по данному collocutor отсутствует на сервере, то при появлении этого ключа адресу address будут приходить сообщения msgCollocutorAddedPubkeyJs, а адресу collocutor сообщения msgRequiresPubkeyJs
isForcibly - Получить принудидельно (желательно выставлять в false)
Результат вернется в функцию
msgPublicKeyCollocutorGettedJs(address, collocutor, errorNum, errorMessage)
Q_INVOKABLE void getUserInfo(QString address);
Получить информацию о юзере
Результат вернется в функцию
getUserInfoResultJs(address, result, errorNum, errorMessage)
где result json вида {\"pubkey\":\"pubkey\",\"txHash\":\"txHash\",\"blockchain_name\":\"blockchain_name\",\"is_complete\":true}
Если не is_complete, то необходимо разблокировать кошелек для того, чтобы довершить его инициализацию. Для метода getCollocutorInfo поле смысла не имеет
Q_INVOKABLE void getCollocutorInfo(QString address);
Получить информацию о собеседнике
Результат вернется в функцию
getCollocutorInfoResultJs(address, result, errorNum, errorMessage)
Q_INVOKABLE void sendMessage(QString address, QString collocutor, QString dataHex, QString timestampStr, QString feeStr);
Отправить сообщение
Результат вернется в функцию
msgMessageSendedJs(address, collocutor, errorNum, errorMessage)
Q_INVOKABLE void getLastMessageNumber(QString address);
Получить последний номер сообщения (номер сообщения сквозной для всех собеседников адреса)
Результат вернется в функцию
msgLastMessegesJs(address, number, errorNum, errorMessage)
Q_INVOKABLE void getCountMessages(QString address, const QString &collocutor, QString from);
Получить количество сообщений между собеседниками начиная с номера from
Результат вернется в функцию
msgCountMessagesJs(address, collocutor, number, errorNum, errorMessage)
Q_INVOKABLE void savePos(QString address, const QString &collocutor, QString counterStr);
Сохранить позицию прочитанного сообщения между собеседниками
Результат вернется в функцию
msgStorePosJs(address, collocutor, "Ok", errorNum, errorMessage)
Q_INVOKABLE void getSavedPos(QString address, const QString &collocutor);
Получить позицию чтения между собеседниками
Результат вернется в функцию
msgSavedPosJs(address, collocutor, number, errorNum, errorMessage)
Q_INVOKABLE void getSavedsPos(QString address);
Получить все позиции чтения. Может использоваться для восстановления списка всех диалогов
Результат вернется в функцию
msgSavedsPosJs(address, result, errorNum, errorMessage)
result - json массив вида [{"address": "addr", "counter": "pos"}]
Q_INVOKABLE void getHistoryAddress(QString address, QString from, QString to);
Получить сообщения адреса по всем собеседникам с номеров по и до
Результат вернется в функцию
msgGetHistoryAddressJs(address, result, errorNum, errorMessage)
result - json массив вида [{\"collocutor\":\"0x0039fec32dcde172da7d676e4a6bc4a9d23ad052cc43640ca3\",\"counter\":\"13\",\"fee\":\"1\",\"isConfirmed\":true,\"isDecrypter\":false,\"isInput\":false,\"data\":\"00a765\",\"timestamp\":\"1234567\"}]
где
collocutor - имя собеседника,
counter - порядковый номер сообщения
fee - fee
isConfirmed - подтверждено ли сообщение сервером (актуально для отправленных сообщений)
isDecrypter - можно ли сообщение расшифровать (актуально для отправленных сообщений. Может быть false, если база чистилась, или загрузка сообщений была с другого устройства)
isInput - входящее или исходящее сообщение
data - расшифрованное сообщение в hex (может не быть, если isDecrypter == false)
Q_INVOKABLE void getHistoryAddressAddress(QString address, QString collocutor, QString from, QString to);
Получить сообщения между собеседниками с номеров по и до
Результат вернется в функцию
msgGetHistoryAddressAddressJs(address, collocutor, result, errorNum, errorMessage)
Q_INVOKABLE void getHistoryAddressAddressCount(QString address, QString collocutor, QString count, QString to);
Получить сообщения между собеседниками количесвом count штук до номера to
Результат вернется в функцию
msgGetHistoryAddressAddressCountJs(address, collocutor, result, errorNum, errorMessage)
msgNewMessegesJs(address, lastMessageCounter, errorNum, errorMessage)
Это сообщение будет приходить при поступлении новых сообщений
Q_INVOKABLE void createChannel(QString address, QString channelTitle, QString fee);
Создает канал. Создатель становится админом канала.
Результат вернется в функцию
msgChannelCreateJs(address, channelTitle, titleSha, errorNum, errorMessage)
Все дальнейшее взаимодействие с каналом идет по titleSha
Q_INVOKABLE void addWriterToChannel(QString address, QString titleSha, QString writer);
Добавляет пользователя в канал
Результат вернется в функцию
msgAddWriterToChannelJs(address, titleSha, writer, errorNum, errorMessage)
Q_INVOKABLE void delWriterFromChannel(QString address, QString titleSha, QString writer);
Удаляет пользователя из канала
Результат вернется в функцию
msgDelWriterFromChannelJs(address, titleSha, writer, errorNum, errorMessage)
Q_INVOKABLE void sendMessageToChannel(QString address, QString titleSha, QString dataHex, QString timestampStr, QString feeStr);
Отправить незашифрованное сообщение в канал
Результат вернется в функцию
msgMessageSendedToChannelJs(address, titleSha, errorNum, errorMessage)
Q_INVOKABLE void getChannelsList(QString address);
Получить список всех каналов
Результат вернется в функцию
msgGetChannelListJs(address, result, errorNum, errorMessage)
где result - json массив вида
[{\"title\":\"title\",\"titleSha\":\"titleSha\",\"fee\":\"1\",\"isWriter\":true,\"admin\":\"admin\",\"saved_pos\":\"1234567\"}]
Q_INVOKABLE void getLastMessageChannelNumber(QString address, QString titleSha);
Получить последний номер сообщения (номер сообщения разный для разных каналов)
Результат вернется в функцию
msgGetLastMessageChannelJs(address, titleSha, number, errorNum, errorMessage)
Q_INVOKABLE void getSavedPosChannel(QString address, QString titleSha);
Получить сохранненую позицию для канала
Результат вернется в функцию
msgSavedPosChannelJs(address, titleSha, number, errorNum, errorMessage)
Q_INVOKABLE void savePosToChannel(QString address, const QString &titleSha, QString counterStr);
Сохраняет позицию чтения
Результат вернется в функцию
msgStorePosToChannelJs(address, titleSha, "Ok", errorNum, errorMessage)
Q_INVOKABLE void getHistoryAddressChannel(QString address, QString titleSha, QString from, QString to);
Получить сообщения в канале с номеров по и до
Результат вернется в функцию
msgGetHistoryAddressChannelJs(address, titleSha, result, errorNum, errorMessage)
result - json массив вида [{\"collocutor\":\"0x0039fec32dcde172da7d676e4a6bc4a9d23ad052cc43640ca3\",\"counter\":\"13\",\"fee\":\"1\",\"isConfirmed\":true,\"isDecrypter\":false,\"isInput\":false,\"data\":\"00a765\",\"timestamp\":\"1234567\",\"channel\":\"channel\"}]
где
collocutor - имя собеседника,
counter - порядковый номер сообщения
fee - fee
isConfirmed - подтверждено ли сообщение сервером (актуально для отправленных сообщений)
isDecrypter - можно ли сообщение расшифровать (актуально для отправленных сообщений. Может быть false, если база чистилась, или загрузка сообщений была с другого устройства)
isInput - входящее или исходящее сообщение
data - расшифрованное сообщение в hex
channel - titleSha канала
Q_INVOKABLE void getHistoryAddressChannelCount(QString address, QString titleSha, QString count, QString to);
Получить сообщения между собеседниками количесвом count штук до номера to
Результат вернется в функцию
msgGetHistoryAddressChannelCountJs(address, titleSha, result, errorNum, errorMessage)
Q_INVOKABLE void reEmit();
Переотправить все сообщения от мессенджера (msgAddedToChannelJs, msgDeletedFromChannelJs, msgRequiresPubkeyJs, msgCollocutorAddedPubkeyJs)
msgAddedToChannelJs(address, title, titleSha, admin, lastMessageCounter, errorNum, errorMessage)
Это сообщение будет приходить при добавлении отслеживаемого адреса в новый канал.
В том числе оно придет, если адрес сам создал этот канал
msgDeletedFromChannelJs(address, title, titleSha, admin, errorNum, errorMessage)
Это сообщение будет приходить при удалении отслеживаемого адреса из канала.
msgNewMessegesChannelJs(address, titleSha, lastMessageCounter, errorNum, errorMessage)
Это сообщение будет приходить при поступлении новых сообщений в канал
msgRequiresPubkeyJs(address, collocutor, errorNum, errorMessage)
Это сообщение будет приходить, если collocutor хочет пообщаться с адресом address (а address не предоставил свой публичный ключ). Сообщения срабатывают один раз, в бд не сохраняются
msgCollocutorAddedPubkeyJs(address, collocutor, errorNum, errorMessage)
Это сообщение будет приходить, если collocutor добавил свой публичный ключ в базу данных. Можно пробовать заново вызывать сообщение savePublicKeyCollocutor. Сообщения срабатывают один раз, в бд не сохраняются