消息
This commit is contained in:
@@ -1,216 +1,4 @@
|
||||
"use strict";
|
||||
const common_vendor = require("../../../../common/vendor.js");
|
||||
require("../../../adapter-vue.js");
|
||||
const common_assets = require("../../../../common/assets.js");
|
||||
const TUIKit_utils_env = require("../../../utils/env.js");
|
||||
if (!Math) {
|
||||
(ActionsMenu + Avatar + Icon)();
|
||||
}
|
||||
const Icon = () => "../../common/Icon.js";
|
||||
const Avatar = () => "../../common/Avatar/index.js";
|
||||
const ActionsMenu = () => "../actions-menu/index.js";
|
||||
const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
|
||||
__name: "index",
|
||||
emits: ["handleSwitchConversation", "getPassingRef"],
|
||||
setup(__props, { expose: __expose, emit: __emit }) {
|
||||
const emits = __emit;
|
||||
const currentConversation = common_vendor.ref();
|
||||
const currentConversationID = common_vendor.ref();
|
||||
const currentConversationDomRect = common_vendor.ref();
|
||||
const isShowOverlay = common_vendor.ref(false);
|
||||
const conversationList = common_vendor.ref([]);
|
||||
const conversationListDomRef = common_vendor.ref();
|
||||
const conversationListInnerDomRef = common_vendor.ref();
|
||||
const actionsMenuPosition = common_vendor.ref({
|
||||
top: 0,
|
||||
left: void 0,
|
||||
conversationHeight: void 0
|
||||
});
|
||||
const displayOnlineStatus = common_vendor.ref(false);
|
||||
const userOnlineStatusMap = common_vendor.ref();
|
||||
let lastestOpenActionsMenuTime = null;
|
||||
common_vendor.onMounted(() => {
|
||||
common_vendor.Jt.watch(common_vendor.o.CONV, {
|
||||
currentConversationID: onCurrentConversationIDUpdated,
|
||||
conversationList: onConversationListUpdated,
|
||||
currentConversation: onCurrentConversationUpdated
|
||||
});
|
||||
common_vendor.Jt.watch(common_vendor.o.USER, {
|
||||
displayOnlineStatus: onDisplayOnlineStatusUpdated,
|
||||
userStatusList: onUserStatusListUpdated
|
||||
});
|
||||
if (!TUIKit_utils_env.isUniFrameWork && common_vendor.f$1 && !TUIKit_utils_env.isPC) {
|
||||
addLongPressHandler();
|
||||
}
|
||||
});
|
||||
common_vendor.onUnmounted(() => {
|
||||
common_vendor.Jt.unwatch(common_vendor.o.CONV, {
|
||||
currentConversationID: onCurrentConversationIDUpdated,
|
||||
conversationList: onConversationListUpdated,
|
||||
currentConversation: onCurrentConversationUpdated
|
||||
});
|
||||
common_vendor.Jt.unwatch(common_vendor.o.USER, {
|
||||
displayOnlineStatus: onDisplayOnlineStatusUpdated,
|
||||
userStatusList: onUserStatusListUpdated
|
||||
});
|
||||
});
|
||||
const isShowUserOnlineStatus = (conversation) => {
|
||||
return displayOnlineStatus.value && conversation.type === common_vendor.qt.TYPES.CONV_C2C;
|
||||
};
|
||||
const showConversationActionMenu = (event, conversation, index, isContextMenuEvent) => {
|
||||
if (isContextMenuEvent) {
|
||||
event.preventDefault();
|
||||
if (TUIKit_utils_env.isUniFrameWork) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
currentConversation.value = conversation;
|
||||
lastestOpenActionsMenuTime = Date.now();
|
||||
getActionsMenuPosition(event, index);
|
||||
};
|
||||
const closeConversationActionMenu = () => {
|
||||
if (lastestOpenActionsMenuTime && Date.now() - lastestOpenActionsMenuTime > 300) {
|
||||
currentConversation.value = void 0;
|
||||
isShowOverlay.value = false;
|
||||
}
|
||||
};
|
||||
const getActionsMenuPosition = (event, index) => {
|
||||
var _a, _b;
|
||||
if (TUIKit_utils_env.isUniFrameWork) {
|
||||
if (typeof conversationListDomRef.value === "undefined") {
|
||||
emits("getPassingRef", conversationListDomRef);
|
||||
}
|
||||
const query = (_a = common_vendor.i) == null ? void 0 : _a.createSelectorQuery().in(conversationListDomRef.value);
|
||||
query.select(`#convlistitem-${index}`).boundingClientRect((data) => {
|
||||
if (data) {
|
||||
actionsMenuPosition.value = {
|
||||
// The uni-page-head of uni-h5 is not considered a member of the viewport, so the height of the head is manually increased.
|
||||
top: data.bottom + (TUIKit_utils_env.isH5 ? 44 : 0),
|
||||
// @ts-expect-error in uniapp event has touches property
|
||||
left: event.touches[0].pageX,
|
||||
conversationHeight: data.height
|
||||
};
|
||||
isShowOverlay.value = true;
|
||||
}
|
||||
}).exec();
|
||||
} else {
|
||||
const rect = ((_b = event.currentTarget || event.target) == null ? void 0 : _b.getBoundingClientRect()) || {};
|
||||
if (rect) {
|
||||
actionsMenuPosition.value = {
|
||||
top: rect.bottom,
|
||||
left: TUIKit_utils_env.isPC ? event.clientX : void 0,
|
||||
conversationHeight: rect.height
|
||||
};
|
||||
}
|
||||
isShowOverlay.value = true;
|
||||
}
|
||||
};
|
||||
const enterConversationChat = (conversationID) => {
|
||||
emits("handleSwitchConversation", conversationID);
|
||||
common_vendor.Xt.switchConversation(conversationID);
|
||||
};
|
||||
function addLongPressHandler() {
|
||||
if (!conversationListInnerDomRef.value) {
|
||||
return;
|
||||
}
|
||||
common_vendor.k({
|
||||
element: conversationListInnerDomRef.value,
|
||||
onLongPress: (event, target) => {
|
||||
const index = Array.from(conversationListInnerDomRef.value.children).indexOf(target);
|
||||
showConversationActionMenu(event, conversationList.value[index], index);
|
||||
},
|
||||
options: {
|
||||
eventDelegation: {
|
||||
subSelector: ".tui-conversation-content"
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
function onCurrentConversationUpdated(conversation) {
|
||||
currentConversation.value = conversation;
|
||||
}
|
||||
function onConversationListUpdated(list) {
|
||||
conversationList.value = list;
|
||||
}
|
||||
function onCurrentConversationIDUpdated(id) {
|
||||
currentConversationID.value = id;
|
||||
}
|
||||
function onDisplayOnlineStatusUpdated(status) {
|
||||
displayOnlineStatus.value = status;
|
||||
}
|
||||
function onUserStatusListUpdated(list) {
|
||||
if (list.size !== 0) {
|
||||
userOnlineStatusMap.value = [...list.entries()].reduce(
|
||||
(obj, [key, value]) => {
|
||||
obj[key] = value;
|
||||
return obj;
|
||||
},
|
||||
{}
|
||||
);
|
||||
}
|
||||
}
|
||||
__expose({ closeChildren: closeConversationActionMenu });
|
||||
return (_ctx, _cache) => {
|
||||
return common_vendor.e({
|
||||
a: common_vendor.unref(isShowOverlay)
|
||||
}, common_vendor.unref(isShowOverlay) ? {
|
||||
b: common_vendor.o$1(closeConversationActionMenu),
|
||||
c: common_vendor.p({
|
||||
selectedConversation: common_vendor.unref(currentConversation),
|
||||
actionsMenuPosition: common_vendor.unref(actionsMenuPosition),
|
||||
selectedConversationDomRect: common_vendor.unref(currentConversationDomRect)
|
||||
})
|
||||
} : {}, {
|
||||
d: common_vendor.f(common_vendor.unref(conversationList), (conversation, index, i0) => {
|
||||
return common_vendor.e({
|
||||
a: "4ef42c1d-1-" + i0,
|
||||
b: common_vendor.p({
|
||||
useSkeletonAnimation: true,
|
||||
url: conversation.getAvatar(),
|
||||
size: "30px"
|
||||
}),
|
||||
c: common_vendor.unref(userOnlineStatusMap) && isShowUserOnlineStatus(conversation)
|
||||
}, common_vendor.unref(userOnlineStatusMap) && isShowUserOnlineStatus(conversation) ? {
|
||||
d: common_vendor.n(Object.keys(common_vendor.unref(userOnlineStatusMap)).length > 0 && Object.keys(common_vendor.unref(userOnlineStatusMap)).includes(conversation.userProfile.userID) && common_vendor.unref(userOnlineStatusMap)[conversation.userProfile.userID].statusType === 1 ? "online-status-online" : "online-status-offline")
|
||||
} : {}, {
|
||||
e: conversation.unreadCount > 0 && !conversation.isMuted
|
||||
}, conversation.unreadCount > 0 && !conversation.isMuted ? {
|
||||
f: common_vendor.t(conversation.unreadCount > 99 ? "99+" : conversation.unreadCount)
|
||||
} : {}, {
|
||||
g: conversation.unreadCount > 0 && conversation.isMuted
|
||||
}, conversation.unreadCount > 0 && conversation.isMuted ? {} : {}, {
|
||||
h: common_vendor.t(conversation.getShowName()),
|
||||
i: conversation.draftText && conversation.conversationID !== common_vendor.unref(currentConversationID)
|
||||
}, conversation.draftText && conversation.conversationID !== common_vendor.unref(currentConversationID) ? {
|
||||
j: common_vendor.t(common_vendor.unref(common_vendor.Wt).t("TUIChat.[草稿]"))
|
||||
} : conversation.type === "GROUP" && conversation.groupAtInfoList && conversation.groupAtInfoList.length > 0 ? {
|
||||
l: common_vendor.t(conversation.getGroupAtInfo())
|
||||
} : {}, {
|
||||
k: conversation.type === "GROUP" && conversation.groupAtInfoList && conversation.groupAtInfoList.length > 0,
|
||||
m: common_vendor.t(conversation.getLastMessage("text")),
|
||||
n: common_vendor.t(conversation.getLastMessage("time")),
|
||||
o: conversation.isMuted
|
||||
}, conversation.isMuted ? {
|
||||
p: "4ef42c1d-2-" + i0,
|
||||
q: common_vendor.p({
|
||||
file: common_vendor.unref(common_assets.muteIcon)
|
||||
})
|
||||
} : {}, {
|
||||
r: common_vendor.n(common_vendor.unref(currentConversationID) === conversation.conversationID && "tui-conversation-item-selected"),
|
||||
s: common_vendor.n(conversation.isPinned && "tui-conversation-item-pinned"),
|
||||
t: common_vendor.o$1(($event) => enterConversationChat(conversation.conversationID), index),
|
||||
v: common_vendor.o$1(($event) => showConversationActionMenu($event, conversation, index), index),
|
||||
w: common_vendor.o$1(($event) => showConversationActionMenu($event, conversation, index, true), index),
|
||||
x: `convlistitem-${index}`,
|
||||
y: index
|
||||
});
|
||||
}),
|
||||
e: common_vendor.n(common_vendor.unref(TUIKit_utils_env.isPC) && "isPC"),
|
||||
f: common_vendor.n(common_vendor.unref(TUIKit_utils_env.isMobile) && "tui-conversation-content-h5 disable-select")
|
||||
});
|
||||
};
|
||||
}
|
||||
});
|
||||
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-4ef42c1d"]]);
|
||||
wx.createComponent(Component);
|
||||
const index = require("../../../../index.js");
|
||||
wx.createPage(index.MiniProgramPage);
|
||||
//# sourceMappingURL=../../../../../.sourcemap/mp-weixin/TUIKit/components/TUIConversation/conversation-list/index.js.map
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"component": true,
|
||||
"navigationBarTitleText": "列表",
|
||||
"usingComponents": {
|
||||
"icon": "../../common/Icon",
|
||||
"avatar": "../../common/Avatar/index",
|
||||
|
||||
4
unpackage/dist/dev/mp-weixin/TUIKit/components/TUIConversation/conversation-list/index2.js
vendored
Normal file
4
unpackage/dist/dev/mp-weixin/TUIKit/components/TUIConversation/conversation-list/index2.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
"use strict";
|
||||
const index = require("../../../../index.js");
|
||||
wx.createPage(index.MiniProgramPage);
|
||||
//# sourceMappingURL=../../../../../.sourcemap/mp-weixin/TUIKit/components/TUIConversation/conversation-list/index2.js.map
|
||||
Reference in New Issue
Block a user