@imessaging/core 0.8.9 → 0.8.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/index.ts +3 -0
- package/src/types.ts +29 -0
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -16,6 +16,7 @@ export { createPeerKey } from "./peer-key";
|
|
|
16
16
|
export {
|
|
17
17
|
canEdit,
|
|
18
18
|
canFindByPhone,
|
|
19
|
+
canGetPeerInfo,
|
|
19
20
|
canSaveContact,
|
|
20
21
|
canMarkRead,
|
|
21
22
|
canObserveOutgoingRead,
|
|
@@ -53,6 +54,8 @@ export type {
|
|
|
53
54
|
PhoneLookupOptions,
|
|
54
55
|
PhoneLookupTransport,
|
|
55
56
|
PhoneMatch,
|
|
57
|
+
PeerInfo,
|
|
58
|
+
PeerInfoTransport,
|
|
56
59
|
EditResult,
|
|
57
60
|
EmailRecipient,
|
|
58
61
|
HeadhunterRecipient,
|
package/src/types.ts
CHANGED
|
@@ -84,6 +84,11 @@ export type OutboundMessage = {
|
|
|
84
84
|
threadId?: number;
|
|
85
85
|
documents?: OutboundDocument[];
|
|
86
86
|
buttons?: OutboundButton[][];
|
|
87
|
+
/**
|
|
88
|
+
* Снять постоянную клавиатуру (ReplyKeyboardMarkup) у собеседника. Действует без `buttons`;
|
|
89
|
+
* канал без такой клавиатуры поле не замечает.
|
|
90
|
+
*/
|
|
91
|
+
removeKeyboard?: boolean;
|
|
87
92
|
/**
|
|
88
93
|
* Как написан `text`: транспорт сам переводит разметку в формат своего канала — Telegram и MAX
|
|
89
94
|
* получают выделения, почта HTML и простой текст, hh простой текст. Не задан — прежнее поведение
|
|
@@ -99,6 +104,8 @@ export type SendResult = {
|
|
|
99
104
|
transportId: string;
|
|
100
105
|
messageId: string;
|
|
101
106
|
recipientId: string;
|
|
107
|
+
/** Получатель — взаимный контакт учётки. Нет — канал не прислал пользователя в ответе на отправку. */
|
|
108
|
+
mutualContact?: boolean;
|
|
102
109
|
};
|
|
103
110
|
|
|
104
111
|
/**
|
|
@@ -283,6 +290,8 @@ export type IncomingMessage = {
|
|
|
283
290
|
senderUsername?: string;
|
|
284
291
|
/** Как отправитель назван в канале: «Имя Фамилия» человека или название чата. */
|
|
285
292
|
senderName?: string;
|
|
293
|
+
/** Отправитель — взаимный контакт учётки. Нет — канал не сообщает или отправитель не человек. */
|
|
294
|
+
senderMutualContact?: boolean;
|
|
286
295
|
/**
|
|
287
296
|
* Как назван САМ ЧАТ: название группы или канала, в личке — имя собеседника. По нему человек
|
|
288
297
|
* выбирает чат из списка; номер `-100…` ему ничего не говорит. Нет — канал имени не прислал.
|
|
@@ -441,6 +450,26 @@ export function canFindByPhone(transport: MessageTransport): transport is PhoneL
|
|
|
441
450
|
return typeof (transport as PhoneLookupTransport).findByPhone === "function";
|
|
442
451
|
}
|
|
443
452
|
|
|
453
|
+
/** Что учётка знает о собеседнике: есть ли он в её контактах и взаимно ли. */
|
|
454
|
+
export type PeerInfo = {
|
|
455
|
+
id: string;
|
|
456
|
+
username?: string;
|
|
457
|
+
/** Собеседник в адресной книге учётки. */
|
|
458
|
+
contact: boolean;
|
|
459
|
+
/** И учётка в его книге: на взаимных не действует спам-лимит PEER_FLOOD. */
|
|
460
|
+
mutualContact: boolean;
|
|
461
|
+
};
|
|
462
|
+
|
|
463
|
+
/** Сведения о собеседнике до отправки. Без поиска по телефону: только кэш пиров и @username. */
|
|
464
|
+
export interface PeerInfoTransport extends MessageTransport {
|
|
465
|
+
/** `null` — пир не известен и разрешить его не по чему, либо это не пользователь. */
|
|
466
|
+
peerInfo(recipient: MessageRecipient): Promise<PeerInfo | null>;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
export function canGetPeerInfo(transport: MessageTransport): transport is PeerInfoTransport {
|
|
470
|
+
return typeof (transport as PeerInfoTransport).peerInfo === "function";
|
|
471
|
+
}
|
|
472
|
+
|
|
444
473
|
/** Карточка контакта в адресной книге учётки: имя и заметка о человеке, текст заметки даёт продукт. */
|
|
445
474
|
export type ContactCard = {
|
|
446
475
|
userId: string;
|