yx-web-sdk 0.0.18 → 0.0.19

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.
Files changed (51) hide show
  1. package/dist/ait-person-popover/index.js +1 -1
  2. package/dist/chat-card/index.js +1 -1
  3. package/dist/chat-content/index.js +1 -1
  4. package/dist/chat-page/index.js +1 -1
  5. package/dist/chat-room/index.js +1 -1
  6. package/dist/common-avatar/index.js +1 -1
  7. package/dist/components/chat-card/index.vue.d.ts +2 -0
  8. package/dist/index/style4.css +7 -1
  9. package/dist/index/style7.css +68 -68
  10. package/dist/{index-C14AY1pk.mjs → index-BjIqS2ZC.mjs} +7 -6
  11. package/dist/{index-sJcDnl5D.mjs → index-D5gp5t2F.mjs} +1 -1
  12. package/dist/{index-0o2Mn1Jl.mjs → index-DHnPD8u9.mjs} +1 -1
  13. package/dist/index-entry/index.js +5 -5
  14. package/dist/index-entry/style.css +19 -19
  15. package/dist/{index.vue_vue_type_script_setup_true_lang-0YeDxfed.mjs → index.vue_vue_type_script_setup_true_lang-CkWszgC3.mjs} +2 -2
  16. package/dist/{index.vue_vue_type_style_index_0_lang-BdIDeEyF.mjs → index.vue_vue_type_style_index_0_lang-5DeqmRdw.mjs} +24 -7
  17. package/dist/{index.vue_vue_type_style_index_0_lang-BxxUcry3.mjs → index.vue_vue_type_style_index_0_lang-C-imP01W.mjs} +3 -3
  18. package/dist/{index.vue_vue_type_style_index_0_lang-oO4NDv0U.mjs → index.vue_vue_type_style_index_0_lang-CA27kCm1.mjs} +218 -166
  19. package/dist/{index.vue_vue_type_style_index_0_lang-UfvEW_0n.mjs → index.vue_vue_type_style_index_0_lang-CAZ44kgX.mjs} +104 -50
  20. package/dist/members-sidebar/index.js +1 -1
  21. package/dist/server-channel-sidebar/index.js +1 -1
  22. package/dist/stores/channel.d.ts +32 -12
  23. package/dist/stores/qchat.d.ts +3 -3
  24. package/dist/stores/sdk.d.ts +0 -8
  25. package/dist/stores/server.d.ts +26 -26
  26. package/dist/style.css +94 -88
  27. package/dist/types/qchat-server.d.ts +1 -1
  28. package/dist/yx-web-sdk.es.js +349 -225
  29. package/dist/yx-web-sdk.umd.js +348 -224
  30. package/package.json +1 -1
  31. package/dist/ait-person-popover/index.d.ts +0 -3
  32. package/dist/ait-person-popover/index.vue.d.ts +0 -39
  33. package/dist/chat-card/index.d.ts +0 -3
  34. package/dist/chat-card/index.vue.d.ts +0 -25
  35. package/dist/chat-content/index.d.ts +0 -3
  36. package/dist/chat-content/index.vue.d.ts +0 -51
  37. package/dist/chat-page/index.d.ts +0 -3
  38. package/dist/chat-page/index.vue.d.ts +0 -6
  39. package/dist/chat-room/index.d.ts +0 -3
  40. package/dist/chat-room/index.vue.d.ts +0 -9
  41. package/dist/common-avatar/index.d.ts +0 -3
  42. package/dist/common-avatar/index.vue.d.ts +0 -17
  43. package/dist/icon-font/index.d.ts +0 -48
  44. package/dist/index-entry/index.d.ts +0 -2
  45. package/dist/index-entry/index.vue.d.ts +0 -24
  46. package/dist/members-sidebar/index.d.ts +0 -3
  47. package/dist/members-sidebar/index.vue.d.ts +0 -4
  48. package/dist/notice-box/index.d.ts +0 -3
  49. package/dist/notice-box/index.vue.d.ts +0 -13
  50. package/dist/server-channel-sidebar/index.d.ts +0 -3
  51. package/dist/server-channel-sidebar/index.vue.d.ts +0 -21
@@ -1,4 +1,4 @@
1
- import { inject, ref, getCurrentInstance, nextTick, h, reactive, defineComponent, createVNode, computed, openBlock, createElementBlock, normalizeStyle, createCommentVNode, toDisplayString, watch, onBeforeUnmount, normalizeClass, createElementVNode, withModifiers, createBlock, unref, withCtx, withDirectives, vShow, Teleport, Fragment, renderList, onMounted, onUnmounted, createTextVNode } from "vue";
1
+ import { inject, ref, getCurrentInstance, nextTick, h, reactive, defineComponent, createVNode, computed, openBlock, createElementBlock, normalizeStyle, createCommentVNode, toDisplayString, onBeforeUnmount, watch, normalizeClass, Fragment, createElementVNode, withModifiers, createBlock, unref, withCtx, withDirectives, vShow, Teleport, renderList, onMounted, onUnmounted, createTextVNode } from "vue";
2
2
  import { useClipboard, useEventListener, useDebounceFn, useLocalStorage } from "@vueuse/core";
3
3
  import { message, Image, Button, Input, Popover, Upload, List, Typography, Form, Tooltip, Badge, Modal, Spin as Spin$1, Result, Empty } from "ant-design-vue";
4
4
  import { defineStore, createPinia } from "pinia";
@@ -37640,7 +37640,6 @@ const useServerStore = defineStore("server", {
37640
37640
  async getSeverList(options) {
37641
37641
  if (window.qchat) {
37642
37642
  const res = await window.qchat.qchatServer.getServersByPage(options);
37643
- console.log("getSeverList", res);
37644
37643
  this.setSeverList(res);
37645
37644
  }
37646
37645
  },
@@ -37940,8 +37939,11 @@ const useChannelStore = defineStore("channel", {
37940
37939
  serverUnReadCountList: []
37941
37940
  }),
37942
37941
  actions: {
37943
- // 设置频道列表(原 mutations 转为 actions)
37944
- setChannelList(payload) {
37942
+ /**
37943
+ * 设置频道列表并获取未读数
37944
+ * @param payload 频道列表数据
37945
+ */
37946
+ async setChannelList(payload) {
37945
37947
  const serverStore = useServerStore();
37946
37948
  serverStore.resetServerUnReadCount();
37947
37949
  this.channelList = payload.datas;
@@ -37957,65 +37959,89 @@ const useChannelStore = defineStore("channel", {
37957
37959
  });
37958
37960
  }
37959
37961
  this.channelListQueryTag = payload.listQueryTag;
37962
+ await this.subscribleChannels();
37960
37963
  },
37961
- // 订阅频道(原 mutations 转为 actions)
37962
- subscribleChannels() {
37964
+ /**
37965
+ * 订阅频道并获取未读数
37966
+ * @description 先使用 getChannelUnreadInfos 主动查询未读数(获取登录前积累的未读),再订阅频道接收实时更新
37967
+ */
37968
+ async subscribleChannels() {
37969
+ var _a, _b;
37963
37970
  this.channelUnReadInfoList = [];
37964
37971
  const channels = [];
37965
37972
  this.channelList.forEach((item) => {
37966
37973
  channels.push({ serverId: item.serverId, channelId: item.channelId });
37967
37974
  });
37968
- window.qchat.qchatChannel.subscribeChannel({
37975
+ if (channels.length === 0) {
37976
+ return;
37977
+ }
37978
+ try {
37979
+ const unreadInfos = await ((_a = window.qchat) == null ? void 0 : _a.qchatChannel.getChannelUnreadInfos({
37980
+ channels
37981
+ }));
37982
+ this.applyUnreadInfosToChannels(unreadInfos);
37983
+ } catch (error) {
37984
+ console.error("[subscribleChannels] 查询未读数失败:", error);
37985
+ }
37986
+ (_b = window.qchat) == null ? void 0 : _b.qchatChannel.subscribeChannel({
37969
37987
  type: 2,
37970
37988
  opeType: 1,
37971
37989
  channels
37972
- }).then((resp) => {
37973
- const unreadInfos = resp;
37974
- unreadInfos.forEach((item) => {
37975
- if (this.channelList && this.channelList.length > 0) {
37976
- this.channelList.forEach((channelItem) => {
37977
- if (channelItem.channelId === item.channelId) {
37978
- channelItem["unreadCount"] = item.unreadCount;
37979
- }
37980
- });
37981
- }
37982
- this.channelUnReadInfoList.push({
37983
- channelId: item.channelId,
37984
- unreadCount: item.unreadCount,
37985
- serverId: item.serverId
37986
- });
37987
- });
37988
- this.serverUnReadCountList = [];
37989
- this.channelUnReadInfoList.forEach((item) => {
37990
- let existsFlag = false;
37991
- for (let index2 = 0; index2 < this.serverUnReadCountList.length; index2++) {
37992
- const serverCount = this.serverUnReadCountList[index2];
37993
- if (serverCount.serverId === item.serverId) {
37994
- existsFlag = true;
37995
- break;
37996
- }
37997
- }
37998
- if (!existsFlag) {
37999
- this.serverUnReadCountList.push({
38000
- serverId: item.serverId,
38001
- unreadCount: item.unreadCount
38002
- });
38003
- } else {
38004
- for (let index2 = 0; index2 < this.serverUnReadCountList.length; index2++) {
38005
- const serverUnReadCountAgg = this.serverUnReadCountList[index2];
38006
- if (serverUnReadCountAgg.serverId == item.serverId) {
38007
- serverUnReadCountAgg.unreadCount = serverUnReadCountAgg.unreadCount + item.unreadCount;
38008
- break;
38009
- }
37990
+ }).catch((error) => {
37991
+ console.error("[subscribleChannels] 订阅频道失败:", error);
37992
+ });
37993
+ },
37994
+ /**
37995
+ * 将未读信息应用到频道列表
37996
+ * @param unreadInfos 未读信息列表
37997
+ */
37998
+ applyUnreadInfosToChannels(unreadInfos) {
37999
+ unreadInfos.forEach((item) => {
38000
+ if (this.channelList && this.channelList.length > 0) {
38001
+ this.channelList.forEach((channelItem) => {
38002
+ if (channelItem.channelId === item.channelId) {
38003
+ channelItem["unreadCount"] = item.unreadCount;
38010
38004
  }
38011
- }
38005
+ });
38006
+ }
38007
+ this.channelUnReadInfoList.push({
38008
+ channelId: item.channelId,
38009
+ unreadCount: item.unreadCount,
38010
+ serverId: item.serverId
38012
38011
  });
38013
- const serverStore = useServerStore();
38014
- serverStore.setUnReadInfo(this.serverUnReadCountList);
38015
38012
  });
38013
+ this.serverUnReadCountList = [];
38014
+ this.channelUnReadInfoList.forEach((item) => {
38015
+ const existingServer = this.serverUnReadCountList.find(
38016
+ (s) => s.serverId === item.serverId
38017
+ );
38018
+ if (existingServer) {
38019
+ existingServer.unreadCount += item.unreadCount;
38020
+ } else {
38021
+ this.serverUnReadCountList.push({
38022
+ serverId: item.serverId,
38023
+ unreadCount: item.unreadCount
38024
+ });
38025
+ }
38026
+ });
38027
+ const serverStore = useServerStore();
38028
+ serverStore.setUnReadInfo(this.serverUnReadCountList);
38016
38029
  },
38017
- // 设置 channel 的未读消息数(原 mutations 转为 actions)
38030
+ /**
38031
+ * 设置 channel 的未读消息数
38032
+ * @param payload 未读信息
38033
+ * @description 如果是当前频道的未读更新,会忽略(因为用户正在查看该频道)
38034
+ */
38018
38035
  setUnReadNum(payload) {
38036
+ var _a;
38037
+ if (this.currentChannel && this.currentChannel.channelId === payload.channelId) {
38038
+ (_a = window.qchat) == null ? void 0 : _a.qchatMsg.markMessageRead({
38039
+ serverId: payload.serverId,
38040
+ channelId: payload.channelId,
38041
+ time: Date.now()
38042
+ });
38043
+ return;
38044
+ }
38019
38045
  if (this.channelList && this.channelList.length > 0) {
38020
38046
  this.channelList.forEach((channelItem) => {
38021
38047
  if (channelItem.channelId === payload.channelId) {
@@ -38092,6 +38118,7 @@ const useChannelStore = defineStore("channel", {
38092
38118
  },
38093
38119
  // 重置频道未读计数(原 mutations 转为 actions)
38094
38120
  resetChannelUnReadCount() {
38121
+ var _a;
38095
38122
  if (this.currentChannel) {
38096
38123
  if (this.channelUnReadInfoList) {
38097
38124
  let finalIndex = -1;
@@ -38125,7 +38152,7 @@ const useChannelStore = defineStore("channel", {
38125
38152
  maxCount: 99,
38126
38153
  lastMsgTime: (/* @__PURE__ */ new Date()).getTime()
38127
38154
  };
38128
- window.qchat.qchatMsg.markMessageRead(markMessageReadOption);
38155
+ (_a = window.qchat) == null ? void 0 : _a.qchatMsg.markMessageRead(markMessageReadOption);
38129
38156
  this.currentChannel["unreadCount"] = 0;
38130
38157
  }
38131
38158
  },
@@ -38174,6 +38201,15 @@ const useChannelStore = defineStore("channel", {
38174
38201
  (i) => payload.every((j) => j.msgIdClient !== i.msgIdClient)
38175
38202
  );
38176
38203
  },
38204
+ // 更新当前频道消息
38205
+ updateCurChannelMsgs(msg) {
38206
+ this.currentChannelMsgs = this.currentChannelMsgs.map((msgItem) => {
38207
+ if (msgItem.msgIdClient === msg.msgIdClient) {
38208
+ return msg;
38209
+ }
38210
+ return msgItem;
38211
+ });
38212
+ },
38177
38213
  // 设置当前频道消息(原 mutations 转为 actions)
38178
38214
  setCurChannelMsgs(payload) {
38179
38215
  this.currentChannelMsgs = payload;
@@ -38190,7 +38226,7 @@ const useChannelStore = defineStore("channel", {
38190
38226
  throw new Error("QChat no login");
38191
38227
  }
38192
38228
  const res = await window.qchat.qchatChannel.getChannelsByPage(options);
38193
- this.setChannelList(res);
38229
+ await this.setChannelList(res);
38194
38230
  },
38195
38231
  1e3
38196
38232
  );
@@ -38427,6 +38463,15 @@ const useChannelStore = defineStore("channel", {
38427
38463
  this.addCurChannelMsgs({ data: [msg], isUnShift: false });
38428
38464
  }
38429
38465
  },
38466
+ // 撤回消息
38467
+ async revokeMessage(options) {
38468
+ if (!window.qchat) {
38469
+ throw new Error("QChat no login");
38470
+ }
38471
+ window.qchat.qchatMsg.revokeMessage(options).then((res) => {
38472
+ this.updateCurChannelMsgs(res);
38473
+ });
38474
+ },
38430
38475
  // 获取频道黑白名单
38431
38476
  async getWhiteBlackMembersPage(options) {
38432
38477
  if (!window.qchat) {
@@ -38467,6 +38512,9 @@ const useChannelStore = defineStore("channel", {
38467
38512
  },
38468
38513
  // 获取频道身份组
38469
38514
  async getChannelRoles(options) {
38515
+ if (!window.qchat) {
38516
+ throw new Error("QChat no login");
38517
+ }
38470
38518
  const res = await window.qchat.qchatRole.getChannelRoles(options);
38471
38519
  return res;
38472
38520
  },
@@ -38526,11 +38574,17 @@ const useChannelStore = defineStore("channel", {
38526
38574
  },
38527
38575
  // 获取成员角色
38528
38576
  async getMemberRoles(options) {
38577
+ if (!window.qchat) {
38578
+ throw new Error("QChat no login");
38579
+ }
38529
38580
  const res = await window.qchat.qchatRole.getMemberRoles(options);
38530
38581
  return res;
38531
38582
  },
38532
38583
  // 获取已存在的成员角色 accids
38533
38584
  async getExistingAccidsOfMemberRoles(options) {
38585
+ if (!window.qchat) {
38586
+ throw new Error("QChat no login");
38587
+ }
38534
38588
  const res = await window.qchat.qchatRole.getExistingAccidsOfMemberRoles(
38535
38589
  options
38536
38590
  );
@@ -38674,25 +38728,30 @@ const IconFont$1 = defineComponent({
38674
38728
  }
38675
38729
  });
38676
38730
  const _hoisted_1$8 = ["data-msg-id-client"];
38677
- const _hoisted_2$7 = { class: "chatCardAvatar" };
38678
- const _hoisted_3$7 = { class: "chatCardContent" };
38679
- const _hoisted_4$7 = { class: "chatCardInfo" };
38680
- const _hoisted_5$6 = { class: "chatCardInfoName" };
38681
- const _hoisted_6$6 = { class: "chatCardInfoTime" };
38682
- const _hoisted_7$4 = ["innerHTML"];
38683
- const _hoisted_8$4 = ["href"];
38684
- const _hoisted_9$3 = { class: "fileMsgContent" };
38685
- const _hoisted_10$3 = { class: "fileMsgName" };
38686
- const _hoisted_11$3 = { class: "fileMsgSize" };
38687
- const _hoisted_12$3 = { class: "ant-image-mask-info" };
38688
- const _hoisted_13$3 = {
38731
+ const _hoisted_2$7 = {
38732
+ key: 0,
38733
+ class: "chat-withdraw-msg"
38734
+ };
38735
+ const _hoisted_3$7 = { class: "chatCardAvatar" };
38736
+ const _hoisted_4$7 = { class: "chatCardContent" };
38737
+ const _hoisted_5$6 = { class: "chatCardInfo" };
38738
+ const _hoisted_6$6 = { class: "chatCardInfoName" };
38739
+ const _hoisted_7$4 = { class: "chatCardInfoTime" };
38740
+ const _hoisted_8$4 = ["innerHTML"];
38741
+ const _hoisted_9$3 = ["href"];
38742
+ const _hoisted_10$3 = { class: "fileMsgContent" };
38743
+ const _hoisted_11$3 = { class: "fileMsgName" };
38744
+ const _hoisted_12$3 = { class: "fileMsgSize" };
38745
+ const _hoisted_13$3 = { class: "ant-image-mask-info" };
38746
+ const _hoisted_14$3 = {
38689
38747
  key: 4,
38690
38748
  class: "chatCardMainContent"
38691
38749
  };
38692
- const _hoisted_14$3 = { class: "chatCardQuoteMsgName" };
38693
- const _hoisted_15$3 = ["innerHTML"];
38694
- const _hoisted_16$2 = { class: "ant-image-mask-info" };
38695
- const _hoisted_17$2 = { class: "chatCardStatus" };
38750
+ const _hoisted_15$3 = { class: "chatCardQuoteMsgName" };
38751
+ const _hoisted_16$2 = ["innerHTML"];
38752
+ const _hoisted_17$2 = { class: "ant-image-mask-info" };
38753
+ const _hoisted_18$1 = { class: "chatCardStatus" };
38754
+ const REVOCATION_INTERVAL = 120 * 1e3;
38696
38755
  const _sfc_main$8 = /* @__PURE__ */ defineComponent({
38697
38756
  ...{
38698
38757
  name: "ChatCard"
@@ -38702,10 +38761,30 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
38702
38761
  msg: {},
38703
38762
  myAccid: { default: "" }
38704
38763
  },
38705
- emits: ["resendText", "resendImg", "resendFile", "quote", "contextMenuSwitch", "quoteMsgClick"],
38764
+ emits: ["resendText", "resendImg", "resendFile", "quote", "contextMenuSwitch", "quoteMsgClick", "revokeMessage"],
38706
38765
  setup(__props, { emit: __emit }) {
38707
38766
  const serverStore = useServerStore();
38708
38767
  const props = __props;
38768
+ const nowTime = ref(Date.now());
38769
+ let timer = null;
38770
+ timer = setInterval(() => {
38771
+ nowTime.value = Date.now();
38772
+ if (nowTime.value - props.msg.time > REVOCATION_INTERVAL) {
38773
+ if (timer) {
38774
+ clearInterval(timer);
38775
+ timer = null;
38776
+ }
38777
+ }
38778
+ }, 1e3);
38779
+ onBeforeUnmount(() => {
38780
+ if (timer) {
38781
+ clearInterval(timer);
38782
+ timer = null;
38783
+ }
38784
+ });
38785
+ const isRevocation = computed(() => {
38786
+ return props.msg.fromAccount === props.myAccid && nowTime.value - props.msg.time <= REVOCATION_INTERVAL;
38787
+ });
38709
38788
  const { copy } = useClipboard();
38710
38789
  const emit = __emit;
38711
38790
  const textMsgContextMenuVisible = ref(false);
@@ -38718,13 +38797,25 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
38718
38797
  textMsgContextMenuVisible.value = true;
38719
38798
  }
38720
38799
  function onCopyClick() {
38721
- copy(props.msg.body).then(() => {
38722
- }).catch((err) => {
38723
- console.error("copy error: ", err);
38724
- message.error("复制失败");
38725
- }).finally(() => {
38726
- textMsgContextMenuVisible.value = false;
38727
- });
38800
+ var _a;
38801
+ if (props.msg.type === "text") {
38802
+ copy(props.msg.body).then(() => {
38803
+ }).catch((err) => {
38804
+ console.error("copy error: ", err);
38805
+ message.error("复制失败");
38806
+ }).finally(() => {
38807
+ textMsgContextMenuVisible.value = false;
38808
+ });
38809
+ }
38810
+ if (props.msg.type === "image") {
38811
+ copy((_a = props.msg.attach) == null ? void 0 : _a.url).then(() => {
38812
+ }).catch((err) => {
38813
+ console.error("copy error: ", err);
38814
+ message.error("复制失败");
38815
+ }).finally(() => {
38816
+ textMsgContextMenuVisible.value = false;
38817
+ });
38818
+ }
38728
38819
  }
38729
38820
  function onQuoteClick() {
38730
38821
  var _a;
@@ -38743,6 +38834,14 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
38743
38834
  emit("quote", msg);
38744
38835
  textMsgContextMenuVisible.value = false;
38745
38836
  }
38837
+ const onRevocationClick = () => {
38838
+ textMsgContextMenuVisible.value = false;
38839
+ if (!isRevocation.value) {
38840
+ message.error("消息已超过撤回时间");
38841
+ return;
38842
+ }
38843
+ emit("revokeMessage", props.msg);
38844
+ };
38746
38845
  function onQuoteMsgClick() {
38747
38846
  var _a;
38748
38847
  emit("quoteMsgClick", (_a = msgExt.value) == null ? void 0 : _a.quoteMsg);
@@ -38851,159 +38950,161 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
38851
38950
  }
38852
38951
  };
38853
38952
  return (_ctx, _cache) => {
38854
- var _a, _b, _c, _d, _e, _f, _g, _h;
38953
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
38855
38954
  return openBlock(), createElementBlock("div", {
38856
38955
  class: normalizeClass(["yx-chatCardWrapper", { reverse: __props.msg.fromAccount === __props.myAccid }]),
38857
38956
  "data-msg-id-client": __props.msg.msgIdClient
38858
38957
  }, [
38859
- createElementVNode("div", _hoisted_2$7, [
38860
- createVNode(_sfc_main$9, {
38861
- avatar: myAvatar.value,
38862
- nick: __props.msg.fromNick,
38863
- accid: __props.msg.fromAccount,
38864
- width: 32,
38865
- border: 0,
38866
- style: { "min-width": "32px" }
38867
- }, null, 8, ["avatar", "nick", "accid"])
38868
- ]),
38869
- createElementVNode("div", _hoisted_3$7, [
38870
- createElementVNode("div", null, [
38871
- createElementVNode("div", _hoisted_4$7, [
38872
- createElementVNode("span", _hoisted_5$6, toDisplayString(__props.msg.fromNick), 1),
38873
- createElementVNode("span", _hoisted_6$6, toDisplayString(time.value), 1)
38874
- ]),
38875
- __props.msg.type === "text" ? (openBlock(), createElementBlock("div", {
38876
- key: 0,
38877
- class: normalizeClass(["chatCardMainContent", { myMsg: __props.msg.fromAccount === __props.myAccid, otherMsg: __props.msg.fromAccount !== __props.myAccid }])
38878
- }, [
38879
- createElementVNode("div", {
38880
- class: "textMsg flash-target",
38881
- onContextmenu: withModifiers(onTextMsgContextMenu, ["prevent"]),
38882
- innerHTML: textMsgBody.value
38883
- }, null, 40, _hoisted_7$4)
38884
- ], 2)) : __props.msg.type === "file" ? (openBlock(), createElementBlock("div", {
38885
- key: 1,
38886
- class: normalizeClass(["chatCardMainContent", { myMsg: __props.msg.fromAccount === __props.myAccid, otherMsg: __props.msg.fromAccount !== __props.myAccid }])
38887
- }, [
38888
- createElementVNode("a", {
38889
- class: "fileMsg",
38890
- target: "_blank",
38891
- href: (_b = (_a = __props.msg) == null ? void 0 : _a.attach) == null ? void 0 : _b.url
38958
+ ((_a = __props.msg.updateOperatorInfo) == null ? void 0 : _a.ps) ? (openBlock(), createElementBlock("div", _hoisted_2$7, toDisplayString(__props.msg.fromAccount === __props.myAccid ? "你" : `“${__props.msg.fromNick}”`) + " " + toDisplayString((_b = __props.msg.updateOperatorInfo) == null ? void 0 : _b.ps), 1)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
38959
+ createElementVNode("div", _hoisted_3$7, [
38960
+ createVNode(_sfc_main$9, {
38961
+ avatar: myAvatar.value,
38962
+ nick: __props.msg.fromNick,
38963
+ accid: __props.msg.fromAccount,
38964
+ width: 32,
38965
+ border: 0,
38966
+ style: { "min-width": "32px" }
38967
+ }, null, 8, ["avatar", "nick", "accid"])
38968
+ ]),
38969
+ createElementVNode("div", _hoisted_4$7, [
38970
+ createElementVNode("div", null, [
38971
+ createElementVNode("div", _hoisted_5$6, [
38972
+ createElementVNode("span", _hoisted_6$6, toDisplayString(__props.msg.fromNick), 1),
38973
+ createElementVNode("span", _hoisted_7$4, toDisplayString(time.value), 1)
38974
+ ]),
38975
+ __props.msg.type === "text" ? (openBlock(), createElementBlock("div", {
38976
+ key: 0,
38977
+ class: normalizeClass(["chatCardMainContent", { myMsg: __props.msg.fromAccount === __props.myAccid, otherMsg: __props.msg.fromAccount !== __props.myAccid }])
38892
38978
  }, [
38893
- ext.value === "pdf" ? (openBlock(), createBlock(unref(FileIconFont), {
38894
- key: 0,
38895
- type: "icon-PDF",
38896
- style: { "font-size": "40px" }
38897
- })) : ext.value === "word" ? (openBlock(), createBlock(unref(FileIconFont), {
38898
- key: 1,
38899
- type: "icon-Word",
38900
- style: { "font-size": "40px" }
38901
- })) : ext.value === "excel" ? (openBlock(), createBlock(unref(FileIconFont), {
38902
- key: 2,
38903
- type: "icon-Excel",
38904
- style: { "font-size": "40px" }
38905
- })) : ext.value === "ppt" ? (openBlock(), createBlock(unref(FileIconFont), {
38906
- key: 3,
38907
- type: "icon-PPT",
38908
- style: { "font-size": "40px" }
38909
- })) : ext.value === "zip" ? (openBlock(), createBlock(unref(FileIconFont), {
38910
- key: 4,
38911
- type: "icon-RAR1",
38912
- style: { "font-size": "40px" }
38913
- })) : ext.value === "video" ? (openBlock(), createBlock(unref(FileIconFont), {
38914
- key: 5,
38915
- type: "icon-shipin",
38916
- style: { "font-size": "40px" }
38917
- })) : ext.value === "audio" ? (openBlock(), createBlock(unref(FileIconFont), {
38918
- key: 6,
38919
- type: "icon-yinle",
38920
- style: { "font-size": "40px" }
38921
- })) : ext.value === "img" ? (openBlock(), createBlock(unref(FileIconFont), {
38922
- key: 7,
38923
- type: "icon-tupian2",
38924
- style: { "font-size": "40px" }
38925
- })) : ext.value === "txt" ? (openBlock(), createBlock(unref(FileIconFont), {
38926
- key: 8,
38927
- type: "icon-qita",
38928
- style: { "font-size": "40px" }
38929
- })) : (openBlock(), createBlock(unref(FileIconFont), {
38930
- key: 9,
38931
- type: "icon-weizhiwenjian",
38932
- style: { "font-size": "40px" }
38933
- })),
38934
- createElementVNode("div", _hoisted_9$3, [
38935
- createElementVNode("div", _hoisted_10$3, toDisplayString((_d = (_c = __props.msg) == null ? void 0 : _c.attach) == null ? void 0 : _d.name), 1),
38936
- createElementVNode("div", _hoisted_11$3, toDisplayString(size.value), 1)
38937
- ])
38938
- ], 8, _hoisted_8$4)
38939
- ], 2)) : __props.msg.type === "image" ? (openBlock(), createElementBlock("div", {
38940
- key: 2,
38941
- class: normalizeClass(["chatCardMainContent flash-target", { myMsg: __props.msg.fromAccount === __props.myAccid, otherMsg: __props.msg.fromAccount !== __props.myAccid }]),
38942
- onContextmenu: withModifiers(onTextMsgContextMenu, ["prevent"])
38943
- }, [
38944
- createVNode(unref(Image), {
38945
- class: "imgMsg",
38946
- src: (_f = (_e = __props.msg) == null ? void 0 : _e.attach) == null ? void 0 : _f.url,
38947
- width: imageMsgSize.value.width,
38948
- height: imageMsgSize.value.height
38949
- }, {
38950
- previewMask: withCtx(() => [
38951
- createElementVNode("div", _hoisted_12$3, [
38952
- createVNode(unref(EyeOutlined))
38979
+ createElementVNode("div", {
38980
+ class: "textMsg flash-target",
38981
+ onContextmenu: withModifiers(onTextMsgContextMenu, ["prevent"]),
38982
+ innerHTML: textMsgBody.value
38983
+ }, null, 40, _hoisted_8$4)
38984
+ ], 2)) : __props.msg.type === "file" ? (openBlock(), createElementBlock("div", {
38985
+ key: 1,
38986
+ class: normalizeClass(["chatCardMainContent", { myMsg: __props.msg.fromAccount === __props.myAccid, otherMsg: __props.msg.fromAccount !== __props.myAccid }])
38987
+ }, [
38988
+ createElementVNode("a", {
38989
+ class: "fileMsg",
38990
+ target: "_blank",
38991
+ href: (_d = (_c = __props.msg) == null ? void 0 : _c.attach) == null ? void 0 : _d.url
38992
+ }, [
38993
+ ext.value === "pdf" ? (openBlock(), createBlock(unref(FileIconFont), {
38994
+ key: 0,
38995
+ type: "icon-PDF",
38996
+ style: { "font-size": "40px" }
38997
+ })) : ext.value === "word" ? (openBlock(), createBlock(unref(FileIconFont), {
38998
+ key: 1,
38999
+ type: "icon-Word",
39000
+ style: { "font-size": "40px" }
39001
+ })) : ext.value === "excel" ? (openBlock(), createBlock(unref(FileIconFont), {
39002
+ key: 2,
39003
+ type: "icon-Excel",
39004
+ style: { "font-size": "40px" }
39005
+ })) : ext.value === "ppt" ? (openBlock(), createBlock(unref(FileIconFont), {
39006
+ key: 3,
39007
+ type: "icon-PPT",
39008
+ style: { "font-size": "40px" }
39009
+ })) : ext.value === "zip" ? (openBlock(), createBlock(unref(FileIconFont), {
39010
+ key: 4,
39011
+ type: "icon-RAR1",
39012
+ style: { "font-size": "40px" }
39013
+ })) : ext.value === "video" ? (openBlock(), createBlock(unref(FileIconFont), {
39014
+ key: 5,
39015
+ type: "icon-shipin",
39016
+ style: { "font-size": "40px" }
39017
+ })) : ext.value === "audio" ? (openBlock(), createBlock(unref(FileIconFont), {
39018
+ key: 6,
39019
+ type: "icon-yinle",
39020
+ style: { "font-size": "40px" }
39021
+ })) : ext.value === "img" ? (openBlock(), createBlock(unref(FileIconFont), {
39022
+ key: 7,
39023
+ type: "icon-tupian2",
39024
+ style: { "font-size": "40px" }
39025
+ })) : ext.value === "txt" ? (openBlock(), createBlock(unref(FileIconFont), {
39026
+ key: 8,
39027
+ type: "icon-qita",
39028
+ style: { "font-size": "40px" }
39029
+ })) : (openBlock(), createBlock(unref(FileIconFont), {
39030
+ key: 9,
39031
+ type: "icon-weizhiwenjian",
39032
+ style: { "font-size": "40px" }
39033
+ })),
39034
+ createElementVNode("div", _hoisted_10$3, [
39035
+ createElementVNode("div", _hoisted_11$3, toDisplayString((_f = (_e = __props.msg) == null ? void 0 : _e.attach) == null ? void 0 : _f.name), 1),
39036
+ createElementVNode("div", _hoisted_12$3, toDisplayString(size.value), 1)
38953
39037
  ])
38954
- ]),
38955
- _: 1
38956
- }, 8, ["src", "width", "height"])
38957
- ], 34)) : (openBlock(), createElementBlock("div", {
38958
- key: 3,
38959
- class: normalizeClass(["chatCardMainContent", { myMsg: __props.msg.fromAccount === __props.myAccid, otherMsg: __props.msg.fromAccount !== __props.myAccid }])
38960
- }, [..._cache[1] || (_cache[1] = [
38961
- createElementVNode("div", { class: "textMsg" }, toDisplayString("暂不支持该消息"), -1)
38962
- ])], 2)),
38963
- ((_g = msgExt.value) == null ? void 0 : _g.quoteMsg) ? (openBlock(), createElementBlock("div", _hoisted_13$3, [
38964
- createElementVNode("div", {
38965
- class: "chatCardQuoteMsg",
38966
- onClick: onQuoteMsgClick
39038
+ ], 8, _hoisted_9$3)
39039
+ ], 2)) : __props.msg.type === "image" ? (openBlock(), createElementBlock("div", {
39040
+ key: 2,
39041
+ class: normalizeClass(["chatCardMainContent flash-target", { myMsg: __props.msg.fromAccount === __props.myAccid, otherMsg: __props.msg.fromAccount !== __props.myAccid }]),
39042
+ onContextmenu: withModifiers(onTextMsgContextMenu, ["prevent"])
38967
39043
  }, [
38968
- createElementVNode("div", _hoisted_14$3, toDisplayString(msgExt.value.quoteMsg.fromNick) + ":", 1),
38969
- msgExt.value.quoteMsg.body ? (openBlock(), createElementBlock("div", {
38970
- key: 0,
38971
- class: "quoteMsgText",
38972
- innerHTML: msgExt.value.quoteMsg.body
38973
- }, null, 8, _hoisted_15$3)) : createCommentVNode("", true),
38974
- msgExt.value.quoteMsg.type === "image" ? (openBlock(), createBlock(unref(Image), {
38975
- key: 1,
38976
- class: "imgMsg quoteMsgImg",
38977
- src: (_h = msgExt.value.quoteMsg.attach) == null ? void 0 : _h.url,
38978
- width: quoteImageMsgSize.value.width,
38979
- height: quoteImageMsgSize.value.height,
38980
- onClick: _cache[0] || (_cache[0] = withModifiers(() => {
38981
- }, ["stop", "prevent"]))
39044
+ createVNode(unref(Image), {
39045
+ class: "imgMsg",
39046
+ src: (_h = (_g = __props.msg) == null ? void 0 : _g.attach) == null ? void 0 : _h.url,
39047
+ width: imageMsgSize.value.width,
39048
+ height: imageMsgSize.value.height
38982
39049
  }, {
38983
39050
  previewMask: withCtx(() => [
38984
- createElementVNode("div", _hoisted_16$2, [
39051
+ createElementVNode("div", _hoisted_13$3, [
38985
39052
  createVNode(unref(EyeOutlined))
38986
39053
  ])
38987
39054
  ]),
38988
39055
  _: 1
38989
- }, 8, ["src", "width", "height"])) : createCommentVNode("", true)
38990
- ])
38991
- ])) : createCommentVNode("", true)
38992
- ]),
38993
- createElementVNode("div", _hoisted_17$2, [
38994
- __props.msg.deliveryStatus === "failed" ? (openBlock(), createBlock(unref(Button), {
38995
- key: 0,
38996
- type: "text",
38997
- danger: "",
38998
- onClick: resendHandler
38999
- }, {
39000
- icon: withCtx(() => [
39001
- createVNode(unref(ExclamationCircleFilled))
39002
- ]),
39003
- _: 1
39004
- })) : __props.msg.deliveryStatus === "sending" ? (openBlock(), createBlock(unref(LoadingOutlined), { key: 1 })) : createCommentVNode("", true)
39056
+ }, 8, ["src", "width", "height"])
39057
+ ], 34)) : (openBlock(), createElementBlock("div", {
39058
+ key: 3,
39059
+ class: normalizeClass(["chatCardMainContent", { myMsg: __props.msg.fromAccount === __props.myAccid, otherMsg: __props.msg.fromAccount !== __props.myAccid }])
39060
+ }, [..._cache[1] || (_cache[1] = [
39061
+ createElementVNode("div", { class: "textMsg" }, toDisplayString("暂不支持该消息"), -1)
39062
+ ])], 2)),
39063
+ ((_i = msgExt.value) == null ? void 0 : _i.quoteMsg) ? (openBlock(), createElementBlock("div", _hoisted_14$3, [
39064
+ createElementVNode("div", {
39065
+ class: "chatCardQuoteMsg",
39066
+ onClick: onQuoteMsgClick
39067
+ }, [
39068
+ createElementVNode("div", _hoisted_15$3, toDisplayString(msgExt.value.quoteMsg.fromNick) + ":", 1),
39069
+ msgExt.value.quoteMsg.body ? (openBlock(), createElementBlock("div", {
39070
+ key: 0,
39071
+ class: "quoteMsgText",
39072
+ innerHTML: msgExt.value.quoteMsg.body
39073
+ }, null, 8, _hoisted_16$2)) : createCommentVNode("", true),
39074
+ msgExt.value.quoteMsg.type === "image" ? (openBlock(), createBlock(unref(Image), {
39075
+ key: 1,
39076
+ class: "imgMsg quoteMsgImg",
39077
+ src: (_j = msgExt.value.quoteMsg.attach) == null ? void 0 : _j.url,
39078
+ width: quoteImageMsgSize.value.width,
39079
+ height: quoteImageMsgSize.value.height,
39080
+ onClick: _cache[0] || (_cache[0] = withModifiers(() => {
39081
+ }, ["stop", "prevent"]))
39082
+ }, {
39083
+ previewMask: withCtx(() => [
39084
+ createElementVNode("div", _hoisted_17$2, [
39085
+ createVNode(unref(EyeOutlined))
39086
+ ])
39087
+ ]),
39088
+ _: 1
39089
+ }, 8, ["src", "width", "height"])) : createCommentVNode("", true)
39090
+ ])
39091
+ ])) : createCommentVNode("", true)
39092
+ ]),
39093
+ createElementVNode("div", _hoisted_18$1, [
39094
+ __props.msg.deliveryStatus === "failed" ? (openBlock(), createBlock(unref(Button), {
39095
+ key: 0,
39096
+ type: "text",
39097
+ danger: "",
39098
+ onClick: resendHandler
39099
+ }, {
39100
+ icon: withCtx(() => [
39101
+ createVNode(unref(ExclamationCircleFilled))
39102
+ ]),
39103
+ _: 1
39104
+ })) : __props.msg.deliveryStatus === "sending" ? (openBlock(), createBlock(unref(LoadingOutlined), { key: 1 })) : createCommentVNode("", true)
39105
+ ])
39005
39106
  ])
39006
- ]),
39107
+ ], 64)),
39007
39108
  withDirectives(createElementVNode("div", {
39008
39109
  ref_key: "textMsgContextMenuRef",
39009
39110
  ref: textMsgContextMenuRef,
@@ -39017,7 +39118,12 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
39017
39118
  createElementVNode("div", {
39018
39119
  class: "yx-chatCardTextMsgContextMenu-item",
39019
39120
  onClick: onQuoteClick
39020
- }, "引用")
39121
+ }, "引用"),
39122
+ isRevocation.value ? (openBlock(), createElementBlock("div", {
39123
+ key: 0,
39124
+ class: "yx-chatCardTextMsgContextMenu-item",
39125
+ onClick: onRevocationClick
39126
+ }, " 撤回 ")) : createCommentVNode("", true)
39021
39127
  ], 4), [
39022
39128
  [vShow, textMsgContextMenuVisible.value]
39023
39129
  ])
@@ -39808,6 +39914,12 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
39808
39914
  }
39809
39915
  });
39810
39916
  };
39917
+ const handleRevokeMessage = (msg) => {
39918
+ channelStore.revokeMessage({
39919
+ ps: "撤回了一条消息",
39920
+ message: msg
39921
+ });
39922
+ };
39811
39923
  const handleDeleteQuoteMsg = () => {
39812
39924
  quoteMsg.value = void 0;
39813
39925
  };
@@ -39842,11 +39954,21 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
39842
39954
  }
39843
39955
  }
39844
39956
  );
39957
+ const inputMap = /* @__PURE__ */ new Map();
39845
39958
  watch(
39846
39959
  () => channelStore.currentChannel,
39847
- () => {
39848
- curText.value = "";
39849
- quoteMsg.value = void 0;
39960
+ (value, oldValue) => {
39961
+ if (oldValue == null ? void 0 : oldValue.channelId) {
39962
+ inputMap.set(oldValue == null ? void 0 : oldValue.channelId, { input: curText.value, quoteMsg: quoteMsg.value });
39963
+ }
39964
+ if ((value == null ? void 0 : value.channelId) && inputMap.has((value == null ? void 0 : value.channelId) || "")) {
39965
+ const mapValue = inputMap.get((value == null ? void 0 : value.channelId) || "");
39966
+ curText.value = (mapValue == null ? void 0 : mapValue.input) || "";
39967
+ quoteMsg.value = mapValue == null ? void 0 : mapValue.quoteMsg;
39968
+ } else {
39969
+ curText.value = "";
39970
+ quoteMsg.value = void 0;
39971
+ }
39850
39972
  }
39851
39973
  );
39852
39974
  const inputPlaceholder = computed(
@@ -40144,7 +40266,8 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
40144
40266
  onResendFile: handleResendFile,
40145
40267
  onContextMenuSwitch,
40146
40268
  onQuote: handleQuote,
40147
- onQuoteMsgClick: handleQuoteMsgClick
40269
+ onQuoteMsgClick: handleQuoteMsgClick,
40270
+ onRevokeMessage: handleRevokeMessage
40148
40271
  }, null, 8, ["msg", "my-avatar", "my-accid"]);
40149
40272
  }), 128))
40150
40273
  ])) : (openBlock(), createElementBlock("div", {
@@ -40869,6 +40992,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
40869
40992
  };
40870
40993
  const getChannelUnread = (channelId) => {
40871
40994
  const channel = channelList.value.find((c) => c.channelId === channelId);
40995
+ console.log("channel", channel);
40872
40996
  return (channel == null ? void 0 : channel.unreadCount) || 0;
40873
40997
  };
40874
40998
  const handleSelectServer = async (server) => {
@@ -40958,11 +41082,11 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
40958
41082
  cancelText: "取消",
40959
41083
  wrapClassName: "delete-channel-modal",
40960
41084
  async onOk() {
40961
- var _a;
41085
+ var _a, _b;
40962
41086
  try {
40963
- await window.qchat.qchatChannel.deleteChannel({
41087
+ await ((_a = window.qchat) == null ? void 0 : _a.qchatChannel.deleteChannel({
40964
41088
  channelId: channelForm.value.channelId
40965
- });
41089
+ }));
40966
41090
  message.success("删除成功");
40967
41091
  channelModalVisible.value = false;
40968
41092
  await channelStore.getChannelsByPage({
@@ -40970,7 +41094,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
40970
41094
  timetag: 0,
40971
41095
  limit
40972
41096
  });
40973
- if (((_a = currentChannel.value) == null ? void 0 : _a.channelId) === channelForm.value.channelId) {
41097
+ if (((_b = currentChannel.value) == null ? void 0 : _b.channelId) === channelForm.value.channelId) {
40974
41098
  if (channelStore.channelList.length > 0) {
40975
41099
  emit("selectChannel", channelStore.channelList[0]);
40976
41100
  } else {
@@ -41319,7 +41443,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
41319
41443
  };
41320
41444
  }
41321
41445
  });
41322
- const ServerChannelSidebar = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-aa044ccf"]]);
41446
+ const ServerChannelSidebar = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-2f397ece"]]);
41323
41447
  const _hoisted_1$1 = { class: "members-header" };
41324
41448
  const _hoisted_2$1 = {
41325
41449
  key: 0,
@@ -41829,7 +41953,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
41829
41953
  };
41830
41954
  }
41831
41955
  });
41832
- const IndexEntry = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-40788bbc"]]);
41956
+ const IndexEntry = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-240f366f"]]);
41833
41957
  const componentList = [
41834
41958
  "chat-card",
41835
41959
  "chat-content",