@rongcloud/im-kit 5.36.0

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.
@@ -0,0 +1,1646 @@
1
+ import { IPushConfig, IConversationOption, RCConnectionStatus, ErrorCode, LogL, PluginContext, ILogger, IPluginGenerator } from '@rongcloud/engine';
2
+ export { IPushConfig } from '@rongcloud/engine';
3
+ import { IAReceivedMessage, ReadReceiptInfoV5, ConversationType, NotificationLevel, BaseMessage, ISendMessageOptions } from '@rongcloud/imlib-next';
4
+
5
+ /**
6
+ * 功能开关定义
7
+ */
8
+ declare enum RCKitCommand {
9
+ /**
10
+ * 显示打开的会话界面的链接状态提醒
11
+ * * true - 显示(Default)
12
+ * * false - 隐藏
13
+ */
14
+ SHOW_CONNECTION_STATUS = "SHOW_CONNECTION_STATUS",
15
+ /**
16
+ * 显示消息已读与已发送状态
17
+ * * true - 开启(Default)
18
+ * * false - 关闭,仅展示发送中、发送失败状态
19
+ */
20
+ SHOW_MESSAGE_STATE = "SHOW_MESSAGE_STATE",
21
+ /**
22
+ * 进入会话时是否默认展示最新消息,仅 Electron 平台支持修改,Web 平台默认展示最新消息,修改无效。
23
+ * * true - 进入会话,会话中展示的是最新消息(Default)
24
+ * * false - 进入会话,会话中展示的是最近已读消息
25
+ */
26
+ FOCUS_ON_LATEST_MESSAGE = "FOCUS_ON_LATEST_MESSAGE",
27
+ /**
28
+ * '@所有人'功能开关
29
+ * * true - 开启
30
+ * * false - 关闭(Default)
31
+ */
32
+ AT_ALL = "AT_ALL",
33
+ /**
34
+ * 显示用户在线状态显示,需配合初始化时定义 `reqUserOnlineStatus` 钩子使用才能生效。
35
+ * * true - 显示
36
+ * * false - 隐藏(Default)
37
+ */
38
+ SHOW_USER_ONLINE_STATE = "SHOW_USER_ONLINE_STATE",
39
+ /**
40
+ * 引用或回复消息时,默认 @ 消息发送者
41
+ * * true - 开启(Default)
42
+ * * false - 关闭
43
+ */
44
+ PROMPT_SENDER_WHEN_QUOTE_MESSAGE = "PROMPT_SENDER_WHEN_QUOTE_MESSAGE",
45
+ /**
46
+ * 删除会话的同时,删除本地与远端的消息
47
+ * * true - 开启(Default)
48
+ * * false - 关闭
49
+ */
50
+ DELETE_MESSAGES_WHILE_DELETE_CONVERSATION = "DELETE_MESSAGES_WHILE_DELETE_CONVERSATION"
51
+ }
52
+
53
+ declare class EventDispatcher<T> {
54
+ private _listeners;
55
+ addEventListener<K extends keyof T>(type: K | string, listener: (evt: T[K]) => void, target?: any): void;
56
+ onceEventListener<K extends keyof T>(type: K | string, listener: (evt: T[K]) => void, target?: any): void;
57
+ removeEventListener<K extends keyof T>(type: K | string, listener: (evt: T[K]) => void, target?: any): void;
58
+ removeEventListeners(type: string | keyof T): void;
59
+ removeAllEventListeners(): void;
60
+ /**
61
+ * 派发事件,以同步或异步的方式执行事件监听器。
62
+ * @description
63
+ * 当 `defer` 为 `true` 时,会将事件监听器的执行推迟到下一个事件循环中,而非立即执行。
64
+ * @param event - 事件对象
65
+ * @param defer - 异步执行事件监听器,默认为 `true`。
66
+ */
67
+ dispatchEvent<K extends keyof T>(event: T[K], defer?: boolean): void;
68
+ private _handleDispatchEvent;
69
+ }
70
+
71
+ interface IRCKitCachedMessage extends IAReceivedMessage {
72
+ /**
73
+ * 对应的发送事务 ID,本地生成的消息会携带此 ID,用于匹配相关事件
74
+ */
75
+ transactionId: number;
76
+ /**
77
+ * 上传进度
78
+ * * 100 为上传完成
79
+ * * -1 为上传失败
80
+ */
81
+ progress?: number;
82
+ /**
83
+ * 待上传文件 Blob
84
+ */
85
+ file?: File;
86
+ kitReadReceiptInfo?: ReadReceiptInfoV5;
87
+ }
88
+
89
+ /** 群组会话中的汇总 @ 信息类型 */
90
+ declare enum RCKitMentionedType {
91
+ /**
92
+ * 无 @ 信息
93
+ */
94
+ NONE = 0,
95
+ /**
96
+ * 有人在群内 @ 所有人
97
+ */
98
+ AT_ALL = 1,
99
+ /**
100
+ * 有人在群内 @ 我
101
+ */
102
+ AT_ME = 2
103
+ }
104
+
105
+ /**
106
+ * 会话缓存数据结构
107
+ */
108
+ interface IRCKitCachedConversation {
109
+ /** 根据 targetId、conversationType、channelId 生成的唯一标识 */
110
+ key: string;
111
+ /** 会话 ID */
112
+ targetId: string;
113
+ /** 会话类型 */
114
+ conversationType: ConversationType;
115
+ /** Channel ID */
116
+ channelId: string;
117
+ /** 名称 */
118
+ name: string;
119
+ /** 头像 */
120
+ portraitUri: string;
121
+ /** 草稿数据 */
122
+ draft: string;
123
+ /** 最后一条消息 */
124
+ latestMessage: null | IRCKitCachedMessage;
125
+ /** 是否置顶 */
126
+ isTop: boolean;
127
+ /** 免打扰配置等级 */
128
+ notificationLevel: NotificationLevel;
129
+ /** 未读消息数 */
130
+ unreadCount: number;
131
+ /** 最后一条消息时间 */
132
+ updateTime: number;
133
+ /** 在线状态,未开启在线状态显示或未配置查询钩子的情况下,值均为 `false`; 非单聊会话均为 false */
134
+ online: boolean;
135
+ /** 群成员数量,单聊会话中始终为 0 */
136
+ memberCount: number;
137
+ /** 群组会话中的汇总 @ 信息类型 */
138
+ mentionedType: RCKitMentionedType;
139
+ /** 是否处于被标记已读状态 */
140
+ markReaded: boolean;
141
+ /** 是否处于被标记未读状态 */
142
+ markUnread: boolean;
143
+ }
144
+
145
+ /**
146
+ * 会话面板标题栏功能拓展定义
147
+ */
148
+ declare type IRCKitConversationExtension = {
149
+ /** 功能 ID,业务层自行定义 */
150
+ id: string;
151
+ /** 功能图标 */
152
+ icon: string;
153
+ /** 过滤器,用于控制对哪些会话可见,不配置的情况下默认所有会话可见 */
154
+ filter?: (conversation: IRCKitCachedConversation) => boolean;
155
+ };
156
+ declare type IRCKitPushConfigHook = (message: IRCKitCachedMessage) => IPushConfig;
157
+
158
+ interface IRCKitUserProfile {
159
+ /**
160
+ * 用户 ID
161
+ */
162
+ userId: string;
163
+ /**
164
+ * 用户名
165
+ */
166
+ name: string;
167
+ /**
168
+ * 头像 url
169
+ */
170
+ portraitUri?: string;
171
+ }
172
+ /**
173
+ * 缓存的用户数据
174
+ */
175
+ interface ICacheUserProfile extends IRCKitUserProfile {
176
+ /**
177
+ * 标识用户数据为默认数据,必要时需要从业务获取更新数据
178
+ */
179
+ usingDefault: boolean;
180
+ /**
181
+ * 头像 url
182
+ */
183
+ portraitUri: string;
184
+ /**
185
+ * 在线状态
186
+ */
187
+ online: boolean;
188
+ }
189
+ interface IRCKitUserOnlineStatus {
190
+ /**
191
+ * 用户 ID
192
+ */
193
+ userId: string;
194
+ /**
195
+ * 在线状态
196
+ */
197
+ online: boolean;
198
+ }
199
+
200
+ interface IRCKitGroupProfile {
201
+ /**
202
+ * 群组 ID
203
+ */
204
+ groupId: string;
205
+ /**
206
+ * 群组名称
207
+ */
208
+ name: string;
209
+ /**
210
+ * 群组头像 url
211
+ */
212
+ portraitUri?: string;
213
+ /**
214
+ * 群组成员数量
215
+ */
216
+ memberCount: number;
217
+ }
218
+ /**
219
+ * 群组成员信息
220
+ */
221
+ interface IRCKitGroupMemberProfile {
222
+ /**
223
+ * 用户 ID
224
+ */
225
+ userId: string;
226
+ /**
227
+ * 群内显示的昵称,若无昵称,则显示用户名称
228
+ */
229
+ nickname?: string;
230
+ }
231
+ /**
232
+ * 缓存的群组数据
233
+ */
234
+ interface ICacheGroupProfile extends IRCKitGroupProfile {
235
+ /**
236
+ * 正在使用默认数据,通常是由于从业务获取数据失败导致
237
+ */
238
+ usingDefault: boolean;
239
+ portraitUri: string;
240
+ }
241
+
242
+ interface IRCKitSystemProfile {
243
+ /**
244
+ * 系统会话 ID
245
+ */
246
+ systemId: string;
247
+ /**
248
+ * 系统会话名称
249
+ */
250
+ name: string;
251
+ /**
252
+ * 会话头像 url
253
+ */
254
+ portraitUri?: string;
255
+ }
256
+ interface ICacheSystemProfile extends IRCKitSystemProfile {
257
+ /**
258
+ * 标识为默认数据,必要时需要从业务获取更新数据
259
+ */
260
+ usingDefault: boolean;
261
+ portraitUri: string;
262
+ }
263
+
264
+ interface IRCKitServiceHooks {
265
+ /**
266
+ * 根据 userId 批量获取用户信息
267
+ * @param userIds - 用户 ID 列表
268
+ */
269
+ reqUserProfiles(userIds: string[]): Promise<IRCKitUserProfile[]>;
270
+ /**
271
+ * 根据 groupId 批量获取群组信息
272
+ * @param groupIds - 群组 ID 列表
273
+ */
274
+ reqGroupProfiles(groupIds: string[]): Promise<IRCKitGroupProfile[]>;
275
+ /**
276
+ * 批量获取系统会话信息,当会话列表中存在 ConversationType.SYSTEM 类型时,会调用此方法获取系统会话信息
277
+ * @param targetIds - 系统会话 ID 列表
278
+ */
279
+ reqSystemProfiles(targetIds: string[]): Promise<IRCKitSystemProfile[]>;
280
+ /**
281
+ * 获取群组成员信息
282
+ * @param groupId - 群组 ID
283
+ */
284
+ reqGroupMembers(groupId: string): Promise<IRCKitGroupMemberProfile[]>;
285
+ /**
286
+ * [可选]定义默认用户信息,以替换 SDK 默认初始数据,如头像、名称规则等
287
+ * @param userId - 用户 ID
288
+ */
289
+ getDefaultUserProfile?(userId: string): IRCKitUserProfile;
290
+ /**
291
+ * [可选]定义默认群组信息,以替换 SDK 默认数据,,如头像、名称规则等
292
+ * @param groupId - 群组 ID
293
+ */
294
+ getDefaultGroupProfile?(groupId: string): IRCKitGroupProfile;
295
+ /**
296
+ * [可选]定义默认系统会话信息,以替换 SDK 默认数据,,如头像、名称规则等
297
+ * @param systemId - 系统会话 ID
298
+ */
299
+ getDefaultSystemProfile?(systemId: string): IRCKitSystemProfile;
300
+ /**
301
+ * [可选]请求用户在线状态
302
+ * @param userIds - 用户 ID 列表
303
+ */
304
+ reqUserOnlineStatus?(userIds: string[]): Promise<IRCKitUserOnlineStatus[]>;
305
+ }
306
+
307
+ /**
308
+ * 语言包词条
309
+ */
310
+ interface IRCKitLanguageEntries {
311
+ 'conv.loading.msg': string;
312
+ 'conv.mentioned.me.msg': string;
313
+ 'conv.mentioned.all.msg': string;
314
+ 'conv.draft.msg': string;
315
+ 'message.list.select': string;
316
+ 'message.list.unselect': string;
317
+ 'message.list.recall.by.self': string;
318
+ 'message.list.recall.by.other': string;
319
+ 'message.list.reedit.msg': string;
320
+ 'message.list.read': string;
321
+ 'message.list.back': string;
322
+ 'message.list.reedit': string;
323
+ 'message.list.read-receipt.tooltip.all-unread': string;
324
+ 'message.list.read-receipt.tooltip.all-read': string;
325
+ 'message.list.read-receipt.tooltip.read-count': string;
326
+ 'message.list.read-receipt.tooltip.unread-count': string;
327
+ 'message-type.RC:ImgMsg': string;
328
+ 'message-type.RC:HQVCMsg': string;
329
+ 'message-type.RC:VcMsg': string;
330
+ 'message-type.RC:GIFMsg': string;
331
+ 'message-type.RC:FileMsg': string;
332
+ 'message-type.RC:SightMsg': string;
333
+ 'message-type.RC:ImgTextMsg': string;
334
+ 'message-type.RC:LBSMsg': string;
335
+ 'message-type.RC:CombineMsg': string;
336
+ 'message-type.RC:CombineV2Msg': string;
337
+ 'message-type.RC:ReferenceMsg': string;
338
+ 'message-type.unknown': string;
339
+ 'time.format.today': string;
340
+ 'time.format.yesterday': string;
341
+ 'time.format.monday': string;
342
+ 'time.format.tueday': string;
343
+ 'time.format.wedday': string;
344
+ 'time.format.thurday': string;
345
+ 'time.format.friday': string;
346
+ 'time.format.satday': string;
347
+ 'time.format.sunday': string;
348
+ 'time.format.full': string;
349
+ 'input.menu.item.photo': string;
350
+ 'input.menu.item.images': string;
351
+ 'input.menu.item.files': string;
352
+ 'input.menu.item.emoji': string;
353
+ 'input.placeholder': string;
354
+ 'input.send': string;
355
+ 'input.reply.prefix': string;
356
+ 'input.mentioned.all': string;
357
+ 'input.placeholder.search': string;
358
+ 'conversation.menu.item.add_top': string;
359
+ 'conversation.menu.item.remove_top': string;
360
+ 'conversation.menu.item.mute': string;
361
+ 'conversation.menu.item.unmute': string;
362
+ 'conversation.menu.item.mark_read': string;
363
+ 'conversation.menu.item.mark_unread': string;
364
+ 'conversation.menu.item.remove': string;
365
+ 'message.menu.item.reply': string;
366
+ 'message.menu.item.multi.choice': string;
367
+ 'message.menu.item.copy': string;
368
+ 'message.menu.item.forward': string;
369
+ 'message.menu.item.delete': string;
370
+ 'message.menu.item.speech.to.text': string;
371
+ 'message.menu.item.cancel.speech.to.text': string;
372
+ 'message.speech.to.text.failed': string;
373
+ 'message.speech.to.text.empty': string;
374
+ 'message.speech.to.text.unsupported': string;
375
+ 'message.menu.item.recall': string;
376
+ 'conversation.empty.desc': string;
377
+ 'conversation.list.empty.desc': string;
378
+ 'conversation.list.bar.title': string;
379
+ 'conversation.detail.bar.typing': string;
380
+ 'conversation.detail.bar.typing.audio': string;
381
+ 'alert.req.msg.error': string;
382
+ 'alert.pickfiles.maxcount': string;
383
+ 'alert.paste.not.supported': string;
384
+ 'alert.delete.message.failed': string;
385
+ 'alert.delete.messages.partial.failure': string;
386
+ 'alert.delete.conversation.failed': string;
387
+ /** IMLib 等与网络相关失败(如错误码 30002) */
388
+ 'alert.imlib.failed.network': string;
389
+ /** IMLib 失败通用提示 */
390
+ 'alert.imlib.failed.generic': string;
391
+ 'alert.forward.not.supported': string;
392
+ 'alert.forward.over.length': string;
393
+ 'alert.delete.over.length': string;
394
+ 'alert.send.message.maxcount': string;
395
+ 'alert.message-deleted': string;
396
+ 'alert.conversation.list.not.ready': string;
397
+ 'dialog.delete.msg': string;
398
+ 'dialog.delete.msg.confirm': string;
399
+ 'dialog.tips.msg': string;
400
+ 'dialog.cancel.msg': string;
401
+ 'dialog.delete.msg.content': string;
402
+ 'dialog.confirm.msg': string;
403
+ 'dialog.forwarding.msg': string;
404
+ 'dialog.recall.msg': string;
405
+ 'dialog.forwarding.confirm': string;
406
+ 'take-photo.send-btn.label': string;
407
+ 'take-photo.cancel-btn.label': string;
408
+ 'take-photo.retry-btn.label': string;
409
+ 'take-photo.msg.camera-starting': string;
410
+ 'take-photo.msg.camera-startup-failure': string;
411
+ 'multi-choice.menu.selected-count': string;
412
+ 'multi-choice.menu.forward-item-by-item': string;
413
+ 'multi-choice.menu.delete': string;
414
+ 'private.combine-msg.title': string;
415
+ 'group.combine-msg.title': string;
416
+ 'private.combine-msg.signal.title': string;
417
+ 'connection.status.suspended': string;
418
+ 'connection.status.disconnected': string;
419
+ 'connection.status.connecting': string;
420
+ 'toast.forward.success': string;
421
+ 'toast.copy.success': string;
422
+ }
423
+
424
+ /**
425
+ * 语言行文方向
426
+ */
427
+ declare type RCKitLanguageDirection = 'ltr' | 'rtl';
428
+
429
+ /** SDK 内置输入区菜单 ID */
430
+ declare enum RCKitInputMenuID {
431
+ /** 拍照功能按钮 */
432
+ PHOTO = "input.menu.item.photo",
433
+ /** 图片选择按钮,允许多选 */
434
+ IMAGES = "input.menu.item.images",
435
+ /** 文件选择按钮,文件选择允许选择图片,并以文件的方式发送 */
436
+ FILES = "input.menu.item.files",
437
+ /** 表情按钮 */
438
+ EMOJI = "input.menu.item.emoji",
439
+ /** + 号按钮 */
440
+ PLUS = "input.menu.item.plus"
441
+ }
442
+ /**
443
+ * Emoji 字符表情库 ID
444
+ */
445
+ declare const RCKitChatEmojiLibraryID = "RCKitChatEmojiLibraryID";
446
+ /** 输入区菜单按钮位置 */
447
+ declare enum RCKitInputMenuPosition {
448
+ /** 收入 Plus 二级菜单 */
449
+ SECONDARY_MENU = 0,
450
+ /** 输入框左侧显示 */
451
+ LEFT = 1
452
+ }
453
+ interface IRCKitInputMenuItem {
454
+ /** 菜单 ID,SDK 在派发点击事件时包含此数据,同时也通过此 ID 查询多语言 UI 展示文案 */
455
+ id: RCKitInputMenuID | string;
456
+ /** 当存在 position 相同的菜单项时,根据 order 确定排序,order 值越低排序越靠前 */
457
+ order: number;
458
+ /** 菜单图标 */
459
+ icon: string;
460
+ /** 菜单图标 */
461
+ hoverIcon?: string;
462
+ /** 过滤器 */
463
+ filter?: (conversation: IRCKitCachedConversation) => boolean;
464
+ /** 二级菜单项列表,如果存在则点击该菜单项时会显示二级菜单而不是直接执行操作 */
465
+ submenu?: IRCKitInputMenuItem[];
466
+ }
467
+ interface IRCKitInputMenu {
468
+ /** 菜单列表 */
469
+ items: IRCKitInputMenuItem[];
470
+ }
471
+ /**
472
+ * 图片表情库数据
473
+ */
474
+ interface IRCKitImageEmojiLibrary {
475
+ /**
476
+ * 表情库 ID,业务自行定义
477
+ */
478
+ id: string;
479
+ /**
480
+ * 表情库图标,用于表情面板按钮显示
481
+ */
482
+ icon: string;
483
+ /**
484
+ * 表情面板内的单项显示宽度
485
+ */
486
+ itemWidth: number;
487
+ /**
488
+ * 表情面板内的单项显示高度
489
+ */
490
+ itemHeight: number;
491
+ /**
492
+ * 表情列表
493
+ */
494
+ items: Array<IRCKitImageEmoji>;
495
+ /**
496
+ * 排序值,值越小排序越靠前
497
+ */
498
+ order: number;
499
+ }
500
+ interface IRCKitGifImageInfo {
501
+ /**
502
+ * Gif 图片尺寸,单位 Byte
503
+ */
504
+ size: number;
505
+ /**
506
+ * Gif 图片宽度
507
+ */
508
+ width: number;
509
+ /**
510
+ * Gif 图片高度
511
+ */
512
+ height: number;
513
+ }
514
+ /**
515
+ * 图片表情数据
516
+ */
517
+ interface IRCKitImageEmoji {
518
+ /**
519
+ * 网络资源托管地址, 如:https://xxxxx,地址需确保各端网络环境的可访问性
520
+ */
521
+ url: string;
522
+ /**
523
+ * 缩略图数据,需为 base64 字符串,同时也作为表情面板展示用,以避免直接原图造成流量浪费
524
+ */
525
+ thumbnail: string;
526
+ /**
527
+ * 若图片资源为 Gif 图片,且希望以 Gif 消息形式发送,则需要提供 Gif 图片信息,否则默认以静态图片消息进行发送
528
+ */
529
+ gif?: IRCKitGifImageInfo;
530
+ }
531
+ interface IRCKitChatEmojiLibrary {
532
+ /**
533
+ * 表情库图标,用于表情面板按钮显示
534
+ */
535
+ icon: string;
536
+ /**
537
+ * 字符表情数组
538
+ */
539
+ chats: string[];
540
+ }
541
+
542
+ /**
543
+ * 消息气泡对齐方式
544
+ */
545
+ declare enum RCKitBubbleLayout {
546
+ /**
547
+ * 消息气泡全部居左侧显示
548
+ */
549
+ LEFT_JUSTIFYING = "left-justifying",
550
+ /**
551
+ * 消息气泡左右分布,己方气泡显示在右侧,他人气泡显示在左侧
552
+ */
553
+ LEFT_RIGHT = "left-right"
554
+ }
555
+ interface IRCKitMessageBubbleCfg {
556
+ /** 圆角半径 */
557
+ radius?: number;
558
+ /** 消息对齐方式:左对齐 or 左右分布 */
559
+ layout?: RCKitBubbleLayout;
560
+ /** 己方气泡背景色,支持数字 (0xD2E1FE) 或 16 进制字符串 ("#D2E1FE") */
561
+ backgroundColorForMyself?: number | string;
562
+ /** 他人气泡背景色,支持数字 (0xF3F5FA) 或 16 进制字符串 ("#F3F5FA") */
563
+ backgroundColorForOthers?: number | string;
564
+ /** 己方文本颜色,支持数字 (0x020814) 或 16 进制字符串 ("#020814") */
565
+ textColorForMyself?: number | string;
566
+ /** 他人文本颜色,支持数字 (0x020814) 或 16 进制字符串 ("#020814") */
567
+ textColorForOthers?: number | string;
568
+ /**
569
+ * 单聊中展示己方头像,默认不展示
570
+ */
571
+ showMyProfileInPrivateConversation?: boolean;
572
+ /**
573
+ * 单聊中展示己方名称,默认不展示
574
+ */
575
+ showMyNameInPrivateConversation?: boolean;
576
+ /**
577
+ * 群聊中展示己方头像,默认不展示
578
+ */
579
+ showMyProfileInGroupConversation?: boolean;
580
+ /**
581
+ * 群聊中展示己方名称,默认不展示
582
+ */
583
+ showMyNameInGroupConversation?: boolean;
584
+ /**
585
+ * 单聊中展示对方头像,默认不展示
586
+ */
587
+ showOthersProfileInPrivateConversation?: boolean;
588
+ /**
589
+ * 单聊中展示对方名称,默认不展示
590
+ */
591
+ showOthersNameInPrivateConversation?: boolean;
592
+ /**
593
+ * 群聊中展示对方头像,默认展示
594
+ */
595
+ showOthersProfileInGroupConversation?: boolean;
596
+ /**
597
+ * 群聊中展示对方名称,默认不展示
598
+ */
599
+ showOthersNameInGroupConversation?: boolean;
600
+ }
601
+
602
+ /**
603
+ * 会话菜单项 ID
604
+ */
605
+ declare enum RCKitConversationMenuID {
606
+ /** 会话置顶 */
607
+ ADD_TOP = "conversation.menu.item.add_top",
608
+ /** 取消置顶 */
609
+ REMOVE_TOP = "conversation.menu.item.remove_top",
610
+ /** 会话免打扰 */
611
+ MUTE = "conversation.menu.item.mute",
612
+ /** 取消免打扰 */
613
+ UNMUTE = "conversation.menu.item.unmute",
614
+ /** 标记已读 */
615
+ MARK_READ = "conversation.menu.item.mark_read",
616
+ /** 标记未读 */
617
+ MARK_UNREAD = "conversation.menu.item.mark_unread",
618
+ /** 删除会话 */
619
+ REMOVE = "conversation.menu.item.remove"
620
+ }
621
+ interface IRCKitConversationMenuItem {
622
+ /**
623
+ * 菜单 ID,SDK 在派发点击事件时包含此数据,同时也通过此 ID 查询多语言 UI 展示文案
624
+ */
625
+ id: RCKitConversationMenuID | string;
626
+ /**
627
+ * 菜单图标
628
+ */
629
+ icon: string;
630
+ /**
631
+ * 过滤器,返回 true 时显示菜单,返回 false 时不显示菜单
632
+ * @param conversation
633
+ */
634
+ filter?: (conversation: IRCKitCachedConversation) => boolean;
635
+ }
636
+
637
+ /**
638
+ * 事件基类 Event<T, D = void, R = void>
639
+ * @template T 事件类型
640
+ * @template D 事件实例包含的数据类型定义
641
+ * @template R 事件处理器通过 `evt.sendResult(data)` 回传给事件派发者的数据类型定义
642
+ */
643
+ declare class RCKitEvent<T extends string, D = void, R = void> {
644
+ /**
645
+ * 事件类型
646
+ */
647
+ readonly type: T;
648
+ /**
649
+ * 事件处理器通过 `evt.sendResult(data)` 回传给事件派发者的数据
650
+ * - false 表示并未等待事件处理器回传数据
651
+ * - true 表示事件处理器已经回传了数据
652
+ * - function 表示事件处理器正在等待回传数据
653
+ */
654
+ private _resolve;
655
+ private _promise?;
656
+ private _stopped;
657
+ private _defaultPrevented;
658
+ /**
659
+ * 事件实例包含的数据
660
+ */
661
+ readonly data: D;
662
+ constructor(
663
+ /**
664
+ * 事件类型
665
+ */
666
+ type: T, data?: D);
667
+ /**
668
+ * @returns 是否阻止了事件的传播
669
+ */
670
+ isImmediatePropagationStopped(): boolean;
671
+ /**
672
+ * 阻止同类型监听器的调用
673
+ */
674
+ stopImmediatePropagation(): void;
675
+ /**
676
+ * @returns 是否阻止了事件的默认行为
677
+ */
678
+ isDefaultPrevented(): boolean;
679
+ /**
680
+ * 阻止事件的默认行为
681
+ * @description 该方法不会阻止事件的传播,也并非所有事件都有默认行为
682
+ */
683
+ preventDefault(): void;
684
+ /**
685
+ * 向事件派发者发送数据
686
+ * @param data
687
+ */
688
+ sendResult(data: R): void;
689
+ /**
690
+ * 等待时间监听者回传数据
691
+ * @returns
692
+ */
693
+ awaitResult(): Promise<R>;
694
+ /**
695
+ * 克隆事件实例
696
+ * @param ignoreResult 是否忽略回传数据,若为 true,则克隆的事件实例通过 `evt.sendResult(data)` 无法回传数据
697
+ * @returns
698
+ */
699
+ clone(ignoreResult: boolean): RCKitEvent<T, D, R>;
700
+ }
701
+
702
+ interface IRCKitDeleteMessageData {
703
+ /**
704
+ * 被删除的原始消息
705
+ */
706
+ target: IRCKitCachedMessage;
707
+ /**
708
+ * 替换的撤回消息,仅在撤回操作时存在
709
+ */
710
+ recallMsg?: IRCKitCachedMessage;
711
+ }
712
+ interface IRCKitConversationExtensionClick {
713
+ /** 设置拓展功能时定义的 ID */
714
+ id: string;
715
+ /** 点击功能时所处的当前会话数据 */
716
+ conversation: IRCKitCachedConversation;
717
+ }
718
+ interface IRCKitConversationMenuItemClick {
719
+ /** 会话菜单项 ID */
720
+ id: string;
721
+ /** 会话数据 */
722
+ conversation: IRCKitCachedConversation;
723
+ }
724
+ interface IRCKitInputMenuItemClick {
725
+ id: string;
726
+ conversation: IRCKitCachedConversation;
727
+ }
728
+ interface IRCKitConversationIconClick {
729
+ conversation: IConversationOption;
730
+ profile: {
731
+ name: string;
732
+ nickname?: string;
733
+ userId: string;
734
+ portraitUri: string;
735
+ };
736
+ }
737
+ interface IRCKitMessageMenuItemClick {
738
+ /** 消息菜单项 ID */
739
+ id: string;
740
+ /** 消息数据 */
741
+ message: IRCKitCachedMessage;
742
+ }
743
+ interface IRCKitMessageLinkClick {
744
+ /** mail 或者 url */
745
+ type: string;
746
+ /** 地址 */
747
+ address: string;
748
+ }
749
+ declare enum RCKitModalBtnType {
750
+ /** 取消按钮 */
751
+ CANCEL = 0,
752
+ /** 确认按钮 */
753
+ CONFIRM = 1
754
+ }
755
+ interface IRCKitConnectionStatusChange {
756
+ status: RCConnectionStatus;
757
+ code?: ErrorCode;
758
+ }
759
+ declare class ConnectionStatusChangeEvent extends RCKitEvent<'CONNECTION_STATUS_CHANGE', IRCKitConnectionStatusChange> {
760
+ constructor(status: RCConnectionStatus, code?: ErrorCode);
761
+ }
762
+ interface IRCKitConversationSelectedEventData {
763
+ conversation: IRCKitCachedConversation | null;
764
+ focusInput?: boolean;
765
+ }
766
+ declare type ConversationSelectedEvent = RCKitEvent<'CONVERSATION_SELECTED', IRCKitConversationSelectedEventData>;
767
+ declare type ConfirmEvent = RCKitEvent<'CONFIRM_EVENT', string, boolean>;
768
+ declare type AlertEvent = RCKitEvent<'ALERT_EVENT', string>;
769
+ declare enum RCKitModalForwardingType {
770
+ /** 单条转发 */
771
+ SINGLE = "single",
772
+ /** 合并转发 */
773
+ MERGE = "merge"
774
+ }
775
+ interface IRCKitModalForwardingResult {
776
+ type: RCKitModalBtnType;
777
+ list?: IRCKitCachedConversation[];
778
+ }
779
+ declare type ForwardingEvent = RCKitEvent<'FORWARDING_EVENT', RCKitModalForwardingType, IRCKitModalForwardingResult>;
780
+ interface IRCKitModalDeleteMessage {
781
+ /**
782
+ * 待删除或撤回消息
783
+ */
784
+ messages: IRCKitCachedMessage[];
785
+ }
786
+ interface IRCKitModalDeleteMessageResult {
787
+ type: RCKitModalBtnType;
788
+ }
789
+ declare type DeleteMessageModalEvent = RCKitEvent<'DELETE_MESSAGE_MODAL_EVENT', IRCKitModalDeleteMessage, IRCKitModalDeleteMessageResult>;
790
+ declare type UserProfilesUpdateEvent = RCKitEvent<'USER_PROFILES_UPDATE', ICacheUserProfile[]>;
791
+ declare type GroupProfilesUpdateEvent = RCKitEvent<'GROUP_PROFILES_UPDATE', ICacheGroupProfile[]>;
792
+ declare type GroupMembersUpdateEvent = RCKitEvent<'GROUP_MEMBERS_UPDATE', {
793
+ groupId: string;
794
+ members: IRCKitGroupMemberProfile[];
795
+ }>;
796
+ declare type SystemProfilesUpdateEvent = RCKitEvent<'SYSTEM_PROFILES_UPDATE', ICacheSystemProfile[]>;
797
+ declare type ConversationMenuItemClickEvent = RCKitEvent<'CONVERSATION_MENU_ITEM_CLICK', IRCKitConversationMenuItemClick>;
798
+ /**
799
+ * 会话列表首屏渲染事件
800
+ */
801
+ declare type ConversationListFirstScreenRenderingEvent = RCKitEvent<'CONVERSATION_LIST_RESET', IRCKitCachedConversation[]>;
802
+ declare type ConversationItemOrderChangeEvent = RCKitEvent<'CONVERSATION_ITEM_ORDER_CHANGE', {
803
+ order: number;
804
+ conversation: IRCKitCachedConversation;
805
+ }[]>;
806
+ declare type ConversationListItemChangeEvent = RCKitEvent<'CONVERSATION_ITEM_CHANGE', IRCKitCachedConversation[]>;
807
+ declare type ConversationItemRemoveEvent = RCKitEvent<'CONVERSATIN_ITEM_REMOVE', IRCKitCachedConversation[]>;
808
+ declare type MessageStateChangeEvent = RCKitEvent<'MESSAGE_STATE_CHANGE', IRCKitCachedMessage[]>;
809
+ declare type InsertNewMessagesEvent = RCKitEvent<'INSERT_NEW_MESSAGES', IRCKitCachedMessage[]>;
810
+ declare type RecvNewMessagesEvent = RCKitEvent<'RECV_NEW_MESSAGES', IRCKitCachedMessage[]>;
811
+ declare type FileUploadProgressEvent = RCKitEvent<'FILE_UPLOAD_PROGRESS', {
812
+ message: IRCKitCachedMessage;
813
+ /**
814
+ * 上传进度,与 msg.progress 一致
815
+ */
816
+ progress: number;
817
+ }>;
818
+ declare type MessagesDeletedEvent = RCKitEvent<'MESSAGES_DELETED', IRCKitDeleteMessageData[]>;
819
+ declare type BeforeSystemConversationOpenEvent = RCKitEvent<'BEFORE_SYSTEM_CONVERSATION_OPEN', IRCKitCachedConversation>;
820
+ declare type DownloadLinkEvent = RCKitEvent<'DOWNLOAD_LINK_EVENT', IRCKitCachedMessage>;
821
+ declare type FileSendFailedEvent = RCKitEvent<'FILE_SEND_FAILED_EVENT', File[]>;
822
+ declare type AudioPlayState = {
823
+ /**
824
+ * 播放进度
825
+ */
826
+ progress: number;
827
+ /**
828
+ * 播放状态
829
+ * - playing: 播放中
830
+ * - stopped: 已停止,需配合 process 确认停止原因是否为播放完成
831
+ */
832
+ status: 'playing' | 'stopped';
833
+ /**
834
+ * 播放中的音频所属消息 uid
835
+ */
836
+ messageUId: string;
837
+ /**
838
+ * 播放中的音频所属消息 transactionId
839
+ */
840
+ transactionId?: number;
841
+ };
842
+ /**
843
+ * 音频消息播放事件
844
+ */
845
+ declare type AudioPlayEvent = RCKitEvent<'AUDIO_PLAY_EVENT', AudioPlayState>;
846
+ declare type SetTextareaValueEvent = RCKitEvent<'SET_TEXTAREA_VALUE_EVENT', string>;
847
+ /**
848
+ * 语音转文字状态变更事件
849
+ */
850
+ interface IRCKitSpeechToTextStateChange {
851
+ /**
852
+ * 消息 UID
853
+ */
854
+ messageUId: string;
855
+ /**
856
+ * 转换状态
857
+ * - converting: 转换中
858
+ * - success: 转换成功
859
+ * - error: 转换失败
860
+ */
861
+ status: 'converting' | 'success' | 'error';
862
+ /**
863
+ * 转换后的文本(仅在 success 状态时存在)
864
+ */
865
+ text?: string;
866
+ /**
867
+ * 转换失败错误码(仅在接口返回 code 不为 SUCCESS 时存在)
868
+ */
869
+ errorCode?: ErrorCode;
870
+ }
871
+ declare type SpeechToTextStateChangeEvent = RCKitEvent<'SPEECH_TO_TEXT_STATE_CHANGE', IRCKitSpeechToTextStateChange>;
872
+ /**
873
+ * 内部事件类型定义
874
+ * @description - 对内事件继承对外事件定义,原因在于事件派发至外部时,外部未必会进行拦截处理,SDK 内部需要保持默认实现。
875
+ */
876
+ interface EventDefined {
877
+ /**
878
+ * 用户信息变更事件
879
+ */
880
+ USER_PROFILES_UPDATE: UserProfilesUpdateEvent;
881
+ /**
882
+ * 群组信息变更事件
883
+ */
884
+ GROUP_PROFILES_UPDATE: GroupProfilesUpdateEvent;
885
+ /**
886
+ * 群组成员信息变更事件
887
+ */
888
+ GROUP_MEMBERS_UPDATE: GroupMembersUpdateEvent;
889
+ /**
890
+ * 连接状态变更事件
891
+ */
892
+ CONNECTION_STATUS_CHANGE: ConnectionStatusChangeEvent;
893
+ /**
894
+ * 语言变更事件
895
+ */
896
+ LANGUAGE_CHANGE: RCKitEvent<'LANGUAGE_CHANGE', {
897
+ lang: string;
898
+ direction: 'ltr' | 'rtl';
899
+ }>;
900
+ /**
901
+ * 会话列表首屏渲染事件
902
+ */
903
+ CONVERSATION_LIST_RESET: ConversationListFirstScreenRenderingEvent;
904
+ /**
905
+ * 会话列表项属性变更事件
906
+ */
907
+ CONVERSATION_ITEM_CHANGE: ConversationListItemChangeEvent;
908
+ /**
909
+ * 会话列表项顺序变更事件,会话列表接收到该事件后需要重新设置元素位置,并更新 UI 元素属性展示信息
910
+ */
911
+ CONVERSATION_ITEM_ORDER_CHANGE: ConversationItemOrderChangeEvent;
912
+ /**
913
+ * 会话列表项删除事件
914
+ */
915
+ CONVERSATIN_ITEM_REMOVE: ConversationItemRemoveEvent;
916
+ /**
917
+ * 选中会话变更事件
918
+ */
919
+ CONVERSATION_SELECTED: ConversationSelectedEvent;
920
+ /**
921
+ * 系统会话信息变更事件
922
+ */
923
+ SYSTEM_PROFILES_UPDATE: SystemProfilesUpdateEvent;
924
+ /**
925
+ * 通知销毁缓存数据,该事件仅在发现新登录用户与上次登录用户不一致时触发
926
+ */
927
+ DESTROY_USER_CACHE: RCKitEvent<'DESTROY_USER_CACHE'>;
928
+ /**
929
+ * 通知初始化缓存数据,该事件仅在用户首次登录后触发一次
930
+ */
931
+ INIT_USER_CACHE: RCKitEvent<'INIT_USER_CACHE'>;
932
+ /**
933
+ * 确认弹窗事件
934
+ */
935
+ CONFIRM_EVENT: ConfirmEvent;
936
+ /**
937
+ * 弹窗提醒事件
938
+ */
939
+ ALERT_EVENT: AlertEvent;
940
+ /**
941
+ * 消息转发弹框事件
942
+ */
943
+ FORWARDING_EVENT: ForwardingEvent;
944
+ /**
945
+ * 消息删除弹框事件
946
+ */
947
+ DELETE_MESSAGE_MODAL_EVENT: DeleteMessageModalEvent;
948
+ /**
949
+ * 媒体消息弹框事件
950
+ */
951
+ MEDIA_MESSAGE_MODAL_EVENT: RCKitEvent<'MEDIA_MESSAGE_MODAL_EVENT', IRCKitCachedMessage>;
952
+ /**
953
+ * 合并转发消息弹框事件
954
+ */
955
+ COMBINE_MESSAGE_MODAL_EVENT: RCKitEvent<'COMBINE_MESSAGE_MODAL_EVENT', IRCKitCachedMessage>;
956
+ /**
957
+ * 拍照弹框事件
958
+ */
959
+ TAKE_PHOTO_MODAL_EVENT: RCKitEvent<'TAKE_PHOTO_MODAL_EVENT'>;
960
+ /**
961
+ * 消息被删除或撤回通知
962
+ */
963
+ MESSAGES_DELETED: MessagesDeletedEvent;
964
+ /**
965
+ * 接收到 SDK 内部无法处理的消息,业务层可通过监听该事件获取消息
966
+ */
967
+ UNSCHEDULED_MESSAGES: RCKitEvent<'UNSCHEDULED_MESSAGES', IAReceivedMessage[]>;
968
+ /**
969
+ * 会话菜单项点击事件
970
+ */
971
+ CONVERSATION_MENU_ITEM_CLICK: ConversationMenuItemClickEvent;
972
+ /**
973
+ * 消息菜单项点击事件
974
+ */
975
+ MESSAGE_MENU_ITEM_CLICK: RCKitEvent<'MESSAGE_MENU_ITEM_CLICK', IRCKitMessageMenuItemClick>;
976
+ /**
977
+ * 输入框菜单按钮点击事件
978
+ */
979
+ INPUT_MENU_ITEM_CLICK: RCKitEvent<'INPUT_MENU_ITEM_CLICK', IRCKitInputMenuItemClick>;
980
+ /**
981
+ * 系统会话打开前的事件,业务层可通过监听该事件拦截系统会话打开,以自定义系统会话的打开方式
982
+ */
983
+ BEFORE_SYSTEM_CONVERSATION_OPEN: BeforeSystemConversationOpenEvent;
984
+ /**
985
+ * 接收到新消息,UI 和各数据模块可根据该事件处理 UI 变更
986
+ */
987
+ RECV_NEW_MESSAGES: RecvNewMessagesEvent;
988
+ /**
989
+ * 插入新消息,UI 和各数据模块可根据该事件处理 UI 变更
990
+ */
991
+ INSERT_NEW_MESSAGES: InsertNewMessagesEvent;
992
+ /**
993
+ * 消息状态变更事件,一般为发送状态变更,或文件上传进度变更等
994
+ */
995
+ MESSAGE_STATE_CHANGE: MessageStateChangeEvent;
996
+ /**
997
+ * 上传进度变更事件
998
+ */
999
+ FILE_UPLOAD_PROGRESS: FileUploadProgressEvent;
1000
+ /**
1001
+ * 业务拓展功能按钮点击事件,直接向业务层派发
1002
+ */
1003
+ CONVERSATION_EXTENSION_CLICK: RCKitEvent<'CONVERSATION_EXTENSION_CLICK', IRCKitConversationExtensionClick>;
1004
+ /**
1005
+ * 消息列表头像点击事件
1006
+ */
1007
+ CONVERSATION_ICON_CLICK: RCKitEvent<'CONVERSATION_ICON_CLICK', IRCKitConversationIconClick>;
1008
+ /**
1009
+ * 消息列表 Header 头像点击事件
1010
+ */
1011
+ CONVERSATION_NAVI_CLICK: RCKitEvent<'CONVERSATION_NAVI_CLICK', IRCKitCachedConversation>;
1012
+ /**
1013
+ * 文本消息中链接点击事件
1014
+ */
1015
+ MESSAGE_LINK_CLICK: RCKitEvent<'MESSAGE_LINK_CLICK', IRCKitMessageLinkClick>;
1016
+ DOWNLOAD_LINK_EVENT: DownloadLinkEvent;
1017
+ FILE_SEND_FAILED_EVENT: FileSendFailedEvent;
1018
+ /** 音频消息播放事件 */
1019
+ AUDIO_PLAY_EVENT: AudioPlayEvent;
1020
+ SET_TEXTAREA_VALUE_EVENT: SetTextareaValueEvent;
1021
+ /** 语音转文字状态变更事件 */
1022
+ SPEECH_TO_TEXT_STATE_CHANGE: SpeechToTextStateChangeEvent;
1023
+ /**
1024
+ * 会话栏开关变更事件
1025
+ */
1026
+ CONVERSATION_BAR_SWITCH_CHANGE: RCKitEvent<'CONVERSATION_BAR_SWITCH_CHANGE', boolean>;
1027
+ /**
1028
+ * 会话详情返回按钮开关变更事件
1029
+ */
1030
+ CONVERSATION_DETAIL_BACK_SWITCH_CHANGE: RCKitEvent<'CONVERSATION_DETAIL_BACK_SWITCH_CHANGE', boolean>;
1031
+ /**
1032
+ * 会话栏标题变更事件
1033
+ */
1034
+ CONVERSATION_BAR_TITLE_CHANGE: RCKitEvent<'CONVERSATION_BAR_TITLE_CHANGE', string>;
1035
+ /**
1036
+ * 提示框显示事件
1037
+ */
1038
+ TOAST_EVENT: RCKitEvent<'TOAST_EVENT', {
1039
+ message: string;
1040
+ showIcon?: boolean;
1041
+ }>;
1042
+ /**
1043
+ * 调整消息列表滚动位置
1044
+ */
1045
+ ADJUST_MESSAGE_LIST_SCROLL: RCKitEvent<InnerEvent.ADJUST_MESSAGE_LIST_SCROLL>;
1046
+ }
1047
+ /**
1048
+ * 内部事件类型集合
1049
+ */
1050
+ declare enum InnerEvent {
1051
+ /**
1052
+ * 用户信息变更事件
1053
+ */
1054
+ USER_PROFILES_UPDATE = "USER_PROFILES_UPDATE",
1055
+ /**
1056
+ * 群组信息变更事件
1057
+ */
1058
+ GROUP_PROFILES_UPDATE = "GROUP_PROFILES_UPDATE",
1059
+ /**
1060
+ * 群组成员信息变更事件
1061
+ */
1062
+ GROUP_MEMBERS_UPDATE = "GROUP_MEMBERS_UPDATE",
1063
+ INIT_USER_CACHE = "INIT_USER_CACHE",
1064
+ DESTROY_USER_CACHE = "DESTROY_USER_CACHE",
1065
+ SYSTEM_PROFILES_UPDATE = "SYSTEM_PROFILES_UPDATE",
1066
+ CONVERSATION_ITEM_CHANGE = "CONVERSATION_ITEM_CHANGE",
1067
+ CONVERSATION_LIST_RESET = "CONVERSATION_LIST_RESET",
1068
+ CONVERSATION_ITEM_ORDER_CHANGE = "CONVERSATION_ITEM_ORDER_CHANGE",
1069
+ CONVERSATIN_ITEM_REMOVE = "CONVERSATIN_ITEM_REMOVE",
1070
+ MESSAGE_STATE_CHANGE = "MESSAGE_STATE_CHANGE",
1071
+ INSERT_NEW_MESSAGES = "INSERT_NEW_MESSAGES",
1072
+ FILE_UPLOAD_PROGRESS = "FILE_UPLOAD_PROGRESS",
1073
+ LANGUAGE_CHANGE = "LANGUAGE_CHANGE",
1074
+ AUDIO_PLAY_EVENT = "AUDIO_PLAY_EVENT",
1075
+ SET_TEXTAREA_VALUE_EVENT = "SET_TEXTAREA_VALUE_EVENT",
1076
+ ADJUST_MESSAGE_LIST_SCROLL = "ADJUST_MESSAGE_LIST_SCROLL",
1077
+ /**
1078
+ * 语音转文字状态变更事件(对内事件)
1079
+ */
1080
+ SPEECH_TO_TEXT_STATE_CHANGE = "SPEECH_TO_TEXT_STATE_CHANGE",
1081
+ /**
1082
+ * 接收到新消息事件(对内事件)
1083
+ */
1084
+ RECV_NEW_MESSAGES = "RECV_NEW_MESSAGES",
1085
+ /**
1086
+ * 连接状态变更事件
1087
+ */
1088
+ CONNECTION_STATUS_CHANGE = "CONNECTION_STATUS_CHANGE",
1089
+ /**
1090
+ * 会话栏开关变更事件
1091
+ */
1092
+ CONVERSATION_BAR_SWITCH_CHANGE = "CONVERSATION_BAR_SWITCH_CHANGE",
1093
+ /**
1094
+ * 会话详情返回按钮开关变更事件
1095
+ */
1096
+ CONVERSATION_DETAIL_BACK_SWITCH_CHANGE = "CONVERSATION_DETAIL_BACK_SWITCH_CHANGE",
1097
+ /**
1098
+ * 会话栏标题变更事件
1099
+ */
1100
+ CONVERSATION_BAR_TITLE_CHANGE = "CONVERSATION_BAR_TITLE_CHANGE",
1101
+ /**
1102
+ * 提示框显示事件
1103
+ */
1104
+ TOAST_EVENT = "TOAST_EVENT"
1105
+ }
1106
+ /**
1107
+ * 事件枚举
1108
+ */
1109
+ declare enum RCKitEvents {
1110
+ /**
1111
+ * 确认弹窗事件
1112
+ */
1113
+ CONFIRM_EVENT = "CONFIRM_EVENT",
1114
+ /**
1115
+ * 弹窗提醒事件
1116
+ */
1117
+ ALERT_EVENT = "ALERT_EVENT",
1118
+ /**
1119
+ * 消息删除弹框事件
1120
+ */
1121
+ DELETE_MESSAGE_MODAL_EVENT = "DELETE_MESSAGE_MODAL_EVENT",
1122
+ /**
1123
+ * 媒体消息弹框事件
1124
+ */
1125
+ MEDIA_MESSAGE_MODAL_EVENT = "MEDIA_MESSAGE_MODAL_EVENT",
1126
+ /**
1127
+ * 合并转发消息 V1 版本弹框事件
1128
+ */
1129
+ COMBINE_MESSAGE_MODAL_EVENT = "COMBINE_MESSAGE_MODAL_EVENT",
1130
+ /**
1131
+ * 消息转发弹框事件
1132
+ */
1133
+ FORWARDING_EVENT = "FORWARDING_EVENT",
1134
+ /**
1135
+ * 拍照弹框事件
1136
+ */
1137
+ TAKE_PHOTO_MODAL_EVENT = "TAKE_PHOTO_MODAL_EVENT",
1138
+ /**
1139
+ * 接收到 SDK 内部无法处理的消息,业务层可通过监听该事件获取消息
1140
+ */
1141
+ UNSCHEDULED_MESSAGES = "UNSCHEDULED_MESSAGES",
1142
+ /**
1143
+ * 业务拓展功能按钮点击事件
1144
+ */
1145
+ CONVERSATION_EXTENSION_CLICK = "CONVERSATION_EXTENSION_CLICK",
1146
+ /**
1147
+ * 系统会话打开前的事件,业务层可通过监听该事件拦截系统会话打开,以自定义系统会话的打开方式
1148
+ */
1149
+ BEFORE_SYSTEM_CONVERSATION_OPEN = "BEFORE_SYSTEM_CONVERSATION_OPEN",
1150
+ /**
1151
+ * 会话菜单项点击事件
1152
+ */
1153
+ CONVERSATION_MENU_ITEM_CLICK = "CONVERSATION_MENU_ITEM_CLICK",
1154
+ /**
1155
+ * 输入框菜单点击事件
1156
+ */
1157
+ INPUT_MENU_ITEM_CLICK = "INPUT_MENU_ITEM_CLICK",
1158
+ /**
1159
+ * 选中会话变更事件,该事件会在会话列表中选中会话时触发
1160
+ */
1161
+ CONVERSATION_SELECTED = "CONVERSATION_SELECTED",
1162
+ /**
1163
+ * 消息列表头像点击事件
1164
+ */
1165
+ CONVERSATION_ICON_CLICK = "CONVERSATION_ICON_CLICK",
1166
+ /**
1167
+ * 消息列表 Header 头像点击事件
1168
+ */
1169
+ CONVERSATION_NAVI_CLICK = "CONVERSATION_NAVI_CLICK",
1170
+ /**
1171
+ * 消息菜单点击事件
1172
+ */
1173
+ MESSAGE_MENU_ITEM_CLICK = "MESSAGE_MENU_ITEM_CLICK",
1174
+ /**
1175
+ * 文本消息中链接点击事件
1176
+ */
1177
+ MESSAGE_LINK_CLICK = "MESSAGE_LINK_CLICK",
1178
+ /**
1179
+ * 下载链接事件
1180
+ */
1181
+ DOWNLOAD_LINK_EVENT = "DOWNLOAD_LINK_EVENT",
1182
+ /**
1183
+ * 文件发送失败事件,一般是由于文件超出尺寸限制或为空文件导致
1184
+ */
1185
+ FILE_SEND_FAILED_EVENT = "FILE_SEND_FAILED_EVENT",
1186
+ /**
1187
+ * 消息被删除或撤回通知
1188
+ */
1189
+ MESSAGES_DELETED = "MESSAGES_DELETED",
1190
+ /**
1191
+ * 提示框显示事件
1192
+ */
1193
+ TOAST_EVENT = "TOAST_EVENT"
1194
+ }
1195
+
1196
+ /**
1197
+ * 消息菜单项 ID
1198
+ */
1199
+ declare enum RCKitMessageMenuID {
1200
+ /** 回复/引用 */
1201
+ REPLY = "message.menu.item.reply",
1202
+ /** 多选 */
1203
+ MULTI_CHOICE = "message.menu.item.multi.choice",
1204
+ /** 复制 */
1205
+ COPY = "message.menu.item.copy",
1206
+ /** 转发 */
1207
+ FORWARD = "message.menu.item.forward",
1208
+ /** 删除 */
1209
+ DELETE = "message.menu.item.delete",
1210
+ /** 转文字 */
1211
+ SPEECH_TO_TEXT = "message.menu.item.speech.to.text",
1212
+ /** 取消转文字 */
1213
+ CANCEL_SPEECH_TO_TEXT = "message.menu.item.cancel.speech.to.text",
1214
+ /** 撤回 */
1215
+ RECALL = "message.menu.item.recall"
1216
+ }
1217
+ interface IRCKitMessageMenuItem {
1218
+ /**
1219
+ * 菜单 ID,SDK 在派发点击事件时包含此数据,同时也通过此 ID 查询多语言 UI 展示文案
1220
+ */
1221
+ id: RCKitMessageMenuID | string;
1222
+ /**
1223
+ * 菜单图标
1224
+ */
1225
+ icon: string;
1226
+ /**
1227
+ * 过滤器,返回 true 时显示菜单,返回 false 时不显示菜单
1228
+ * @param message
1229
+ */
1230
+ readonly filter?: (message: IRCKitCachedMessage) => boolean;
1231
+ }
1232
+
1233
+ interface IRCKitConversationItemCfg {
1234
+ /**
1235
+ * 会话 item 圆角大小
1236
+ */
1237
+ radius?: number;
1238
+ /**
1239
+ * 头像大小
1240
+ */
1241
+ portraitSize?: 'large' | 'small';
1242
+ /**
1243
+ * 置顶背景颜色,支持数字 (0xEFF4FF) 或 16 进制字符串 ("#EFF4FF")
1244
+ */
1245
+ topBackgroundColor?: number | string;
1246
+ /**
1247
+ * hover 背景颜色,支持数字 (0xF3F5FA) 或 16 进制字符串 ("#F3F5FA")
1248
+ */
1249
+ hoverBackgroundColor?: number | string;
1250
+ /**
1251
+ * 选中背景颜色,支持数字 (0xD2E1FE) 或 16 进制字符串 ("#D2E1FE")
1252
+ */
1253
+ activeBackgroundColor?: number | string;
1254
+ }
1255
+
1256
+ interface IRCKitHQVoiceMessageComponentProps {
1257
+ /**
1258
+ * 是否为己方发送的消息
1259
+ */
1260
+ isOwner: boolean;
1261
+ /**
1262
+ * 是否播放中
1263
+ */
1264
+ playing: boolean;
1265
+ /**
1266
+ * 播放进度
1267
+ */
1268
+ progress: number;
1269
+ /**
1270
+ * 语音消息时长
1271
+ */
1272
+ duration: number;
1273
+ /**
1274
+ * 切换播放与暂停状态
1275
+ */
1276
+ toggle: () => void;
1277
+ }
1278
+
1279
+ interface IRCKitComponentContext {
1280
+ /**
1281
+ * 代理 vue 的 computed 方法,以便于业务使用计算属性
1282
+ */
1283
+ computed: <T>(fn: () => T) => T;
1284
+ /**
1285
+ * 代理 vue 的 ref 方法,以便于业务使用 ref 做响应式监听
1286
+ */
1287
+ ref: <T = number | boolean | string | null>(value?: T) => {
1288
+ value?: T;
1289
+ };
1290
+ /**
1291
+ * 代理 vue 的 reactive 方法,以便于在模版中使用响应式数据
1292
+ */
1293
+ reactive: (obj: object) => any;
1294
+ /**
1295
+ * 获取当前语言
1296
+ */
1297
+ getLanguage(): string;
1298
+ /**
1299
+ * 获取当前用户 ID
1300
+ */
1301
+ getCurrentUserId(): string;
1302
+ }
1303
+ interface IRCKitDefineCustomElementOptions<T> {
1304
+ setup: (props: T, ctx: IRCKitComponentContext) => any;
1305
+ template: string;
1306
+ styles?: string[];
1307
+ }
1308
+ /**
1309
+ * 可重写组件枚举定义
1310
+ */
1311
+ declare enum RCKitOverrideAbleComponent {
1312
+ /**
1313
+ * 语音消息组件
1314
+ */
1315
+ HQVoiceMessageComponent = "HQVoiceMessageComponent"
1316
+ }
1317
+ /**
1318
+ * 定义可重写组件 Props 类型定义
1319
+ */
1320
+ interface IRCKitOverrideAbleComponentProps {
1321
+ HQVoiceMessageComponent: IRCKitHQVoiceMessageComponentProps;
1322
+ }
1323
+
1324
+ /**
1325
+ * 消息组件 Props 数据结构定义
1326
+ */
1327
+ declare type IRCKitMessageComponentProps = {
1328
+ /**
1329
+ * 消息数据
1330
+ */
1331
+ message: IRCKitCachedMessage;
1332
+ };
1333
+
1334
+ interface IRCKitCustomMessageComponentOpts extends IRCKitDefineCustomElementOptions<IRCKitMessageComponentProps> {
1335
+ /**
1336
+ * 消息组件标签
1337
+ */
1338
+ tag: string;
1339
+ }
1340
+ /**
1341
+ * 自定义消息注册配置
1342
+ */
1343
+ interface IRCKitRegisterMessageTypeOpts {
1344
+ /** 是否计数 */
1345
+ isCounted?: boolean;
1346
+ /**
1347
+ * 消息是否存储
1348
+ * @description
1349
+ * - `true`: 消息将进入数据库存储,并将在消息列表中显示,开发者必须提供 `digest` 摘要函数,同时可定义 `component` 组件来声明其在消息列表中的展示方式。
1350
+ * - `false`: 消息不会进入数据库存储,也不会在消息列表中显示。SDK 会将消息通过 `RCKitEvents.UNSCHEDULED_MESSAGES` 事件抛给开发者自行处理。
1351
+ */
1352
+ isPersited?: boolean;
1353
+ /** 是否为状态消息:状态消息不计数不存储,且不进入离线补偿,仅限在线时收取 */
1354
+ isStatusMessage?: boolean;
1355
+ /** 检索消息 key,用于消息搜索匹配 */
1356
+ searchProps?: string[];
1357
+ /**
1358
+ * 消息摘要计算函数,用于自定义消息在会话列表和消息列表中的展示。
1359
+ * 在同时定义了 `component` 与 `digest` 属性的情况下,SDK 会优先使用 `component` 组件进行消息渲染。
1360
+ */
1361
+ digest?: (message: IRCKitCachedMessage, language: string) => string;
1362
+ /**
1363
+ * 当 `isPersited` 为 `true` 时,可通过赋值 `component` 属性来定义相应的气泡 UI 渲染组件。
1364
+ * 当该值为空时,SDK 将通过 `digest` 摘要计算函数,渲染消息为灰条消息进行展示。
1365
+ */
1366
+ component?: IRCKitCustomMessageComponentOpts;
1367
+ }
1368
+
1369
+ interface IRCKitInitOpts {
1370
+ /**
1371
+ * 业务数据模块钩子,用于向 SDK 注入用户信息、群组信息等。
1372
+ */
1373
+ hooks: IRCKitServiceHooks;
1374
+ /**
1375
+ * 日志输出等级,默认值 `LogL.WARN(2)`
1376
+ */
1377
+ logLevel?: LogL.DEBUG | LogL.INFO | LogL.WARN | LogL.ERROR;
1378
+ /**
1379
+ * 初始语言配置。
1380
+ * @description 若不传或值非法,则默认 `zh_CN`。
1381
+ */
1382
+ language?: string;
1383
+ /**
1384
+ * 允许对己方已发送消息进行撤回操作的最大时间,单位:秒。
1385
+ * @description 若不传或值非法,则默认 120 秒
1386
+ */
1387
+ allowedToRecallTime?: number;
1388
+ /**
1389
+ * 允许对己方发送的撤回消息进行编辑操作的最大时间,单位:秒。
1390
+ * @description 若不传或值非法,则默认 60 秒
1391
+ */
1392
+ allowedToReEditTime?: number;
1393
+ /**
1394
+ * 弹窗父级 DOM,不传默认为 document.body
1395
+ */
1396
+ modalContainerId?: string;
1397
+ }
1398
+ declare class RCKitApplication extends EventDispatcher<EventDefined> {
1399
+ private context;
1400
+ private readonly _logger;
1401
+ private readonly _ctx;
1402
+ private readonly _uiModule;
1403
+ private _isReady;
1404
+ constructor(context: PluginContext, _logger: ILogger, opts: IRCKitInitOpts);
1405
+ private _onIMDestroy;
1406
+ /**
1407
+ * 定义功能开关,可通过 `RCKitCommand` 查看所有支持的功能配置项。必须在 `ready` 之前调用。
1408
+ */
1409
+ setCommandSwitch(command: RCKitCommand, enable: boolean): void;
1410
+ /**
1411
+ * 查询功能开关开启状态,可通过 `RCKitCommand` 查看所有支持的功能配置项。
1412
+ */
1413
+ getCommandSwitch(command: RCKitCommand): boolean;
1414
+ /**
1415
+ * 设置会话栏开关
1416
+ * @param enable 是否开启
1417
+ */
1418
+ setConversationBarSwitch(enable: boolean): void;
1419
+ /**
1420
+ * 设置会话详情返回按钮开关
1421
+ * @param enable 是否开启
1422
+ */
1423
+ setConversationDetailBackSwitch(enable: boolean): void;
1424
+ /**
1425
+ * 设置会话栏标题,仅当会话栏开启时才能设置成功
1426
+ * @param value 标题内容,undefined 表示使用默认值
1427
+ */
1428
+ setConversationBarTitle(value?: string): void;
1429
+ /**
1430
+ * 注册自定义组件,以替换 SDK 默认组件,必须在 `ready` 之前调用。
1431
+ * @param tag - 自定义组件标签名
1432
+ * @param opts - 自定义组件定义
1433
+ * @example ```ts
1434
+ * app.registerCustomElement(RCKitOverrideAbleComponent.HQVoiceMessageComponent, {
1435
+ * template: '<span class="test" @click="handleClick">{{ content }}</span>',
1436
+ * setup(props, ctx) {
1437
+ * const { computed, lang } = ctx;
1438
+ * const handleClick = () => {
1439
+ * // 处理自定义事件
1440
+ * };
1441
+ * return {
1442
+ * content: computed(() => {
1443
+ * return lang.value === 'en_US' ? 'Hello' : '你好';
1444
+ * }),
1445
+ * },
1446
+ * },
1447
+ * styles: ['.test { color: red; }'],
1448
+ * });
1449
+ * ```
1450
+ */
1451
+ registerCustomElement<T extends keyof IRCKitOverrideAbleComponentProps>(tag: T, opts: IRCKitDefineCustomElementOptions<{
1452
+ value: IRCKitOverrideAbleComponentProps[T];
1453
+ }>): void;
1454
+ /**
1455
+ * 注册自定义消息类型,必须在 `ready` 之前调用。
1456
+ */
1457
+ registerMessageType<T = any>(messageType: string, options: IRCKitRegisterMessageTypeOpts): new (content: T) => BaseMessage<T>;
1458
+ /**
1459
+ * 获取内置语言包词条拷贝
1460
+ * @param lang 传参确认要获取的语言包
1461
+ */
1462
+ cloneLanguageEntries(lang: string): {
1463
+ [key: string]: string;
1464
+ } | null;
1465
+ /**
1466
+ * 注册语言包,也可用于覆盖既有语言包;仅 `ready` 调用前有效。
1467
+ * @param lang - 语言包定义,如 `zh_CN`
1468
+ * @param entries - 语言包词条定义
1469
+ * @param direction - 语言的行文方向,默认 'ltr'; 仅当首次注册指定语言包时有效。
1470
+ */
1471
+ registerLanguagePack(lang: string, entries: {
1472
+ [key: string]: string;
1473
+ } | IRCKitLanguageEntries, direction?: RCKitLanguageDirection): void;
1474
+ /**
1475
+ * 语言切换功能接口
1476
+ * @param lang - 要切换的目标语言
1477
+ */
1478
+ setLanguage(lang: string): void;
1479
+ /**
1480
+ * 获取当前使用的语言
1481
+ */
1482
+ getLanguage(): string;
1483
+ /**
1484
+ * 获取支持的语言列表
1485
+ */
1486
+ getSupportedLanguages(): string[];
1487
+ /**
1488
+ * 设置自定义推送配置钩子,用于在消息发送前,修改移动端接收推送时的标题、内容等。
1489
+ * @param hook
1490
+ */
1491
+ setPushConfigHook(hook: IRCKitPushConfigHook): void;
1492
+ /**
1493
+ * 更新用户信息
1494
+ * @param profile
1495
+ */
1496
+ updateUserProfile(profile: IRCKitUserProfile): void;
1497
+ /**
1498
+ * 更新群组信息
1499
+ * @param profile
1500
+ */
1501
+ updateGroupProfile(profile: IRCKitGroupProfile): void;
1502
+ /**
1503
+ * 更新用户在线状态
1504
+ * @param userId 用户 ID
1505
+ * @param online 在线状态
1506
+ */
1507
+ updateUserOnlineStatus(userId: string, online: boolean): void;
1508
+ /**
1509
+ * 立即刷新用户成员列表,调用该方法会同步更新群组 `memberCount` 信息。
1510
+ * 该操作仅影响本地缓存数据与 UI 显示,不会向融云服务端发送请求。
1511
+ * @param groupId 群组 ID
1512
+ * @param members 成员列表
1513
+ */
1514
+ updateGroupMembers(groupId: string, members: IRCKitGroupMemberProfile[]): void;
1515
+ /**
1516
+ * 添加群组成员,调用该方法会同步更新群组 `memberCount` 信息。
1517
+ * 该操作仅影响本地缓存数据与 UI 显示,不会向融云服务端发送请求。
1518
+ */
1519
+ addGroupMembers(groupId: string, members: IRCKitGroupMemberProfile[]): void;
1520
+ /**
1521
+ * 删除群组成员,调用该方法会同步更新群组 `memberCount` 信息。
1522
+ * 该操作仅影响本地缓存数据与 UI 显示,不会向融云服务端发送请求。
1523
+ */
1524
+ removeGroupMembers(groupId: string, members: string[]): void;
1525
+ /**
1526
+ * 获取会话菜单拷贝
1527
+ * @returns
1528
+ */
1529
+ cloneConversationMenu(): IRCKitConversationMenuItem[];
1530
+ setConversationMenu(menu: IRCKitConversationMenuItem[]): void;
1531
+ cloneMessageMenu(): IRCKitMessageMenuItem[];
1532
+ setMessageMenu(menu: IRCKitMessageMenuItem[]): void;
1533
+ /**
1534
+ * 打开指定会话,若会话不存在于当前显示的会话列表内,新建会话并将其置于会话列表尽可能靠前位置
1535
+ * @param conversation
1536
+ */
1537
+ openConversation(conversation: IConversationOption, focusInput?: boolean): Promise<{
1538
+ code: number;
1539
+ }>;
1540
+ /**
1541
+ * 删除指定会话
1542
+ * @param conversation
1543
+ */
1544
+ removeConversation(conversation: IConversationOption): Promise<void>;
1545
+ /**
1546
+ * 获取当前打开中的会话,若未打开任何会话,则返回 null
1547
+ * @returns
1548
+ */
1549
+ getOpenedConversation(): IRCKitCachedConversation | null;
1550
+ /**
1551
+ * 向右侧会话详情面板添加功能拓展,仅在 `ready` 之前调用有效。
1552
+ * @param extension
1553
+ * @description - 添加拓展后,当用户点击时,会向业务层派发 {@link RCKitEvents.CONVERSATION_EXTENSION_CLICK} 事件。
1554
+ */
1555
+ setConversationExtension(extensions: IRCKitConversationExtension[]): void;
1556
+ /**
1557
+ * 获取输入框菜单配置拷贝
1558
+ * @returns
1559
+ */
1560
+ cloneInputMenu(): IRCKitInputMenu;
1561
+ /**
1562
+ * 设置新的输入框菜单配置
1563
+ * @param menu
1564
+ */
1565
+ setInputMenu(menu: IRCKitInputMenu): void;
1566
+ cloneMessageBubbleCfg(): IRCKitMessageBubbleCfg;
1567
+ setMessageBubbleCfg(config: IRCKitMessageBubbleCfg): void;
1568
+ /**
1569
+ * 获取会话列表 Item 配置拷贝
1570
+ */
1571
+ cloneConversationItemCfg(): IRCKitConversationItemCfg;
1572
+ /**
1573
+ * 设置会话列表 Item 配置
1574
+ * @param config
1575
+ */
1576
+ setConversationItemCfg(config: IRCKitConversationItemCfg): void;
1577
+ /**
1578
+ * 获取已存在的图片表情库列表拷贝
1579
+ * @returns
1580
+ */
1581
+ cloneImageEmojiLibraries(): IRCKitImageEmojiLibrary[];
1582
+ /**
1583
+ * 设置图片表情库列表
1584
+ * @param libraries
1585
+ */
1586
+ setImageEmojiLibraries(libraries: IRCKitImageEmojiLibrary[]): void;
1587
+ /**
1588
+ * 获取已存在的字符表情库拷贝
1589
+ */
1590
+ cloneChatEmojiLibrary(): IRCKitChatEmojiLibrary;
1591
+ /**
1592
+ * 设置字符表情库
1593
+ */
1594
+ setChatEmojiLibrary(library: IRCKitChatEmojiLibrary): void;
1595
+ /**
1596
+ * 发送消息
1597
+ * @param conversation - 会话
1598
+ * @param message - 消息
1599
+ * @param options - 发送选项
1600
+ */
1601
+ sendMessage(conversation: IConversationOption, message: BaseMessage<any>, options?: ISendMessageOptions): Promise<{
1602
+ code: number;
1603
+ message?: IAReceivedMessage;
1604
+ }>;
1605
+ /**
1606
+ * 向本地插入一条消息
1607
+ * @param conversation - 会话
1608
+ * @param message - 消息
1609
+ */
1610
+ insertMessage(conversation: IConversationOption, message: BaseMessage<any>): Promise<{
1611
+ code: number;
1612
+ }>;
1613
+ /**
1614
+ * 通知 SDK 配置准备完成,以便 SDK 依据配置进行初始化。
1615
+ */
1616
+ ready(): void;
1617
+ /**
1618
+ * 检测 SDK 是否已完成初始化
1619
+ * @returns 是否已完成初始化
1620
+ */
1621
+ ifReady(): boolean;
1622
+ getCurrentUserId(): string;
1623
+ /**
1624
+ * 反初始化
1625
+ */
1626
+ destroy(): void;
1627
+ }
1628
+
1629
+ /**
1630
+ * Web IM Kit 构建版本代码 Commit ID
1631
+ */
1632
+ declare const RCKIT_COMMIT_VERSION: string;
1633
+ /**
1634
+ * Web IM Kit 版本号
1635
+ */
1636
+ declare const RCKIT_VERSION: string;
1637
+
1638
+ /**
1639
+ * 判断是否为移动端设备(窗口宽度 <= 768px)
1640
+ * @returns {boolean} 是否为移动端
1641
+ */
1642
+ declare const isMobileDevice: () => boolean;
1643
+
1644
+ declare const RCKitInstaller: IPluginGenerator<RCKitApplication, IRCKitInitOpts>;
1645
+
1646
+ export { BeforeSystemConversationOpenEvent, DeleteMessageModalEvent, IRCKitCachedConversation, IRCKitCachedMessage, IRCKitChatEmojiLibrary, IRCKitComponentContext, IRCKitConversationExtension, IRCKitConversationExtensionClick, IRCKitConversationIconClick, IRCKitConversationItemCfg, IRCKitConversationMenuItem, IRCKitConversationMenuItemClick, IRCKitCustomMessageComponentOpts, IRCKitDefineCustomElementOptions, IRCKitDeleteMessageData, IRCKitGifImageInfo, IRCKitGroupMemberProfile, IRCKitGroupProfile, IRCKitHQVoiceMessageComponentProps, IRCKitImageEmoji, IRCKitImageEmojiLibrary, IRCKitInitOpts, IRCKitInputMenu, IRCKitInputMenuItem, IRCKitInputMenuItemClick, IRCKitLanguageEntries, IRCKitMessageBubbleCfg, IRCKitMessageLinkClick, IRCKitMessageMenuItem, IRCKitMessageMenuItemClick, IRCKitModalDeleteMessage, IRCKitModalDeleteMessageResult, IRCKitModalForwardingResult, IRCKitOverrideAbleComponentProps, IRCKitPushConfigHook, IRCKitRegisterMessageTypeOpts, IRCKitServiceHooks, IRCKitSystemProfile, IRCKitUserOnlineStatus, IRCKitUserProfile, RCKIT_COMMIT_VERSION, RCKIT_VERSION, RCKitApplication, RCKitBubbleLayout, RCKitChatEmojiLibraryID, RCKitCommand, RCKitConversationMenuID, RCKitEvent, RCKitEvents, RCKitInputMenuID, RCKitInputMenuPosition, RCKitInstaller, RCKitLanguageDirection, RCKitMentionedType, RCKitMessageMenuID, RCKitModalBtnType, RCKitModalForwardingType, RCKitOverrideAbleComponent, isMobileDevice };