server.js 82 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661
  1. "use strict";
  2. var __extends = (this && this.__extends) || (function () {
  3. var extendStatics = function (d, b) {
  4. extendStatics = Object.setPrototypeOf ||
  5. ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
  6. function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
  7. return extendStatics(d, b);
  8. };
  9. return function (d, b) {
  10. extendStatics(d, b);
  11. function __() { this.constructor = d; }
  12. d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  13. };
  14. })();
  15. var __assign = (this && this.__assign) || function () {
  16. __assign = Object.assign || function(t) {
  17. for (var s, i = 1, n = arguments.length; i < n; i++) {
  18. s = arguments[i];
  19. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
  20. t[p] = s[p];
  21. }
  22. return t;
  23. };
  24. return __assign.apply(this, arguments);
  25. };
  26. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  27. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  28. return new (P || (P = Promise))(function (resolve, reject) {
  29. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  30. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  31. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  32. step((generator = generator.apply(thisArg, _arguments || [])).next());
  33. });
  34. };
  35. var __generator = (this && this.__generator) || function (thisArg, body) {
  36. var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
  37. return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
  38. function verb(n) { return function (v) { return step([n, v]); }; }
  39. function step(op) {
  40. if (f) throw new TypeError("Generator is already executing.");
  41. while (_) try {
  42. if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
  43. if (y = 0, t) op = [op[0] & 2, t.value];
  44. switch (op[0]) {
  45. case 0: case 1: t = op; break;
  46. case 4: _.label++; return { value: op[1], done: false };
  47. case 5: _.label++; y = op[1]; op = [0]; continue;
  48. case 7: op = _.ops.pop(); _.trys.pop(); continue;
  49. default:
  50. if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
  51. if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
  52. if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
  53. if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
  54. if (t[2]) _.ops.pop();
  55. _.trys.pop(); continue;
  56. }
  57. op = body.call(thisArg, _);
  58. } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
  59. if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
  60. }
  61. };
  62. var __spreadArrays = (this && this.__spreadArrays) || function () {
  63. for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
  64. for (var r = Array(s), k = 0, i = 0; i < il; i++)
  65. for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
  66. r[k] = a[j];
  67. return r;
  68. };
  69. exports.__esModule = true;
  70. var TUIPlugin_1 = require("../../../TUIPlugin");
  71. var IComponentServer_1 = require("../IComponentServer");
  72. var utils_1 = require("./utils/utils");
  73. /**
  74. * class TUIChatServer
  75. *
  76. * TUIChat 逻辑主体
  77. */
  78. var TUIChatServer = /** @class */ (function (_super) {
  79. __extends(TUIChatServer, _super);
  80. function TUIChatServer(TUICore) {
  81. var _this = _super.call(this) || this;
  82. _this.currentStore = {};
  83. _this.TUICore = TUICore;
  84. _this.bindTIMEvent();
  85. _this.store = TUICore.setComponentStore("TUIChat", {}, _this.updateStore.bind(_this));
  86. return _this;
  87. }
  88. /**
  89. * 组件销毁
  90. * destroy
  91. */
  92. TUIChatServer.prototype.destroyed = function () {
  93. this.unbindTIMEvent();
  94. };
  95. /**
  96. * 数据监听回调
  97. * data listener callback
  98. *
  99. * @param {any} newValue 新数据
  100. * @param {any} oldValue 旧数据
  101. *
  102. */
  103. TUIChatServer.prototype.updateStore = function (newValue, oldValue) {
  104. Object.assign(this.currentStore, newValue);
  105. if (!newValue.conversation.conversationID) {
  106. this.currentStore.messageList = [];
  107. return;
  108. }
  109. if (newValue.conversation.conversationID &&
  110. newValue.conversation.conversationID !==
  111. oldValue.conversation.conversationID) {
  112. this.render(newValue.conversation);
  113. }
  114. };
  115. TUIChatServer.prototype.render = function (conversation) {
  116. var _this = this;
  117. var _a, _b, _c;
  118. var len = 15;
  119. this.currentStore.isFirstRender = true;
  120. this.currentStore.messageList = [];
  121. this.currentStore.readSet.clear();
  122. this.getMessageList({
  123. conversationID: conversation.conversationID,
  124. count: len
  125. });
  126. if (conversation.type === this.TUICore.TIM.TYPES.CONV_GROUP) {
  127. this.currentStore.userInfo.isGroup = true;
  128. var options = {
  129. groupID: conversation.groupProfile.groupID,
  130. userIDList: [conversation.groupProfile.selfInfo.userID]
  131. };
  132. this.getGroupProfile({ groupID: conversation.groupProfile.groupID });
  133. this.getGroupMemberProfile(options).then(function (res) {
  134. var memberList = res.data.memberList;
  135. var selfInfo = memberList[0];
  136. _this.currentStore.selfInfo = selfInfo;
  137. });
  138. (_c = (_b = (_a = this === null || this === void 0 ? void 0 : this.TUICore) === null || _a === void 0 ? void 0 : _a.TUIServer) === null || _b === void 0 ? void 0 : _b.TUIGroup) === null || _c === void 0 ? void 0 : _c.getGroupMemberList({
  139. groupID: conversation.groupProfile.groupID,
  140. count: 100,
  141. offset: 0
  142. }).then(function (res) {
  143. var _a;
  144. _this.currentStore.allMemberList = (_a = res.data) === null || _a === void 0 ? void 0 : _a.memberList;
  145. });
  146. }
  147. else {
  148. this.currentStore.userInfo.isGroup = false;
  149. this.currentStore.userInfo.list = [conversation === null || conversation === void 0 ? void 0 : conversation.userProfile];
  150. }
  151. };
  152. /**
  153. * /////////////////////////////////////////////////////////////////////////////////
  154. * //
  155. * // TIM 事件监听注册接口
  156. * // TIM Event listener registration interface
  157. * //
  158. * /////////////////////////////////////////////////////////////////////////////////
  159. */
  160. TUIChatServer.prototype.bindTIMEvent = function () {
  161. this.TUICore.tim.on(this.TUICore.TIM.EVENT.MESSAGE_RECEIVED, this.handleMessageReceived, this);
  162. this.TUICore.tim.on(this.TUICore.TIM.EVENT.MESSAGE_MODIFIED, this.handleMessageModified, this);
  163. this.TUICore.tim.on(this.TUICore.TIM.EVENT.MESSAGE_REVOKED, this.handleMessageRevoked, this);
  164. this.TUICore.tim.on(this.TUICore.TIM.EVENT.MESSAGE_READ_BY_PEER, this.handleMessageReadByPeer, this);
  165. this.TUICore.tim.on(this.TUICore.TIM.EVENT.GROUP_LIST_UPDATED, this.handleGroupListUpdated, this);
  166. this.TUICore.tim.on(this.TUICore.TIM.EVENT.MESSAGE_READ_RECEIPT_RECEIVED, this.handleMessageReadReceiptReceived, this);
  167. };
  168. TUIChatServer.prototype.unbindTIMEvent = function () {
  169. this.TUICore.tim.off(this.TUICore.TIM.EVENT.MESSAGE_RECEIVED, this.handleMessageReceived);
  170. this.TUICore.tim.off(this.TUICore.TIM.EVENT.MESSAGE_MODIFIED, this.handleMessageModified);
  171. this.TUICore.tim.off(this.TUICore.TIM.EVENT.MESSAGE_REVOKED, this.handleMessageRevoked);
  172. this.TUICore.tim.off(this.TUICore.TIM.EVENT.MESSAGE_READ_BY_PEER, this.handleMessageReadByPeer);
  173. this.TUICore.tim.off(this.TUICore.TIM.EVENT.GROUP_LIST_UPDATED, this.handleGroupListUpdated);
  174. this.TUICore.tim.off(this.TUICore.TIM.EVENT.MESSAGE_READ_RECEIPT_RECEIVED, this.handleMessageReadReceiptReceived);
  175. };
  176. TUIChatServer.prototype.handleMessageReceived = function (event) {
  177. var _this = this;
  178. var _a;
  179. (_a = event === null || event === void 0 ? void 0 : event.data) === null || _a === void 0 ? void 0 : _a.forEach(function (message) {
  180. var _a, _b;
  181. if ((message === null || message === void 0 ? void 0 : message.conversationID) === ((_b = (_a = _this === null || _this === void 0 ? void 0 : _this.store) === null || _a === void 0 ? void 0 : _a.conversation) === null || _b === void 0 ? void 0 : _b.conversationID)) {
  182. _this.currentStore.messageList = __spreadArrays(_this.currentStore.messageList, [
  183. message,
  184. ]);
  185. }
  186. TUIPlugin_1.TUINotification.getInstance().notify(message);
  187. });
  188. };
  189. TUIChatServer.prototype.handleMessageModified = function (event) {
  190. var middleData = this.currentStore.messageList;
  191. this.currentStore.messageList = [];
  192. this.currentStore.messageList = middleData;
  193. };
  194. TUIChatServer.prototype.handleMessageRevoked = function (event) {
  195. var middleData = this.currentStore.messageList;
  196. this.currentStore.messageList = [];
  197. this.currentStore.messageList = middleData;
  198. };
  199. TUIChatServer.prototype.handleMessageReadByPeer = function (event) {
  200. var middleData = this.currentStore.messageList;
  201. this.currentStore.messageList = [];
  202. this.currentStore.messageList = middleData;
  203. };
  204. TUIChatServer.prototype.handleGroupListUpdated = function (event) {
  205. var _this = this;
  206. event === null || event === void 0 ? void 0 : event.data.map(function (item) {
  207. var _a, _b, _c;
  208. if ((item === null || item === void 0 ? void 0 : item.groupID) === ((_c = (_b = (_a = _this === null || _this === void 0 ? void 0 : _this.store) === null || _a === void 0 ? void 0 : _a.conversation) === null || _b === void 0 ? void 0 : _b.groupProfile) === null || _c === void 0 ? void 0 : _c.groupID)) {
  209. _this.store.conversation.groupProfile = item;
  210. _this.currentStore.conversation = {};
  211. _this.currentStore.conversation = _this.store.conversation;
  212. }
  213. return item;
  214. });
  215. };
  216. TUIChatServer.prototype.handleMessageReadReceiptReceived = function (event) {
  217. var middleData = this.currentStore.messageList;
  218. this.currentStore.messageList = [];
  219. this.currentStore.messageList = middleData;
  220. };
  221. /**
  222. * /////////////////////////////////////////////////////////////////////////////////
  223. * //
  224. * // 处理 TIM 接口参数及回调
  225. * // Handling TIM interface parameters and callbacks
  226. * //
  227. * /////////////////////////////////////////////////////////////////////////////////
  228. */
  229. /**
  230. * 创建消息生成参数
  231. * Create message generation parameters
  232. *
  233. * @param {Object} content 消息体
  234. * @param {String} type 消息类型 text: 文本类型 file: 文件类型 face: 表情 location: 地址 custom: 自定义 merger: 合并 forward: 转发
  235. * @param {Callback} callback 回调函数
  236. * @param {any} to 发送的对象
  237. * @returns {options} 消息参数
  238. */
  239. TUIChatServer.prototype.handleMessageOptions = function (content, type, callback, to) {
  240. var _a, _b, _c, _d, _e, _f;
  241. var options = {
  242. to: "",
  243. conversationType: (to === null || to === void 0 ? void 0 : to.type) || this.store.conversation.type,
  244. payload: content,
  245. needReadReceipt: this.currentStore.needReadReceipt
  246. };
  247. if (this.currentStore.needTyping) {
  248. options.cloudCustomData = {
  249. messageFeature: {
  250. needTyping: 1,
  251. version: 1
  252. }
  253. };
  254. options.cloudCustomData = JSON.stringify(options.cloudCustomData);
  255. }
  256. if (type === "file" && callback) {
  257. options.onProgress = callback;
  258. }
  259. switch (options.conversationType) {
  260. case this.TUICore.TIM.TYPES.CONV_C2C:
  261. options.to =
  262. ((_a = to === null || to === void 0 ? void 0 : to.userProfile) === null || _a === void 0 ? void 0 : _a.userID) || ((_c = (_b = this.store.conversation) === null || _b === void 0 ? void 0 : _b.userProfile) === null || _c === void 0 ? void 0 : _c.userID) ||
  263. "";
  264. break;
  265. case this.TUICore.TIM.TYPES.CONV_GROUP:
  266. options.to =
  267. ((_d = to === null || to === void 0 ? void 0 : to.groupProfile) === null || _d === void 0 ? void 0 : _d.groupID) || ((_f = (_e = this.store.conversation) === null || _e === void 0 ? void 0 : _e.groupProfile) === null || _f === void 0 ? void 0 : _f.groupID) ||
  268. "";
  269. break;
  270. default:
  271. break;
  272. }
  273. return options;
  274. };
  275. /**
  276. * 处理异步函数
  277. * Handling asynchronous functions
  278. *
  279. * @param {callback} callback 回调函数
  280. * @returns {Promise} 返回异步函数
  281. */
  282. TUIChatServer.prototype.handlePromiseCallback = function (callback) {
  283. var _this = this;
  284. return new Promise(function (resolve, reject) {
  285. var config = {
  286. TUIName: "TUIChat",
  287. callback: function () {
  288. callback && callback(resolve, reject);
  289. }
  290. };
  291. _this.TUICore.setAwaitFunc(config.TUIName, config.callback);
  292. });
  293. };
  294. /**
  295. * 重试异步函数
  296. * Retry asynchronous functions
  297. * 默认执行一次,之后按时间间隔列表重复执行直到成功,重复次数完毕后仍失败则失败
  298. * Execute once by default, and then repeat it according to the time interval list until it succeeds.
  299. * If it still fails after the number of repetitions is complete, it will reject.
  300. *
  301. * @param {callback} callback 回调函数/callback function
  302. * @param {Array<number>} intervalList 间隔时间列表/interval list
  303. * @param {callback} retryBreakFn 强制重复结束条件函数/break retry function
  304. * @returns {Promise} 返回异步函数/return
  305. */
  306. TUIChatServer.prototype.handlePromiseCallbackRetry = function (callback, intervalList, retryBreakFn) {
  307. if (intervalList === void 0) { intervalList = []; }
  308. if (retryBreakFn === void 0) { retryBreakFn = function () {
  309. return false;
  310. }; }
  311. return new Promise(function (resolve, reject) {
  312. var times = 0;
  313. function tryFn() {
  314. times++;
  315. callback()
  316. .then(resolve)["catch"](function (error) {
  317. if (times > intervalList.length ||
  318. (retryBreakFn && retryBreakFn(error))) {
  319. reject(error);
  320. return;
  321. }
  322. setTimeout(tryFn, intervalList[times - 1]);
  323. });
  324. }
  325. tryFn();
  326. });
  327. };
  328. /**
  329. * 文件上传进度函数处理
  330. * File upload progress function processing
  331. *
  332. * @param {number} progress 文件上传进度 1表示完成
  333. * @param {message} message 文件消息
  334. */
  335. TUIChatServer.prototype.handleUploadProgress = function (progress, message) {
  336. this.currentStore.messageList.map(function (item) {
  337. if (item.ID === message.ID) {
  338. item.progress = progress;
  339. }
  340. return item;
  341. });
  342. };
  343. /**
  344. * /////////////////////////////////////////////////////////////////////////////////
  345. * //
  346. * // TIM 方法
  347. * // TIM methods
  348. * //
  349. * /////////////////////////////////////////////////////////////////////////////////
  350. */
  351. /**
  352. * 发送表情消息
  353. * Send face messages
  354. *
  355. * @param {Object} data 消息内容/message content
  356. * @param {Number} data.index 表情索引/face index
  357. * @param {String} data.data 额外数据/extra data
  358. * @returns {Promise}
  359. */
  360. TUIChatServer.prototype.sendFaceMessage = function (data) {
  361. var _this = this;
  362. return this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  363. var options, message, imResponse_1, error_1, middleData;
  364. return __generator(this, function (_a) {
  365. switch (_a.label) {
  366. case 0:
  367. _a.trys.push([0, 2, , 3]);
  368. options = this.handleMessageOptions(data, "face");
  369. message = this.TUICore.tim.createFaceMessage(options);
  370. this.currentStore.messageList.push(message);
  371. return [4 /*yield*/, this.TUICore.tim.sendMessage(message)];
  372. case 1:
  373. imResponse_1 = _a.sent();
  374. this.currentStore.messageList = this.currentStore.messageList.map(function (item) {
  375. if (item.ID === imResponse_1.data.message.ID) {
  376. return imResponse_1.data.message;
  377. }
  378. return item;
  379. });
  380. resolve(imResponse_1);
  381. return [3 /*break*/, 3];
  382. case 2:
  383. error_1 = _a.sent();
  384. reject(error_1);
  385. middleData = this.currentStore.messageList;
  386. this.currentStore.messageList = [];
  387. this.currentStore.messageList = middleData;
  388. return [3 /*break*/, 3];
  389. case 3: return [2 /*return*/];
  390. }
  391. });
  392. }); });
  393. };
  394. /**
  395. * 发送图片消息
  396. * Send image message
  397. *
  398. * @param {Image} image 图片文件/image
  399. * @returns {Promise}
  400. */
  401. TUIChatServer.prototype.sendImageMessage = function (image) {
  402. var _this = this;
  403. return this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  404. var options, message_1, imResponse_2, error_2, middleData;
  405. var _this = this;
  406. return __generator(this, function (_a) {
  407. switch (_a.label) {
  408. case 0:
  409. _a.trys.push([0, 2, , 3]);
  410. options = this.handleMessageOptions({ file: image }, "file", function (progress) {
  411. _this.handleUploadProgress(progress, message_1);
  412. });
  413. message_1 = this.TUICore.tim.createImageMessage(options);
  414. message_1.progress = 0.01;
  415. this.currentStore.messageList.push(message_1);
  416. return [4 /*yield*/, this.TUICore.tim.sendMessage(message_1)];
  417. case 1:
  418. imResponse_2 = _a.sent();
  419. this.currentStore.messageList = this.currentStore.messageList.map(function (item) {
  420. if (item.ID === imResponse_2.data.message.ID) {
  421. return imResponse_2.data.message;
  422. }
  423. return item;
  424. });
  425. resolve(imResponse_2);
  426. return [3 /*break*/, 3];
  427. case 2:
  428. error_2 = _a.sent();
  429. reject(error_2);
  430. middleData = this.currentStore.messageList;
  431. this.currentStore.messageList = [];
  432. this.currentStore.messageList = middleData;
  433. return [3 /*break*/, 3];
  434. case 3: return [2 /*return*/];
  435. }
  436. });
  437. }); });
  438. };
  439. /**
  440. * 发送视频消息
  441. * Send video message
  442. *
  443. * @param {Video} video 视频文件/video
  444. * @returns {Promise}
  445. */
  446. TUIChatServer.prototype.sendVideoMessage = function (video) {
  447. var _this = this;
  448. return this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  449. var options, message_2, imResponse_3, error_3, middleData;
  450. var _this = this;
  451. return __generator(this, function (_a) {
  452. switch (_a.label) {
  453. case 0:
  454. _a.trys.push([0, 2, , 3]);
  455. options = this.handleMessageOptions({ file: video }, "file", function (progress) {
  456. _this.handleUploadProgress(progress, message_2);
  457. });
  458. message_2 = this.TUICore.tim.createVideoMessage(options);
  459. message_2.progress = 0.01;
  460. this.currentStore.messageList.push(message_2);
  461. return [4 /*yield*/, this.TUICore.tim.sendMessage(message_2)];
  462. case 1:
  463. imResponse_3 = _a.sent();
  464. this.currentStore.messageList = this.currentStore.messageList.map(function (item) {
  465. if (item.ID === imResponse_3.data.message.ID) {
  466. return imResponse_3.data.message;
  467. }
  468. return item;
  469. });
  470. resolve(imResponse_3);
  471. return [3 /*break*/, 3];
  472. case 2:
  473. error_3 = _a.sent();
  474. reject(error_3);
  475. middleData = this.currentStore.messageList;
  476. this.currentStore.messageList = [];
  477. this.currentStore.messageList = middleData;
  478. return [3 /*break*/, 3];
  479. case 3: return [2 /*return*/];
  480. }
  481. });
  482. }); });
  483. };
  484. /**
  485. * 发送文件消息
  486. * Send file message
  487. *
  488. * @param {File} file 文件/file
  489. * @returns {Promise}
  490. */
  491. TUIChatServer.prototype.sendFileMessage = function (file) {
  492. var _this = this;
  493. return this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  494. var options, message_3, imResponse_4, error_4, middleData;
  495. var _this = this;
  496. return __generator(this, function (_a) {
  497. switch (_a.label) {
  498. case 0:
  499. _a.trys.push([0, 2, , 3]);
  500. options = this.handleMessageOptions({ file: file }, "file", function (progress) {
  501. _this.handleUploadProgress(progress, message_3);
  502. });
  503. message_3 = this.TUICore.tim.createFileMessage(options);
  504. message_3.progress = 0.01;
  505. this.currentStore.messageList.push(message_3);
  506. return [4 /*yield*/, this.TUICore.tim.sendMessage(message_3)];
  507. case 1:
  508. imResponse_4 = _a.sent();
  509. this.currentStore.messageList = this.currentStore.messageList.map(function (item) {
  510. if (item.ID === imResponse_4.data.message.ID) {
  511. return imResponse_4.data.message;
  512. }
  513. return item;
  514. });
  515. resolve(imResponse_4);
  516. return [3 /*break*/, 3];
  517. case 2:
  518. error_4 = _a.sent();
  519. reject(error_4);
  520. middleData = this.currentStore.messageList;
  521. this.currentStore.messageList = [];
  522. this.currentStore.messageList = middleData;
  523. return [3 /*break*/, 3];
  524. case 3: return [2 /*return*/];
  525. }
  526. });
  527. }); });
  528. };
  529. /**
  530. * 发送自定义消息
  531. * Send Custom message
  532. *
  533. * @param {Object} data 消息内容/message content
  534. * @param {String} data.data 自定义消息的数据字段/custom message data fields
  535. * @param {String} data.description 自定义消息的说明字段/custom message description fields
  536. * @param {String} data.extension 自定义消息的扩展字段/custom message extension fields
  537. * @returns {Promise}
  538. */
  539. TUIChatServer.prototype.sendCustomMessage = function (data) {
  540. var _this = this;
  541. return this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  542. var options, message, imResponse_5, error_5, middleData;
  543. return __generator(this, function (_a) {
  544. switch (_a.label) {
  545. case 0:
  546. _a.trys.push([0, 2, , 3]);
  547. data.data = JSON.stringify(data.data);
  548. options = this.handleMessageOptions(data, "custom");
  549. message = this.TUICore.tim.createCustomMessage(options);
  550. this.currentStore.messageList.push(message);
  551. return [4 /*yield*/, this.TUICore.tim.sendMessage(message)];
  552. case 1:
  553. imResponse_5 = _a.sent();
  554. this.currentStore.messageList = this.currentStore.messageList.map(function (item) {
  555. if (item.ID === imResponse_5.data.message.ID) {
  556. return imResponse_5.data.message;
  557. }
  558. return item;
  559. });
  560. resolve(imResponse_5);
  561. return [3 /*break*/, 3];
  562. case 2:
  563. error_5 = _a.sent();
  564. reject(error_5);
  565. middleData = this.currentStore.messageList;
  566. this.currentStore.messageList = [];
  567. this.currentStore.messageList = middleData;
  568. return [3 /*break*/, 3];
  569. case 3: return [2 /*return*/];
  570. }
  571. });
  572. }); });
  573. };
  574. /**
  575. * 发送地理位置消息
  576. * Send location message
  577. *
  578. * @param {Object} data 消息内容/message content
  579. * @param {String} data.description 地理位置描述信息/geographic descriptive information
  580. * @param {Number} data.longitude 经度/longitude
  581. * @param {Number} data.latitude 纬度/latitude
  582. * @returns {Promise}
  583. */
  584. TUIChatServer.prototype.sendLocationMessage = function (data) {
  585. var _this = this;
  586. return this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  587. var options, message, imResponse, error_6, middleData;
  588. return __generator(this, function (_a) {
  589. switch (_a.label) {
  590. case 0:
  591. _a.trys.push([0, 2, , 3]);
  592. options = this.handleMessageOptions(data, "location");
  593. message = this.TUICore.tim.createLocationMessage(options);
  594. this.currentStore.messageList.push(message);
  595. return [4 /*yield*/, this.TUICore.tim.sendMessage(message)];
  596. case 1:
  597. imResponse = _a.sent();
  598. resolve(imResponse);
  599. return [3 /*break*/, 3];
  600. case 2:
  601. error_6 = _a.sent();
  602. reject(error_6);
  603. middleData = this.currentStore.messageList;
  604. this.currentStore.messageList = [];
  605. this.currentStore.messageList = middleData;
  606. return [3 /*break*/, 3];
  607. case 3: return [2 /*return*/];
  608. }
  609. });
  610. }); });
  611. };
  612. /**
  613. * 转发消息
  614. * forward message
  615. *
  616. * @param {message} message 消息实例/message
  617. * @param {any} to 转发的对象/forward to
  618. * @returns {Promise}
  619. */
  620. TUIChatServer.prototype.forwardMessage = function (message, to) {
  621. var _this = this;
  622. return this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  623. var options, imMessage, imResponse, error_7, middleData;
  624. return __generator(this, function (_a) {
  625. switch (_a.label) {
  626. case 0:
  627. _a.trys.push([0, 2, , 3]);
  628. options = this.handleMessageOptions(message, "forward", {}, to);
  629. imMessage = this.TUICore.tim.createForwardMessage(options);
  630. return [4 /*yield*/, this.TUICore.tim.sendMessage(imMessage)];
  631. case 1:
  632. imResponse = _a.sent();
  633. if (this.store.conversation.conversationID ===
  634. imResponse.data.message.conversationID) {
  635. this.currentStore.messageList.push(imResponse.data.message);
  636. }
  637. resolve(imResponse);
  638. return [3 /*break*/, 3];
  639. case 2:
  640. error_7 = _a.sent();
  641. reject(error_7);
  642. middleData = this.currentStore.messageList;
  643. this.currentStore.messageList = [];
  644. this.currentStore.messageList = middleData;
  645. return [3 /*break*/, 3];
  646. case 3: return [2 /*return*/];
  647. }
  648. });
  649. }); });
  650. };
  651. /**
  652. * 发送消息已读回执
  653. * Send message read receipt
  654. *
  655. * @param {Array} messageList 同一个 C2C 或 GROUP 会话的消息列表,最大长度为30/A list of messages for the same C2C or GROUP conversation, with a maximum length of 30
  656. * @returns {Promise}
  657. */
  658. TUIChatServer.prototype.sendMessageReadReceipt = function (messageList) {
  659. return __awaiter(this, void 0, void 0, function () {
  660. var _this = this;
  661. return __generator(this, function (_a) {
  662. return [2 /*return*/, this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  663. var imResponse, error_8;
  664. return __generator(this, function (_a) {
  665. switch (_a.label) {
  666. case 0:
  667. _a.trys.push([0, 2, , 3]);
  668. return [4 /*yield*/, this.TUICore.tim.sendMessageReadReceipt(messageList)];
  669. case 1:
  670. imResponse = _a.sent();
  671. resolve(imResponse);
  672. return [3 /*break*/, 3];
  673. case 2:
  674. error_8 = _a.sent();
  675. reject(error_8);
  676. return [3 /*break*/, 3];
  677. case 3: return [2 /*return*/];
  678. }
  679. });
  680. }); })];
  681. });
  682. });
  683. };
  684. /**
  685. * 拉取已读回执列表
  686. * Pull read receipt list
  687. *
  688. * @param {Array} messageList 同一群会话的消息列表/The message list of the same group of the conversation
  689. * @returns {Promise}
  690. */
  691. TUIChatServer.prototype.getMessageReadReceiptList = function (messageList) {
  692. return __awaiter(this, void 0, void 0, function () {
  693. var _this = this;
  694. return __generator(this, function (_a) {
  695. return [2 /*return*/, this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  696. var imResponse, error_9;
  697. return __generator(this, function (_a) {
  698. switch (_a.label) {
  699. case 0:
  700. _a.trys.push([0, 2, , 3]);
  701. return [4 /*yield*/, this.TUICore.tim.getMessageReadReceiptList(messageList)];
  702. case 1:
  703. imResponse = _a.sent();
  704. resolve(imResponse);
  705. return [3 /*break*/, 3];
  706. case 2:
  707. error_9 = _a.sent();
  708. reject(error_9);
  709. return [3 /*break*/, 3];
  710. case 3: return [2 /*return*/];
  711. }
  712. });
  713. }); })];
  714. });
  715. });
  716. };
  717. /**
  718. * /////////////////////////////////////////////////////////////////////////////////
  719. * //
  720. * // 对外方法
  721. * //
  722. * /////////////////////////////////////////////////////////////////////////////////
  723. */
  724. /**
  725. * 获取 messageList
  726. * get messagelist
  727. *
  728. * @param {any} options 获取 messageList 参数/messageList options
  729. * @param {Boolean} history 是否获取历史消息/Whether to get historical information
  730. * @returns {Promise}
  731. */
  732. TUIChatServer.prototype.getMessageList = function (options, history) {
  733. return __awaiter(this, void 0, void 0, function () {
  734. var _this = this;
  735. return __generator(this, function (_a) {
  736. return [2 /*return*/, this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  737. var imResponse, error_10;
  738. return __generator(this, function (_a) {
  739. switch (_a.label) {
  740. case 0:
  741. _a.trys.push([0, 4, , 5]);
  742. return [4 /*yield*/, this.TUICore.tim.getMessageList(options)];
  743. case 1:
  744. imResponse = _a.sent();
  745. console.warn(imResponse.data.messageList);
  746. if (!imResponse.data.messageList.length) return [3 /*break*/, 3];
  747. return [4 /*yield*/, this.getMessageReadReceiptList(imResponse.data.messageList)];
  748. case 2:
  749. _a.sent();
  750. _a.label = 3;
  751. case 3:
  752. if (!history) {
  753. this.currentStore.messageList = imResponse.data.messageList;
  754. }
  755. else {
  756. this.currentStore.messageList = __spreadArrays(imResponse.data.messageList, this.currentStore.messageList);
  757. }
  758. this.currentStore.nextReqMessageID = imResponse.data.nextReqMessageID;
  759. this.currentStore.isCompleted = imResponse.data.isCompleted;
  760. resolve(imResponse);
  761. return [3 /*break*/, 5];
  762. case 4:
  763. error_10 = _a.sent();
  764. reject(error_10);
  765. return [3 /*break*/, 5];
  766. case 5: return [2 /*return*/];
  767. }
  768. });
  769. }); })];
  770. });
  771. });
  772. };
  773. /**
  774. * 获取历史消息
  775. * get history messagelist
  776. *
  777. * @returns {Promise}
  778. */
  779. TUIChatServer.prototype.getHistoryMessageList = function () {
  780. return __awaiter(this, void 0, void 0, function () {
  781. var options;
  782. return __generator(this, function (_a) {
  783. options = {
  784. conversationID: this.currentStore.conversation.conversationID,
  785. nextReqMessageID: this.currentStore.nextReqMessageID,
  786. count: 15
  787. };
  788. if (!this.currentStore.isCompleted) {
  789. this.getMessageList(options, true);
  790. }
  791. return [2 /*return*/];
  792. });
  793. });
  794. };
  795. /**
  796. * 发送文本消息
  797. * send text message
  798. *
  799. * @param {any} text 发送的消息/text message
  800. * @param {object} data 被引用消息的内容/The content of the quoted message
  801. * @returns {Promise}
  802. */
  803. TUIChatServer.prototype.sendTextMessage = function (text, data) {
  804. var _this = this;
  805. return this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  806. var options, cloudCustomDataObj, cloudCustomData, secondOptions, message, imResponse_6, error_11, middleData;
  807. return __generator(this, function (_a) {
  808. switch (_a.label) {
  809. case 0:
  810. _a.trys.push([0, 2, , 3]);
  811. options = this.handleMessageOptions({ text: text }, "text");
  812. cloudCustomDataObj = {};
  813. if (options.cloudCustomData) {
  814. try {
  815. cloudCustomDataObj = utils_1.JSONToObject(options.cloudCustomData);
  816. }
  817. catch (_b) {
  818. cloudCustomDataObj = {};
  819. }
  820. }
  821. cloudCustomData = JSON.stringify(data);
  822. secondOptions = Object.assign(options, __assign({ cloudCustomData: cloudCustomData }, cloudCustomDataObj));
  823. message = this.TUICore.tim.createTextMessage(secondOptions);
  824. this.currentStore.messageList.push(message);
  825. return [4 /*yield*/, this.TUICore.tim.sendMessage(message)];
  826. case 1:
  827. imResponse_6 = _a.sent();
  828. this.currentStore.messageList = this.currentStore.messageList.map(function (item) {
  829. if (item.ID === imResponse_6.data.message.ID) {
  830. return imResponse_6.data.message;
  831. }
  832. return item;
  833. });
  834. resolve(imResponse_6);
  835. return [3 /*break*/, 3];
  836. case 2:
  837. error_11 = _a.sent();
  838. reject(error_11);
  839. middleData = this.currentStore.messageList;
  840. this.currentStore.messageList = [];
  841. this.currentStore.messageList = middleData;
  842. return [3 /*break*/, 3];
  843. case 3: return [2 /*return*/];
  844. }
  845. });
  846. }); });
  847. };
  848. /**
  849. * 发送【对方正在输入中】在线自定义消息
  850. * send typing online custom message
  851. *
  852. * @param {Object} data 消息内容/message content
  853. * @param {String} data.data 自定义消息的数据字段/custom message data field
  854. * @param {String} data.description 自定义消息的说明字段/custom message description field
  855. * @param {String} data.extension 自定义消息的扩展字段/custom message extension field
  856. * @returns {Promise}
  857. */
  858. TUIChatServer.prototype.sendTypingMessage = function (data) {
  859. var _this = this;
  860. return this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  861. var options, message, imResponse, error_12, middleData;
  862. return __generator(this, function (_a) {
  863. switch (_a.label) {
  864. case 0:
  865. _a.trys.push([0, 2, , 3]);
  866. data.data = JSON.stringify(data.data);
  867. options = this.handleMessageOptions(data, "custom");
  868. message = this.TUICore.tim.createCustomMessage(options);
  869. return [4 /*yield*/, this.TUICore.tim.sendMessage(message, {
  870. onlineUserOnly: true
  871. })];
  872. case 1:
  873. imResponse = _a.sent();
  874. resolve(imResponse);
  875. return [3 /*break*/, 3];
  876. case 2:
  877. error_12 = _a.sent();
  878. reject(error_12);
  879. middleData = this.currentStore.messageList;
  880. this.currentStore.messageList = [];
  881. this.currentStore.messageList = middleData;
  882. return [3 /*break*/, 3];
  883. case 3: return [2 /*return*/];
  884. }
  885. });
  886. }); });
  887. };
  888. /**
  889. * 发送@ 提醒功能的文本消息
  890. * Send @ Reminder text message
  891. *
  892. * @param {any} data 消息内容/message content
  893. * @param {String} data.text 文本消息/text message
  894. * @param {Array} data.atUserList 需要 @ 的用户列表,如果需要 @ALL,请传入 TIM.TYPES.MSG_AT_ALL / List of users who need @, if you need @ALL, please pass in TIM.TYPES.MSG_AT_ALL
  895. * @returns {message}
  896. *
  897. * - 注:此接口仅用于群聊/This interface is only used for group chat
  898. */
  899. TUIChatServer.prototype.sendTextAtMessage = function (data) {
  900. var _this = this;
  901. return this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  902. var options, message, imResponse_7, error_13, middleData;
  903. return __generator(this, function (_a) {
  904. switch (_a.label) {
  905. case 0:
  906. _a.trys.push([0, 2, , 3]);
  907. options = this.handleMessageOptions(data, "text");
  908. message = this.TUICore.tim.createTextAtMessage(options);
  909. this.currentStore.messageList.push(message);
  910. return [4 /*yield*/, this.TUICore.tim.sendMessage(message)];
  911. case 1:
  912. imResponse_7 = _a.sent();
  913. this.currentStore.messageList = this.currentStore.messageList.map(function (item) {
  914. if (item.ID === imResponse_7.data.message.ID) {
  915. return imResponse_7.data.message;
  916. }
  917. return item;
  918. });
  919. resolve(imResponse_7);
  920. return [3 /*break*/, 3];
  921. case 2:
  922. error_13 = _a.sent();
  923. reject(error_13);
  924. middleData = this.currentStore.messageList;
  925. this.currentStore.messageList = [];
  926. this.currentStore.messageList = middleData;
  927. return [3 /*break*/, 3];
  928. case 3: return [2 /*return*/];
  929. }
  930. });
  931. }); });
  932. };
  933. /**
  934. * 发送合并消息
  935. * send merger message
  936. *
  937. * @param {Object} data 消息内容/message content
  938. * @param {Array.<Message>} data.messageList 合并的消息列表/merger message list
  939. * @param {String} data.title 合并的标题/merger title
  940. * @param {String} data.abstractList 摘要列表,不同的消息类型可以设置不同的摘要信息/Summary list, different message types can set different summary information
  941. * @param {String} data.compatibleText 兼容文本/ompatible text
  942. * @returns {Promise}
  943. */
  944. TUIChatServer.prototype.sendMergerMessage = function (data) {
  945. var _this = this;
  946. return this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  947. var options, message, imResponse_8, error_14, middleData;
  948. return __generator(this, function (_a) {
  949. switch (_a.label) {
  950. case 0:
  951. _a.trys.push([0, 2, , 3]);
  952. options = this.handleMessageOptions(data, "merger");
  953. message = this.TUICore.tim.createMergerMessage(options);
  954. this.currentStore.messageList.push(message);
  955. return [4 /*yield*/, this.TUICore.tim.sendMessage(message)];
  956. case 1:
  957. imResponse_8 = _a.sent();
  958. this.currentStore.messageList = this.currentStore.messageList.map(function (item) {
  959. if (item.ID === imResponse_8.data.message.ID) {
  960. return imResponse_8.data.message;
  961. }
  962. return item;
  963. });
  964. resolve(imResponse_8);
  965. return [3 /*break*/, 3];
  966. case 2:
  967. error_14 = _a.sent();
  968. reject(error_14);
  969. middleData = this.currentStore.messageList;
  970. this.currentStore.messageList = [];
  971. this.currentStore.messageList = middleData;
  972. return [3 /*break*/, 3];
  973. case 3: return [2 /*return*/];
  974. }
  975. });
  976. }); });
  977. };
  978. /**
  979. * 消息撤回
  980. * revoke message
  981. *
  982. * @param {message} message 消息实例/message
  983. * @returns {Promise}
  984. */
  985. TUIChatServer.prototype.revokeMessage = function (message) {
  986. var _this = this;
  987. return this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  988. var imResponse, cloudCustomData, error_15, middleData;
  989. var _a;
  990. return __generator(this, function (_b) {
  991. switch (_b.label) {
  992. case 0:
  993. _b.trys.push([0, 4, , 5]);
  994. return [4 /*yield*/, this.TUICore.tim.revokeMessage(message)];
  995. case 1:
  996. imResponse = _b.sent();
  997. cloudCustomData = utils_1.JSONToObject(message === null || message === void 0 ? void 0 : message.cloudCustomData);
  998. if (!((_a = cloudCustomData === null || cloudCustomData === void 0 ? void 0 : cloudCustomData.messageReply) === null || _a === void 0 ? void 0 : _a.messageRootID)) return [3 /*break*/, 3];
  999. return [4 /*yield*/, this.revokeReplyMessage(message)];
  1000. case 2:
  1001. _b.sent();
  1002. _b.label = 3;
  1003. case 3:
  1004. resolve(imResponse);
  1005. return [3 /*break*/, 5];
  1006. case 4:
  1007. error_15 = _b.sent();
  1008. reject(error_15);
  1009. middleData = this.currentStore.messageList;
  1010. this.currentStore.messageList = [];
  1011. this.currentStore.messageList = middleData;
  1012. return [3 /*break*/, 5];
  1013. case 5: return [2 /*return*/];
  1014. }
  1015. });
  1016. }); });
  1017. };
  1018. /**
  1019. * 重发消息
  1020. * resend message
  1021. *
  1022. * @param {message} message 消息实例/message
  1023. * @returns {Promise}
  1024. */
  1025. TUIChatServer.prototype.resendMessage = function (message) {
  1026. var _this = this;
  1027. return this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  1028. var imResponse, error_16;
  1029. return __generator(this, function (_a) {
  1030. switch (_a.label) {
  1031. case 0:
  1032. _a.trys.push([0, 2, , 3]);
  1033. return [4 /*yield*/, this.TUICore.tim.resendMessage(message)];
  1034. case 1:
  1035. imResponse = _a.sent();
  1036. this.currentStore.messageList = this.currentStore.messageList.filter(function (item) { return item.ID !== message.ID; });
  1037. this.currentStore.messageList.push(imResponse.data.message);
  1038. resolve(imResponse);
  1039. return [3 /*break*/, 3];
  1040. case 2:
  1041. error_16 = _a.sent();
  1042. reject(error_16);
  1043. return [3 /*break*/, 3];
  1044. case 3: return [2 /*return*/];
  1045. }
  1046. });
  1047. }); });
  1048. };
  1049. /**
  1050. * 删除消息
  1051. * delete message
  1052. *
  1053. * @param {Array.<message>} messages 消息实例/message
  1054. * @returns {Promise}
  1055. */
  1056. TUIChatServer.prototype.deleteMessage = function (messages) {
  1057. var _this = this;
  1058. return this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  1059. var imResponse, middleData, error_17;
  1060. return __generator(this, function (_a) {
  1061. switch (_a.label) {
  1062. case 0:
  1063. _a.trys.push([0, 2, , 3]);
  1064. return [4 /*yield*/, this.TUICore.tim.deleteMessage(messages)];
  1065. case 1:
  1066. imResponse = _a.sent();
  1067. resolve(imResponse);
  1068. middleData = this.currentStore.messageList;
  1069. this.currentStore.messageList = [];
  1070. this.currentStore.messageList = middleData;
  1071. return [3 /*break*/, 3];
  1072. case 2:
  1073. error_17 = _a.sent();
  1074. reject(error_17);
  1075. return [3 /*break*/, 3];
  1076. case 3: return [2 /*return*/];
  1077. }
  1078. });
  1079. }); });
  1080. };
  1081. /**
  1082. * 变更消息
  1083. * modify message
  1084. *
  1085. * @param {Array.<message>} message 消息实例/message
  1086. * @returns {Promise}
  1087. */
  1088. TUIChatServer.prototype.modifyMessage = function (message) {
  1089. var _this = this;
  1090. return this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  1091. var imResponse, error_18, code, data;
  1092. var _a, _b;
  1093. return __generator(this, function (_c) {
  1094. switch (_c.label) {
  1095. case 0:
  1096. _c.trys.push([0, 2, , 3]);
  1097. return [4 /*yield*/, this.TUICore.tim.modifyMessage(message)];
  1098. case 1:
  1099. imResponse = _c.sent();
  1100. resolve(imResponse);
  1101. return [3 /*break*/, 3];
  1102. case 2:
  1103. error_18 = _c.sent();
  1104. code = (_a = error_18) === null || _a === void 0 ? void 0 : _a.code;
  1105. data = (_b = error_18) === null || _b === void 0 ? void 0 : _b.data;
  1106. if (code === 2480) {
  1107. console.warn("MODIFY_MESSAGE_ERROR", "修改消息发生冲突,data.message 是最新的消息", "data.message:", data === null || data === void 0 ? void 0 : data.message);
  1108. }
  1109. else if (code === 2481) {
  1110. console.warn("MODIFY_MESSAGE_ERROR", "不支持修改直播群消息");
  1111. }
  1112. else if (code === 20026) {
  1113. console.warn("MODIFY_MESSAGE_ERROR", "消息不存在");
  1114. }
  1115. reject(error_18);
  1116. return [3 /*break*/, 3];
  1117. case 3: return [2 /*return*/];
  1118. }
  1119. });
  1120. }); });
  1121. };
  1122. /**
  1123. * 回复消息
  1124. * reply message
  1125. * @param {Array.<message>} message 消息实例/message
  1126. * @returns {Promise}
  1127. */
  1128. TUIChatServer.prototype.replyMessage = function (message, messageRoot) {
  1129. var _this = this;
  1130. var replyFunction = function () {
  1131. return _this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  1132. var repliesObject, cloudCustomData, messageRootID_1, rootCloudCustomData, imResponse, error_19;
  1133. var _a, _b, _c, _d, _e, _f;
  1134. return __generator(this, function (_g) {
  1135. switch (_g.label) {
  1136. case 0:
  1137. _g.trys.push([0, 3, , 4]);
  1138. repliesObject = {
  1139. messageAbstract: (_a = message === null || message === void 0 ? void 0 : message.payload) === null || _a === void 0 ? void 0 : _a.text,
  1140. messageSender: message === null || message === void 0 ? void 0 : message.from,
  1141. messageID: message === null || message === void 0 ? void 0 : message.ID,
  1142. messageType: message === null || message === void 0 ? void 0 : message.type,
  1143. messageTime: message === null || message === void 0 ? void 0 : message.time,
  1144. messageSequence: message === null || message === void 0 ? void 0 : message.sequence,
  1145. version: 1
  1146. };
  1147. if (!!messageRoot) return [3 /*break*/, 2];
  1148. cloudCustomData = utils_1.JSONToObject(message === null || message === void 0 ? void 0 : message.cloudCustomData);
  1149. messageRootID_1 = (_b = cloudCustomData === null || cloudCustomData === void 0 ? void 0 : cloudCustomData.messageReply) === null || _b === void 0 ? void 0 : _b.messageRootID;
  1150. return [4 /*yield*/, ((_d = (_c = this === null || this === void 0 ? void 0 : this.currentStore) === null || _c === void 0 ? void 0 : _c.messageList) === null || _d === void 0 ? void 0 : _d.find(function (item) { return (item === null || item === void 0 ? void 0 : item.ID) === messageRootID_1; }))];
  1151. case 1:
  1152. messageRoot =
  1153. (_g.sent()) || this.findMessage(messageRootID_1);
  1154. _g.label = 2;
  1155. case 2:
  1156. rootCloudCustomData = (messageRoot === null || messageRoot === void 0 ? void 0 : messageRoot.cloudCustomData) ? utils_1.JSONToObject(messageRoot === null || messageRoot === void 0 ? void 0 : messageRoot.cloudCustomData)
  1157. : { messageReplies: {} };
  1158. if ((_e = rootCloudCustomData === null || rootCloudCustomData === void 0 ? void 0 : rootCloudCustomData.messageReplies) === null || _e === void 0 ? void 0 : _e.replies) {
  1159. rootCloudCustomData.messageReplies.replies = __spreadArrays((_f = rootCloudCustomData === null || rootCloudCustomData === void 0 ? void 0 : rootCloudCustomData.messageReplies) === null || _f === void 0 ? void 0 : _f.replies, [
  1160. repliesObject,
  1161. ]);
  1162. }
  1163. else {
  1164. rootCloudCustomData.messageReplies = {
  1165. replies: [repliesObject],
  1166. version: 1
  1167. };
  1168. }
  1169. messageRoot.cloudCustomData = JSON.stringify(rootCloudCustomData);
  1170. imResponse = this.modifyMessage(messageRoot);
  1171. resolve(imResponse);
  1172. return [3 /*break*/, 4];
  1173. case 3:
  1174. error_19 = _g.sent();
  1175. reject(error_19);
  1176. return [3 /*break*/, 4];
  1177. case 4: return [2 /*return*/];
  1178. }
  1179. });
  1180. }); });
  1181. };
  1182. var retryBreakFunction = function (error) {
  1183. if (error && (error === null || error === void 0 ? void 0 : error.code) === 2480)
  1184. return false;
  1185. return true;
  1186. };
  1187. return this.handlePromiseCallbackRetry(replyFunction, [500, 1000, 3000], retryBreakFunction);
  1188. };
  1189. /**
  1190. * 撤回回复消息
  1191. * revoke reply message
  1192. * @param {Array.<message>} message 消息实例/message
  1193. * @returns {Promise}
  1194. */
  1195. TUIChatServer.prototype.revokeReplyMessage = function (message, messageRoot) {
  1196. var _this = this;
  1197. var revokeReplyFunction = function () {
  1198. return _this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  1199. var cloudCustomData, messageRootID_2, rootCloudCustomData, index, imResponse, error_20;
  1200. var _a, _b, _c, _d, _e, _f;
  1201. return __generator(this, function (_g) {
  1202. switch (_g.label) {
  1203. case 0:
  1204. _g.trys.push([0, 3, , 4]);
  1205. if (!!messageRoot) return [3 /*break*/, 2];
  1206. cloudCustomData = utils_1.JSONToObject(message === null || message === void 0 ? void 0 : message.cloudCustomData);
  1207. messageRootID_2 = (_a = cloudCustomData === null || cloudCustomData === void 0 ? void 0 : cloudCustomData.messageReply) === null || _a === void 0 ? void 0 : _a.messageRootID;
  1208. return [4 /*yield*/, ((_c = (_b = this === null || this === void 0 ? void 0 : this.currentStore) === null || _b === void 0 ? void 0 : _b.messageList) === null || _c === void 0 ? void 0 : _c.find(function (item) { return (item === null || item === void 0 ? void 0 : item.ID) === messageRootID_2; }))];
  1209. case 1:
  1210. messageRoot =
  1211. (_g.sent()) || this.findMessage(messageRootID_2);
  1212. _g.label = 2;
  1213. case 2:
  1214. rootCloudCustomData = (messageRoot === null || messageRoot === void 0 ? void 0 : messageRoot.cloudCustomData) ? utils_1.JSONToObject(messageRoot === null || messageRoot === void 0 ? void 0 : messageRoot.cloudCustomData)
  1215. : { messageReplies: {} };
  1216. if ((_d = rootCloudCustomData === null || rootCloudCustomData === void 0 ? void 0 : rootCloudCustomData.messageReplies) === null || _d === void 0 ? void 0 : _d.replies) {
  1217. index = rootCloudCustomData.messageReplies.replies.findIndex(function (item) { return (item === null || item === void 0 ? void 0 : item.messageID) === (message === null || message === void 0 ? void 0 : message.ID); });
  1218. (_f = (_e = rootCloudCustomData === null || rootCloudCustomData === void 0 ? void 0 : rootCloudCustomData.messageReplies) === null || _e === void 0 ? void 0 : _e.replies) === null || _f === void 0 ? void 0 : _f.splice(index, 1);
  1219. }
  1220. messageRoot.cloudCustomData = JSON.stringify(rootCloudCustomData);
  1221. imResponse = this.modifyMessage(messageRoot);
  1222. resolve(imResponse);
  1223. return [3 /*break*/, 4];
  1224. case 3:
  1225. error_20 = _g.sent();
  1226. reject(error_20);
  1227. return [3 /*break*/, 4];
  1228. case 4: return [2 /*return*/];
  1229. }
  1230. });
  1231. }); });
  1232. };
  1233. var retryBreakFunction = function (error) {
  1234. if (error && (error === null || error === void 0 ? void 0 : error.code) === 2480)
  1235. return false;
  1236. return true;
  1237. };
  1238. return this.handlePromiseCallbackRetry(revokeReplyFunction, [500, 1000, 3000], retryBreakFunction);
  1239. };
  1240. /**
  1241. * 表情回应
  1242. * emoji react
  1243. * @param {Array.<message>} message 消息实例/message
  1244. * @returns {Promise}
  1245. */
  1246. TUIChatServer.prototype.emojiReact = function (message, emojiID) {
  1247. var _this = this;
  1248. var emojiReactFunction = function () {
  1249. return _this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  1250. var userID, cloudCustomData, index, imResponse, error_21;
  1251. var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
  1252. return __generator(this, function (_u) {
  1253. switch (_u.label) {
  1254. case 0:
  1255. _u.trys.push([0, 2, , 3]);
  1256. if (!message || !(message === null || message === void 0 ? void 0 : message.ID) || !emojiID)
  1257. reject();
  1258. userID = (_e = (_d = (_c = (_b = (_a = this.TUICore) === null || _a === void 0 ? void 0 : _a.TUIServer) === null || _b === void 0 ? void 0 : _b.TUIProfile) === null || _c === void 0 ? void 0 : _c.store) === null || _d === void 0 ? void 0 : _d.profile) === null || _e === void 0 ? void 0 : _e.userID;
  1259. return [4 /*yield*/, ((_g = (_f = this === null || this === void 0 ? void 0 : this.currentStore) === null || _f === void 0 ? void 0 : _f.messageList) === null || _g === void 0 ? void 0 : _g.find(function (item) { return (item === null || item === void 0 ? void 0 : item.ID) === (message === null || message === void 0 ? void 0 : message.ID); }))];
  1260. case 1:
  1261. message =
  1262. (_u.sent()) || this.findMessage(message === null || message === void 0 ? void 0 : message.ID);
  1263. cloudCustomData = (message === null || message === void 0 ? void 0 : message.cloudCustomData) ? utils_1.JSONToObject(message === null || message === void 0 ? void 0 : message.cloudCustomData)
  1264. : { messageReact: {} };
  1265. if ((_h = cloudCustomData === null || cloudCustomData === void 0 ? void 0 : cloudCustomData.messageReact) === null || _h === void 0 ? void 0 : _h.reacts) {
  1266. if ((_j = cloudCustomData === null || cloudCustomData === void 0 ? void 0 : cloudCustomData.messageReact) === null || _j === void 0 ? void 0 : _j.reacts[emojiID]) {
  1267. index = (_l = (_k = cloudCustomData === null || cloudCustomData === void 0 ? void 0 : cloudCustomData.messageReact) === null || _k === void 0 ? void 0 : _k.reacts[emojiID]) === null || _l === void 0 ? void 0 : _l.indexOf(userID);
  1268. if (index === -1) {
  1269. (_o = (_m = cloudCustomData === null || cloudCustomData === void 0 ? void 0 : cloudCustomData.messageReact) === null || _m === void 0 ? void 0 : _m.reacts[emojiID]) === null || _o === void 0 ? void 0 : _o.push(userID);
  1270. }
  1271. else {
  1272. (_q = (_p = cloudCustomData === null || cloudCustomData === void 0 ? void 0 : cloudCustomData.messageReact) === null || _p === void 0 ? void 0 : _p.reacts[emojiID]) === null || _q === void 0 ? void 0 : _q.splice(index, 1);
  1273. if (((_s = (_r = cloudCustomData === null || cloudCustomData === void 0 ? void 0 : cloudCustomData.messageReact) === null || _r === void 0 ? void 0 : _r.reacts[emojiID]) === null || _s === void 0 ? void 0 : _s.length) === 0) {
  1274. (_t = cloudCustomData === null || cloudCustomData === void 0 ? void 0 : cloudCustomData.messageReact) === null || _t === void 0 ? true : delete _t.reacts[emojiID];
  1275. }
  1276. }
  1277. }
  1278. else {
  1279. cloudCustomData.messageReact.reacts[emojiID] = [userID];
  1280. }
  1281. }
  1282. else {
  1283. cloudCustomData.messageReact = {
  1284. reacts: {},
  1285. version: 1
  1286. };
  1287. cloudCustomData.messageReact.reacts[emojiID] = [userID];
  1288. }
  1289. message.cloudCustomData = JSON.stringify(cloudCustomData);
  1290. imResponse = this.modifyMessage(message);
  1291. resolve(imResponse);
  1292. return [3 /*break*/, 3];
  1293. case 2:
  1294. error_21 = _u.sent();
  1295. reject(error_21);
  1296. return [3 /*break*/, 3];
  1297. case 3: return [2 /*return*/];
  1298. }
  1299. });
  1300. }); });
  1301. };
  1302. var retryBreakFunction = function (error) {
  1303. if (error && (error === null || error === void 0 ? void 0 : error.code) === 2480)
  1304. return false;
  1305. return true;
  1306. };
  1307. return this.handlePromiseCallbackRetry(emojiReactFunction, [500, 1000, 3000], retryBreakFunction);
  1308. };
  1309. /**
  1310. * 查询消息
  1311. * find message
  1312. * @param {String} messageID 消息实例ID/messageID
  1313. * @returns {Promise}
  1314. */
  1315. TUIChatServer.prototype.findMessage = function (messageID) {
  1316. var _this = this;
  1317. return this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  1318. var imResponse, error_22;
  1319. return __generator(this, function (_a) {
  1320. switch (_a.label) {
  1321. case 0:
  1322. _a.trys.push([0, 2, , 3]);
  1323. return [4 /*yield*/, this.TUICore.tim.findMessage(messageID)];
  1324. case 1:
  1325. imResponse = _a.sent();
  1326. resolve(imResponse);
  1327. return [3 /*break*/, 3];
  1328. case 2:
  1329. error_22 = _a.sent();
  1330. reject(error_22);
  1331. return [3 /*break*/, 3];
  1332. case 3: return [2 /*return*/];
  1333. }
  1334. });
  1335. }); });
  1336. };
  1337. /**
  1338. * 获取群组属性
  1339. * get group profile
  1340. *
  1341. * @param {any} options 参数
  1342. * @param {String} options.groupID 群组ID
  1343. * @param {Array.<String>} options.groupProfileFilter 群资料过滤器
  1344. * @returns {Promise}
  1345. */
  1346. TUIChatServer.prototype.getGroupProfile = function (options) {
  1347. var _this = this;
  1348. return this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  1349. var imResponse, error_23;
  1350. return __generator(this, function (_a) {
  1351. switch (_a.label) {
  1352. case 0:
  1353. _a.trys.push([0, 2, , 3]);
  1354. return [4 /*yield*/, this.TUICore.tim.getGroupProfile(options)];
  1355. case 1:
  1356. imResponse = _a.sent();
  1357. this.currentStore.conversation.groupProfile = imResponse.data.group;
  1358. resolve(imResponse);
  1359. return [3 /*break*/, 3];
  1360. case 2:
  1361. error_23 = _a.sent();
  1362. reject(error_23);
  1363. return [3 /*break*/, 3];
  1364. case 3: return [2 /*return*/];
  1365. }
  1366. });
  1367. }); });
  1368. };
  1369. /**
  1370. * 获取群成员资料
  1371. * get group member profile
  1372. *
  1373. * @param {any} options 参数
  1374. * @param {String} options.groupID 群组ID
  1375. * @param {Array.<String>} options.userIDList 要查询的群成员用户 ID 列表
  1376. * @param { Array.<String>} options.memberCustomFieldFilter 群成员自定义字段筛选
  1377. * @returns {Promise}
  1378. */
  1379. TUIChatServer.prototype.getGroupMemberProfile = function (options) {
  1380. var _this = this;
  1381. return this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  1382. var imResponse, error_24;
  1383. return __generator(this, function (_a) {
  1384. switch (_a.label) {
  1385. case 0:
  1386. _a.trys.push([0, 2, , 3]);
  1387. return [4 /*yield*/, this.TUICore.tim.getGroupMemberProfile(options)];
  1388. case 1:
  1389. imResponse = _a.sent();
  1390. resolve(imResponse);
  1391. return [3 /*break*/, 3];
  1392. case 2:
  1393. error_24 = _a.sent();
  1394. reject(error_24);
  1395. return [3 /*break*/, 3];
  1396. case 3: return [2 /*return*/];
  1397. }
  1398. });
  1399. }); });
  1400. };
  1401. /**
  1402. * 处理申请加群
  1403. * handling group application
  1404. * - 管理员
  1405. * administrator
  1406. *
  1407. * @param {any} options 参数
  1408. * @param {String} options.handleAction 处理结果 Agree(同意) / Reject(拒绝)
  1409. * @param {String} options.handleMessage 附言
  1410. * @param {Message} options.message 对应【群系统通知】的消息实例
  1411. * @returns {Promise}
  1412. */
  1413. TUIChatServer.prototype.handleGroupApplication = function (options) {
  1414. var _this = this;
  1415. return this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  1416. var imResponse, error_25;
  1417. return __generator(this, function (_a) {
  1418. switch (_a.label) {
  1419. case 0:
  1420. _a.trys.push([0, 2, , 3]);
  1421. return [4 /*yield*/, this.TUICore.tim.handleGroupApplication(options)];
  1422. case 1:
  1423. imResponse = _a.sent();
  1424. resolve(imResponse);
  1425. return [3 /*break*/, 3];
  1426. case 2:
  1427. error_25 = _a.sent();
  1428. reject(error_25);
  1429. return [3 /*break*/, 3];
  1430. case 3: return [2 /*return*/];
  1431. }
  1432. });
  1433. }); });
  1434. };
  1435. /**
  1436. * 获取其他用户资料
  1437. * get user profile
  1438. *
  1439. * @param {Array<string>} userIDList 用户的账号列表/userID list
  1440. * @returns {Promise}
  1441. */
  1442. TUIChatServer.prototype.getUserProfile = function (userIDList) {
  1443. return __awaiter(this, void 0, void 0, function () {
  1444. var _this = this;
  1445. return __generator(this, function (_a) {
  1446. return [2 /*return*/, this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  1447. var imResponse, error_26;
  1448. return __generator(this, function (_a) {
  1449. switch (_a.label) {
  1450. case 0:
  1451. _a.trys.push([0, 2, , 3]);
  1452. return [4 /*yield*/, this.TUICore.tim.getUserProfile({
  1453. userIDList: userIDList
  1454. })];
  1455. case 1:
  1456. imResponse = _a.sent();
  1457. resolve(imResponse);
  1458. return [3 /*break*/, 3];
  1459. case 2:
  1460. error_26 = _a.sent();
  1461. reject(error_26);
  1462. return [3 /*break*/, 3];
  1463. case 3: return [2 /*return*/];
  1464. }
  1465. });
  1466. }); })];
  1467. });
  1468. });
  1469. };
  1470. /**
  1471. * 获取 SDK 缓存的好友列表
  1472. * Get the friend list cached by the SDK
  1473. *
  1474. * @param {Array<string>} userIDList 用户的账号列表
  1475. * @returns {Promise}
  1476. */
  1477. TUIChatServer.prototype.getFriendList = function () {
  1478. return __awaiter(this, void 0, Promise, function () {
  1479. var _this = this;
  1480. return __generator(this, function (_a) {
  1481. return [2 /*return*/, this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  1482. var imResponse, error_27;
  1483. return __generator(this, function (_a) {
  1484. switch (_a.label) {
  1485. case 0:
  1486. _a.trys.push([0, 2, , 3]);
  1487. return [4 /*yield*/, this.TUICore.tim.getFriendList()];
  1488. case 1:
  1489. imResponse = _a.sent();
  1490. resolve(imResponse);
  1491. return [3 /*break*/, 3];
  1492. case 2:
  1493. error_27 = _a.sent();
  1494. reject(error_27);
  1495. return [3 /*break*/, 3];
  1496. case 3: return [2 /*return*/];
  1497. }
  1498. });
  1499. }); })];
  1500. });
  1501. });
  1502. };
  1503. /**
  1504. * 校验好友关系
  1505. * check friend
  1506. *
  1507. * @param {string} userID 用户账号
  1508. * @returns {Promise}
  1509. */
  1510. TUIChatServer.prototype.checkFriend = function (userID, type) {
  1511. return __awaiter(this, void 0, Promise, function () {
  1512. var _this = this;
  1513. return __generator(this, function (_a) {
  1514. return [2 /*return*/, this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  1515. var imResponse, isFriendShip, error_28;
  1516. var _a, _b;
  1517. return __generator(this, function (_c) {
  1518. switch (_c.label) {
  1519. case 0:
  1520. _c.trys.push([0, 2, , 3]);
  1521. return [4 /*yield*/, this.TUICore.tim.checkFriend({
  1522. userIDList: [userID],
  1523. type: type
  1524. })];
  1525. case 1:
  1526. imResponse = _c.sent();
  1527. isFriendShip = (_b = (_a = imResponse === null || imResponse === void 0 ? void 0 : imResponse.data) === null || _a === void 0 ? void 0 : _a.successUserIDList[0]) === null || _b === void 0 ? void 0 : _b.relation;
  1528. resolve(isFriendShip);
  1529. return [3 /*break*/, 3];
  1530. case 2:
  1531. error_28 = _c.sent();
  1532. reject(error_28);
  1533. return [3 /*break*/, 3];
  1534. case 3: return [2 /*return*/];
  1535. }
  1536. });
  1537. }); })];
  1538. });
  1539. });
  1540. };
  1541. /**
  1542. * 获取群消息已读成员列表
  1543. * Get the list of memebers who have read the group message.
  1544. *
  1545. * @param {message} message 消息实例/message
  1546. * @param {string} cursor 分页拉取的游标,第一次拉取传''/Paging pull the cursor,first pull pass ''
  1547. * @param {number} count 分页拉取的个数/The number of page pulls
  1548. * @returns {Promise}
  1549. */
  1550. TUIChatServer.prototype.getGroupReadMemberList = function (message, cursor, count) {
  1551. if (cursor === void 0) { cursor = ""; }
  1552. if (count === void 0) { count = 15; }
  1553. return __awaiter(this, void 0, Promise, function () {
  1554. var _this = this;
  1555. return __generator(this, function (_a) {
  1556. return [2 /*return*/, this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  1557. var imResponse, error_29;
  1558. return __generator(this, function (_a) {
  1559. switch (_a.label) {
  1560. case 0:
  1561. _a.trys.push([0, 2, , 3]);
  1562. return [4 /*yield*/, this.TUICore.tim.getGroupMessageReadMemberList({
  1563. message: message,
  1564. filter: 0,
  1565. cursor: cursor,
  1566. count: count
  1567. })];
  1568. case 1:
  1569. imResponse = _a.sent();
  1570. resolve(imResponse);
  1571. return [3 /*break*/, 3];
  1572. case 2:
  1573. error_29 = _a.sent();
  1574. reject(error_29);
  1575. return [3 /*break*/, 3];
  1576. case 3: return [2 /*return*/];
  1577. }
  1578. });
  1579. }); })];
  1580. });
  1581. });
  1582. };
  1583. /**
  1584. * 获取群消息未读成员列表
  1585. * Get the list of memebers who have not read the group message.
  1586. *
  1587. * @param {message} message 消息实例/message
  1588. * @param {string} cursor 分页拉取的游标,第一次拉取传''/Paging pull the cursor,first pull pass ''
  1589. * @param {number} count 分页拉取的个数/The number of page pulls
  1590. * @returns {Promise}
  1591. */
  1592. TUIChatServer.prototype.getGroupUnreadMemberList = function (message, cursor, count) {
  1593. if (cursor === void 0) { cursor = ""; }
  1594. if (count === void 0) { count = 15; }
  1595. return __awaiter(this, void 0, Promise, function () {
  1596. var _this = this;
  1597. return __generator(this, function (_a) {
  1598. return [2 /*return*/, this.handlePromiseCallback(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
  1599. var imResponse, error_30;
  1600. return __generator(this, function (_a) {
  1601. switch (_a.label) {
  1602. case 0:
  1603. _a.trys.push([0, 2, , 3]);
  1604. return [4 /*yield*/, this.TUICore.tim.getGroupMessageReadMemberList({
  1605. message: message,
  1606. filter: 1,
  1607. cursor: cursor,
  1608. count: count
  1609. })];
  1610. case 1:
  1611. imResponse = _a.sent();
  1612. resolve(imResponse);
  1613. return [3 /*break*/, 3];
  1614. case 2:
  1615. error_30 = _a.sent();
  1616. reject(error_30);
  1617. return [3 /*break*/, 3];
  1618. case 3: return [2 /*return*/];
  1619. }
  1620. });
  1621. }); })];
  1622. });
  1623. });
  1624. };
  1625. /**
  1626. * 自己发送消息上屏显示
  1627. *
  1628. * @param {message} message 消息实例/message
  1629. */
  1630. TUIChatServer.prototype.handleMessageSentByMeToView = function (message) {
  1631. var _a, _b;
  1632. return __awaiter(this, void 0, void 0, function () {
  1633. return __generator(this, function (_c) {
  1634. if ((message === null || message === void 0 ? void 0 : message.conversationID) === ((_b = (_a = this === null || this === void 0 ? void 0 : this.store) === null || _a === void 0 ? void 0 : _a.conversation) === null || _b === void 0 ? void 0 : _b.conversationID)) {
  1635. this.currentStore.messageList.push(message);
  1636. }
  1637. return [2 /*return*/];
  1638. });
  1639. });
  1640. };
  1641. /**
  1642. * /////////////////////////////////////////////////////////////////////////////////
  1643. * //
  1644. * // UI 数据绑定server数据同步
  1645. * // UI data binding server data synchronization
  1646. * //
  1647. * /////////////////////////////////////////////////////////////////////////////////
  1648. */
  1649. /**
  1650. * 赋值
  1651. * bind
  1652. *
  1653. * @param {Object} params 使用的数据/params
  1654. * @returns {Object} 数据/data
  1655. */
  1656. TUIChatServer.prototype.bind = function (params) {
  1657. return (this.currentStore = params);
  1658. };
  1659. return TUIChatServer;
  1660. }(IComponentServer_1["default"]));
  1661. exports["default"] = TUIChatServer;