@onyx-p/imlib-web 2.7.5 → 2.7.7
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/index.esm.js +57 -7
- package/index.umd.js +57 -6
- package/package.json +1 -1
- package/types/index.d.ts +2 -1
- package/types/types.d.ts +6 -0
package/index.esm.js
CHANGED
|
@@ -21904,6 +21904,28 @@ const transReferenceMessage2IReferenceMessage = (originalReferenceMessage, messa
|
|
|
21904
21904
|
};
|
|
21905
21905
|
};
|
|
21906
21906
|
|
|
21907
|
+
function getSafeMessageLog(message) {
|
|
21908
|
+
const safeMessage = {
|
|
21909
|
+
...message
|
|
21910
|
+
};
|
|
21911
|
+
if ('content' in safeMessage) {
|
|
21912
|
+
delete safeMessage.content;
|
|
21913
|
+
}
|
|
21914
|
+
if ('quotedReply' in safeMessage) {
|
|
21915
|
+
delete safeMessage.quotedReply;
|
|
21916
|
+
}
|
|
21917
|
+
if ('msgPreContent' in safeMessage) {
|
|
21918
|
+
delete safeMessage.msgPreContent;
|
|
21919
|
+
}
|
|
21920
|
+
if ('msgPostContent' in safeMessage) {
|
|
21921
|
+
delete safeMessage.msgPostContent;
|
|
21922
|
+
}
|
|
21923
|
+
return safeMessage;
|
|
21924
|
+
}
|
|
21925
|
+
function getSafeMessagesLog(messages) {
|
|
21926
|
+
return messages.map(getSafeMessageLog);
|
|
21927
|
+
}
|
|
21928
|
+
|
|
21907
21929
|
const STATUSMESSAGE_ALIVE_TIMEMS = 6000;
|
|
21908
21930
|
function parse(orginalMsgs, referenceMsgs, callback) {
|
|
21909
21931
|
const msgs = new Map();
|
|
@@ -22017,7 +22039,7 @@ const parseSingleDialogMessages = (dialogId, originalMessageList, aesKey, refere
|
|
|
22017
22039
|
if (notEmptyString(receivedMessage.messageUId)) {
|
|
22018
22040
|
contentList.push(receivedMessage);
|
|
22019
22041
|
} else {
|
|
22020
|
-
logger$1.error('message is invalid', item);
|
|
22042
|
+
logger$1.error('message is invalid', getSafeMessageLog(item));
|
|
22021
22043
|
}
|
|
22022
22044
|
}
|
|
22023
22045
|
});
|
|
@@ -22495,7 +22517,7 @@ class MessageCache {
|
|
|
22495
22517
|
resolve();
|
|
22496
22518
|
};
|
|
22497
22519
|
transaction.onerror = event => {
|
|
22498
|
-
logger$1.error('Transaction failed in addMessages:', messages, transaction.error);
|
|
22520
|
+
logger$1.error('Transaction failed in addMessages:', getSafeMessagesLog(messages), transaction.error);
|
|
22499
22521
|
if (isDef(isEnd)) {
|
|
22500
22522
|
this.updateDialogState(dialogId, isEnd).catch(err => logger$1.error('Failed to update dialog state after transaction error:', err)).finally(() => resolve());
|
|
22501
22523
|
} else {
|
|
@@ -22516,7 +22538,7 @@ class MessageCache {
|
|
|
22516
22538
|
}
|
|
22517
22539
|
store.put(messageToStore);
|
|
22518
22540
|
} catch (err) {
|
|
22519
|
-
logger$1.error('Error processing message:', message, err);
|
|
22541
|
+
logger$1.error('Error processing message:', getSafeMessageLog(message), err);
|
|
22520
22542
|
}
|
|
22521
22543
|
}
|
|
22522
22544
|
} catch (err) {
|
|
@@ -23097,7 +23119,7 @@ class MessageLoader {
|
|
|
23097
23119
|
RecallMessageStore.remove(m.content.messageUId);
|
|
23098
23120
|
recallMessageUIds.push(m.content.messageUId);
|
|
23099
23121
|
} else {
|
|
23100
|
-
logger$1.error('recallMessage
|
|
23122
|
+
logger$1.error('recallMessage\'s messageUId is undefined', getSafeMessageLog(m));
|
|
23101
23123
|
}
|
|
23102
23124
|
} else if (m.messageUId) {
|
|
23103
23125
|
m.isOffLineMessage = isOffLineMessage;
|
|
@@ -23113,7 +23135,7 @@ class MessageLoader {
|
|
|
23113
23135
|
this.handleBurnAfterReadingMessage(m);
|
|
23114
23136
|
}
|
|
23115
23137
|
} else {
|
|
23116
|
-
logger$1.error('message
|
|
23138
|
+
logger$1.error('message\'s messageUId is undefined', getSafeMessageLog(m));
|
|
23117
23139
|
}
|
|
23118
23140
|
});
|
|
23119
23141
|
let deletedMessageIndexes = [];
|
|
@@ -23284,7 +23306,7 @@ const GroupCloseBurnAfterReadingMessage = registerMessageType$1(NotiMessageTypes
|
|
|
23284
23306
|
|
|
23285
23307
|
const RecallCommandMessage = registerMessageType$1(MessageTypes.RECALL, true, false, false);
|
|
23286
23308
|
|
|
23287
|
-
const DEFAULT_SOCKET_URI = 'wss://
|
|
23309
|
+
const DEFAULT_SOCKET_URI = 'wss://test.mp.net';
|
|
23288
23310
|
class LibLoader {
|
|
23289
23311
|
options;
|
|
23290
23312
|
connectionStatus = ConnectionStatus.DISCONNECTED;
|
|
@@ -23346,6 +23368,7 @@ class LibLoader {
|
|
|
23346
23368
|
registerMessage(MessageTypes.GROUP_INVITATION, InvitationMessage);
|
|
23347
23369
|
registerMessage(MessageTypes.REDPACKET, RedEnvelopeMessage);
|
|
23348
23370
|
registerMessage(MessageTypes.TRANSFER, TransferMessage);
|
|
23371
|
+
registerMessage(MessageTypes.LINK, LinkMessage);
|
|
23349
23372
|
registerMessage(NotiMessageTypes.GROUP_ARRIVAL_RECEIPT, GroupArrivalReceiptMessage);
|
|
23350
23373
|
registerMessage(NotiMessageTypes.GROUP_READ_RECEIPT, GroupReadReceiptMessage);
|
|
23351
23374
|
registerMessage(NotiMessageTypes.PRIVATE_ARRIVAL_RECEIPT, PrivateArrivalReceiptMessage);
|
|
@@ -31178,6 +31201,30 @@ class IMClient extends EventEmitter {
|
|
|
31178
31201
|
return this.libLoader.getConnectionStatus();
|
|
31179
31202
|
}
|
|
31180
31203
|
getServerTime = getServerTime$1;
|
|
31204
|
+
async insertMessage(conversation, content, options) {
|
|
31205
|
+
if (!content.messageId || content.messageId > getCurrentMessageId()) {
|
|
31206
|
+
content.messageId = generateNewMessageId();
|
|
31207
|
+
}
|
|
31208
|
+
ConversationManager$1.get().setConversationCacheByMessage(content);
|
|
31209
|
+
try {
|
|
31210
|
+
const cache = MessageCache$1.get();
|
|
31211
|
+
if (content.isPersited && cache) {
|
|
31212
|
+
await cache.upsertMessage(content);
|
|
31213
|
+
const cachedLatestMessage = await cache.getLatestMessage(content);
|
|
31214
|
+
let latestMessage = content;
|
|
31215
|
+
if (cachedLatestMessage && Long.fromString(cachedLatestMessage.sentTime).greaterThan(Long.fromString(content.sentTime))) {
|
|
31216
|
+
latestMessage = cachedLatestMessage;
|
|
31217
|
+
}
|
|
31218
|
+
ConversationManager$1.get().updateLatestMessage(content, latestMessage);
|
|
31219
|
+
}
|
|
31220
|
+
} catch (error) {
|
|
31221
|
+
logger$1.error('insertMessage -> ', error);
|
|
31222
|
+
}
|
|
31223
|
+
return {
|
|
31224
|
+
code: ErrorCode.SUCCESS,
|
|
31225
|
+
data: content
|
|
31226
|
+
};
|
|
31227
|
+
}
|
|
31181
31228
|
sendMessage = sendMessage$1;
|
|
31182
31229
|
sendImageMessage = sendImageMessage$1;
|
|
31183
31230
|
sendGIFMessage = sendGIFMessage$1;
|
|
@@ -32576,6 +32623,9 @@ const registerMessageType = (messageType, isPersited, isCounted, isStatusMessage
|
|
|
32576
32623
|
registerMessage(messageType, messageConstructor);
|
|
32577
32624
|
return messageConstructor;
|
|
32578
32625
|
};
|
|
32626
|
+
const insertMessage = async (conversation, content, options) => {
|
|
32627
|
+
return imClient.insertMessage(conversation, content, options);
|
|
32628
|
+
};
|
|
32579
32629
|
const sendMessage = async (conversation, message, options) => {
|
|
32580
32630
|
if (message instanceof BaseMessage === false) {
|
|
32581
32631
|
logger$1.warn('send message fail -> message parameter is not an instance of BaseMessage');
|
|
@@ -32781,4 +32831,4 @@ const getMessageByUId = async messageUId => {
|
|
|
32781
32831
|
};
|
|
32782
32832
|
};
|
|
32783
32833
|
|
|
32784
|
-
export { ChatRecordMessage, ConnectionStatus, ContactMessage, ConversationType, ErrorCode, ErrorDesc, Events, FileMessage, GIFMessage, GroupCloseBurnAfterReadingMessage, GroupOpenBurnAfterReadingMessage, VoiceMessage as HQVoiceMessage, ImageMessage, InvitationMessage, LinkMessage, LocationMessage, LogLevel, MentionedType, MessageDirection, MessageTypes, NotiMessageTypes, NotificationLevel, NotificationStatus, PrivateCloseBurnAfterReadingMessage, PrivateOpenBurnAfterReadingMessage, RecallCommandMessage, ReceivedStatus, RedEnvelopeMessage, SentStatus, TextMessage, TransferMessage, VideoMessage, addEventListener, clearAllMessagesUnreadStatus, clearBurnAfterReadingExpiredMessages, clearHistoryMessages, clearMessagesUnreadStatus, clearTextMessageDraft, connect, deleteMessages, disconnect, encodeReceivedMessage2ChatRecordMsgDetail, getAllConversationState, getAllUnreadMentionedCount, getBlockedConversationList, getConnectionStatus, getConversation, getConversationList, getConversationNotificationLevel, getConversationNotificationStatus, getConversationState, getMessageById, getMessageByUId, getRemoteHistoryMessages, getServerTime, getTextMessageDraft, getTopConversationList, getTotalUnreadCount, getUnreadCount, getUnreadMentionedCount, init, logOut, mockLogin, onceEventListener, parseChatRecordMsgDetails, recallMessage, registerMessageType, removeConversation, removeEventListener, request, saveTextMessageDraft, sendFileMessage, sendGIFMessage, sendHQVoiceMessage, sendImageMessage, sendMessage, sendQuoteReplyMessage, sendReadReceipts, sendSightMessage, sendTextMessage, setConversationNotificationStatus, setConversationToTop, setUserLogged };
|
|
32834
|
+
export { ChatRecordMessage, ConnectionStatus, ContactMessage, ConversationType, ErrorCode, ErrorDesc, Events, FileMessage, GIFMessage, GroupCloseBurnAfterReadingMessage, GroupOpenBurnAfterReadingMessage, VoiceMessage as HQVoiceMessage, ImageMessage, InvitationMessage, LinkMessage, LocationMessage, LogLevel, MentionedType, MessageDirection, MessageTypes, NotiMessageTypes, NotificationLevel, NotificationStatus, PrivateCloseBurnAfterReadingMessage, PrivateOpenBurnAfterReadingMessage, RecallCommandMessage, ReceivedStatus, RedEnvelopeMessage, SentStatus, TextMessage, TransferMessage, VideoMessage, addEventListener, clearAllMessagesUnreadStatus, clearBurnAfterReadingExpiredMessages, clearHistoryMessages, clearMessagesUnreadStatus, clearTextMessageDraft, connect, deleteMessages, disconnect, encodeReceivedMessage2ChatRecordMsgDetail, getAllConversationState, getAllUnreadMentionedCount, getBlockedConversationList, getConnectionStatus, getConversation, getConversationList, getConversationNotificationLevel, getConversationNotificationStatus, getConversationState, getMessageById, getMessageByUId, getRemoteHistoryMessages, getServerTime, getTextMessageDraft, getTopConversationList, getTotalUnreadCount, getUnreadCount, getUnreadMentionedCount, init, insertMessage, logOut, mockLogin, onceEventListener, parseChatRecordMsgDetails, recallMessage, registerMessageType, removeConversation, removeEventListener, request, saveTextMessageDraft, sendFileMessage, sendGIFMessage, sendHQVoiceMessage, sendImageMessage, sendMessage, sendQuoteReplyMessage, sendReadReceipts, sendSightMessage, sendTextMessage, setConversationNotificationStatus, setConversationToTop, setUserLogged };
|
package/index.umd.js
CHANGED
|
@@ -21910,6 +21910,28 @@
|
|
|
21910
21910
|
};
|
|
21911
21911
|
};
|
|
21912
21912
|
|
|
21913
|
+
function getSafeMessageLog(message) {
|
|
21914
|
+
const safeMessage = {
|
|
21915
|
+
...message
|
|
21916
|
+
};
|
|
21917
|
+
if ('content' in safeMessage) {
|
|
21918
|
+
delete safeMessage.content;
|
|
21919
|
+
}
|
|
21920
|
+
if ('quotedReply' in safeMessage) {
|
|
21921
|
+
delete safeMessage.quotedReply;
|
|
21922
|
+
}
|
|
21923
|
+
if ('msgPreContent' in safeMessage) {
|
|
21924
|
+
delete safeMessage.msgPreContent;
|
|
21925
|
+
}
|
|
21926
|
+
if ('msgPostContent' in safeMessage) {
|
|
21927
|
+
delete safeMessage.msgPostContent;
|
|
21928
|
+
}
|
|
21929
|
+
return safeMessage;
|
|
21930
|
+
}
|
|
21931
|
+
function getSafeMessagesLog(messages) {
|
|
21932
|
+
return messages.map(getSafeMessageLog);
|
|
21933
|
+
}
|
|
21934
|
+
|
|
21913
21935
|
const STATUSMESSAGE_ALIVE_TIMEMS = 6000;
|
|
21914
21936
|
function parse(orginalMsgs, referenceMsgs, callback) {
|
|
21915
21937
|
const msgs = new Map();
|
|
@@ -22023,7 +22045,7 @@
|
|
|
22023
22045
|
if (notEmptyString(receivedMessage.messageUId)) {
|
|
22024
22046
|
contentList.push(receivedMessage);
|
|
22025
22047
|
} else {
|
|
22026
|
-
logger$1.error('message is invalid', item);
|
|
22048
|
+
logger$1.error('message is invalid', getSafeMessageLog(item));
|
|
22027
22049
|
}
|
|
22028
22050
|
}
|
|
22029
22051
|
});
|
|
@@ -22501,7 +22523,7 @@
|
|
|
22501
22523
|
resolve();
|
|
22502
22524
|
};
|
|
22503
22525
|
transaction.onerror = event => {
|
|
22504
|
-
logger$1.error('Transaction failed in addMessages:', messages, transaction.error);
|
|
22526
|
+
logger$1.error('Transaction failed in addMessages:', getSafeMessagesLog(messages), transaction.error);
|
|
22505
22527
|
if (isDef(isEnd)) {
|
|
22506
22528
|
this.updateDialogState(dialogId, isEnd).catch(err => logger$1.error('Failed to update dialog state after transaction error:', err)).finally(() => resolve());
|
|
22507
22529
|
} else {
|
|
@@ -22522,7 +22544,7 @@
|
|
|
22522
22544
|
}
|
|
22523
22545
|
store.put(messageToStore);
|
|
22524
22546
|
} catch (err) {
|
|
22525
|
-
logger$1.error('Error processing message:', message, err);
|
|
22547
|
+
logger$1.error('Error processing message:', getSafeMessageLog(message), err);
|
|
22526
22548
|
}
|
|
22527
22549
|
}
|
|
22528
22550
|
} catch (err) {
|
|
@@ -23103,7 +23125,7 @@
|
|
|
23103
23125
|
RecallMessageStore.remove(m.content.messageUId);
|
|
23104
23126
|
recallMessageUIds.push(m.content.messageUId);
|
|
23105
23127
|
} else {
|
|
23106
|
-
logger$1.error('recallMessage
|
|
23128
|
+
logger$1.error('recallMessage\'s messageUId is undefined', getSafeMessageLog(m));
|
|
23107
23129
|
}
|
|
23108
23130
|
} else if (m.messageUId) {
|
|
23109
23131
|
m.isOffLineMessage = isOffLineMessage;
|
|
@@ -23119,7 +23141,7 @@
|
|
|
23119
23141
|
this.handleBurnAfterReadingMessage(m);
|
|
23120
23142
|
}
|
|
23121
23143
|
} else {
|
|
23122
|
-
logger$1.error('message
|
|
23144
|
+
logger$1.error('message\'s messageUId is undefined', getSafeMessageLog(m));
|
|
23123
23145
|
}
|
|
23124
23146
|
});
|
|
23125
23147
|
let deletedMessageIndexes = [];
|
|
@@ -23290,7 +23312,7 @@
|
|
|
23290
23312
|
|
|
23291
23313
|
const RecallCommandMessage = registerMessageType$1(MessageTypes.RECALL, true, false, false);
|
|
23292
23314
|
|
|
23293
|
-
const DEFAULT_SOCKET_URI = 'wss://
|
|
23315
|
+
const DEFAULT_SOCKET_URI = 'wss://test.mp.net';
|
|
23294
23316
|
class LibLoader {
|
|
23295
23317
|
options;
|
|
23296
23318
|
connectionStatus = exports.ConnectionStatus.DISCONNECTED;
|
|
@@ -23352,6 +23374,7 @@
|
|
|
23352
23374
|
registerMessage(MessageTypes.GROUP_INVITATION, InvitationMessage);
|
|
23353
23375
|
registerMessage(MessageTypes.REDPACKET, RedEnvelopeMessage);
|
|
23354
23376
|
registerMessage(MessageTypes.TRANSFER, TransferMessage);
|
|
23377
|
+
registerMessage(MessageTypes.LINK, LinkMessage);
|
|
23355
23378
|
registerMessage(NotiMessageTypes.GROUP_ARRIVAL_RECEIPT, GroupArrivalReceiptMessage);
|
|
23356
23379
|
registerMessage(NotiMessageTypes.GROUP_READ_RECEIPT, GroupReadReceiptMessage);
|
|
23357
23380
|
registerMessage(NotiMessageTypes.PRIVATE_ARRIVAL_RECEIPT, PrivateArrivalReceiptMessage);
|
|
@@ -31184,6 +31207,30 @@
|
|
|
31184
31207
|
return this.libLoader.getConnectionStatus();
|
|
31185
31208
|
}
|
|
31186
31209
|
getServerTime = getServerTime$1;
|
|
31210
|
+
async insertMessage(conversation, content, options) {
|
|
31211
|
+
if (!content.messageId || content.messageId > getCurrentMessageId()) {
|
|
31212
|
+
content.messageId = generateNewMessageId();
|
|
31213
|
+
}
|
|
31214
|
+
ConversationManager$1.get().setConversationCacheByMessage(content);
|
|
31215
|
+
try {
|
|
31216
|
+
const cache = MessageCache$1.get();
|
|
31217
|
+
if (content.isPersited && cache) {
|
|
31218
|
+
await cache.upsertMessage(content);
|
|
31219
|
+
const cachedLatestMessage = await cache.getLatestMessage(content);
|
|
31220
|
+
let latestMessage = content;
|
|
31221
|
+
if (cachedLatestMessage && Long.fromString(cachedLatestMessage.sentTime).greaterThan(Long.fromString(content.sentTime))) {
|
|
31222
|
+
latestMessage = cachedLatestMessage;
|
|
31223
|
+
}
|
|
31224
|
+
ConversationManager$1.get().updateLatestMessage(content, latestMessage);
|
|
31225
|
+
}
|
|
31226
|
+
} catch (error) {
|
|
31227
|
+
logger$1.error('insertMessage -> ', error);
|
|
31228
|
+
}
|
|
31229
|
+
return {
|
|
31230
|
+
code: exports.ErrorCode.SUCCESS,
|
|
31231
|
+
data: content
|
|
31232
|
+
};
|
|
31233
|
+
}
|
|
31187
31234
|
sendMessage = sendMessage$1;
|
|
31188
31235
|
sendImageMessage = sendImageMessage$1;
|
|
31189
31236
|
sendGIFMessage = sendGIFMessage$1;
|
|
@@ -32582,6 +32629,9 @@
|
|
|
32582
32629
|
registerMessage(messageType, messageConstructor);
|
|
32583
32630
|
return messageConstructor;
|
|
32584
32631
|
};
|
|
32632
|
+
const insertMessage = async (conversation, content, options) => {
|
|
32633
|
+
return imClient.insertMessage(conversation, content, options);
|
|
32634
|
+
};
|
|
32585
32635
|
const sendMessage = async (conversation, message, options) => {
|
|
32586
32636
|
if (message instanceof BaseMessage === false) {
|
|
32587
32637
|
logger$1.warn('send message fail -> message parameter is not an instance of BaseMessage');
|
|
@@ -32837,6 +32887,7 @@
|
|
|
32837
32887
|
exports.getUnreadCount = getUnreadCount;
|
|
32838
32888
|
exports.getUnreadMentionedCount = getUnreadMentionedCount;
|
|
32839
32889
|
exports.init = init;
|
|
32890
|
+
exports.insertMessage = insertMessage;
|
|
32840
32891
|
exports.logOut = logOut;
|
|
32841
32892
|
exports.mockLogin = mockLogin;
|
|
32842
32893
|
exports.onceEventListener = onceEventListener;
|
package/package.json
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ConnectionStatus, ConversationType, NotificationLevel, NotificationStatus } from './model/statusTypes';
|
|
2
|
-
import { EventListeners, Events, GetHistoryMessageOption, GetHistoryMessageResult, IBaseConversationInfo, IConversationOption, IConversationState, IDeleteMessageOptions, IGetConversationListOptions, IImageMessageOption, IInitOption, IPromiseResult, IRecallMessageOptions, ISendBody, ISenderEnrichedMessage, ISendMessageOptions, IUploadHooks, IUploadMessageOption, ProfileInfo } from './types';
|
|
2
|
+
import { EventListeners, Events, GetHistoryMessageOption, GetHistoryMessageResult, IAsyncRes, IBaseConversationInfo, IConversationOption, IConversationState, IDeleteMessageOptions, IGetConversationListOptions, IImageMessageOption, IInitOption, IPromiseResult, IRecallMessageOptions, ISendBody, ISenderEnrichedMessage, ISendMessageOptions, IUploadHooks, IUploadMessageOption, ProfileInfo, IInsertOptions } from './types';
|
|
3
3
|
import { BaseMessage, IBaseMessageBody } from './model/baseMessage';
|
|
4
4
|
import { ITextMessageBody } from './model/messages/textMessage';
|
|
5
5
|
import IReceivedMessage from './model/iReceivedMessage';
|
|
@@ -175,6 +175,7 @@ export declare const getTopConversationList: () => IPromiseResult<IBaseConversat
|
|
|
175
175
|
* @param isStatusMessage 是否是状态消息
|
|
176
176
|
*/
|
|
177
177
|
export declare const registerMessageType: <T extends IBaseMessageBody>(messageType: number, isPersited: boolean, isCounted: boolean, isStatusMessage?: boolean) => new (content: T) => BaseMessage<T>;
|
|
178
|
+
export declare const insertMessage: (conversation: IConversationOption, content: IReceivedMessage, options?: IInsertOptions) => Promise<IAsyncRes<IReceivedMessage>>;
|
|
178
179
|
/**
|
|
179
180
|
* 发送消息
|
|
180
181
|
* @param options
|
package/types/types.d.ts
CHANGED
|
@@ -202,6 +202,12 @@ export interface IUploadMessageOption extends ISendMessageOptions {
|
|
|
202
202
|
export interface IImageMessageOption extends IUploadMessageOption {
|
|
203
203
|
thumbnailConfig?: IThumbnailConfig;
|
|
204
204
|
}
|
|
205
|
+
export interface IInsertOptions {
|
|
206
|
+
/**
|
|
207
|
+
* 插入消息是否计入未读数: true 计数 false 不计数, 默认不计数
|
|
208
|
+
*/
|
|
209
|
+
isUnread?: boolean;
|
|
210
|
+
}
|
|
205
211
|
/**
|
|
206
212
|
* 缩略图配置
|
|
207
213
|
*/
|