235 lines
9.6 KiB
JavaScript
235 lines
9.6 KiB
JavaScript
"use strict";
|
|
const common_vendor = require("../../../common/vendor.js");
|
|
const TUIKit_components_TUISearch_searchTypeList = require("./search-type-list.js");
|
|
const TUIKit_components_common_Toast_index = require("../common/Toast/index.js");
|
|
const TUIKit_components_TUISearch_type = require("./type.js");
|
|
const TUIKit_utils_env = require("../../utils/env.js");
|
|
const TUIKit_components_common_Toast_type = require("../common/Toast/type.js");
|
|
const searchCloudMessages = (params) => {
|
|
return common_vendor.Zt.searchCloudMessages(params).then((imResponse) => {
|
|
return imResponse;
|
|
}).catch((error) => {
|
|
TUIKit_components_common_Toast_index.Toast({
|
|
message: common_vendor.Jt.t("TUISearch.消息云端搜索失败:") + (error == null ? void 0 : error.message),
|
|
type: TUIKit_components_common_Toast_type.TOAST_TYPE.ERROR,
|
|
duration: 3e3
|
|
});
|
|
return null;
|
|
});
|
|
};
|
|
const enterConversation = (item) => {
|
|
const conversationID = (item == null ? void 0 : item.conversationID) || ((item == null ? void 0 : item.groupID) ? `GROUP${item == null ? void 0 : item.groupID}` : `C2C${item == null ? void 0 : item.userID}`);
|
|
common_vendor.Wt.switchConversation(conversationID).then(() => {
|
|
var _a;
|
|
common_vendor.zt.update(common_vendor.o.SEARCH, "currentSearchingStatus", {
|
|
isSearching: false,
|
|
searchType: "global"
|
|
});
|
|
common_vendor.zt.update(common_vendor.o.SEARCH, "currentSearchInputValue", {
|
|
value: "",
|
|
searchType: "global"
|
|
});
|
|
TUIKit_utils_env.isUniFrameWork && ((_a = common_vendor.i) == null ? void 0 : _a.navigateTo({
|
|
url: "/TUIKit/components/TUIChat/index"
|
|
}));
|
|
}).catch((error) => {
|
|
console.warn("switch conversation failed:", error == null ? void 0 : error.message);
|
|
TUIKit_components_common_Toast_index.Toast({
|
|
message: common_vendor.Jt.t("TUISearch.进入会话失败"),
|
|
type: TUIKit_components_common_Toast_type.TOAST_TYPE.ERROR,
|
|
duration: 1e3
|
|
});
|
|
});
|
|
};
|
|
const generateSearchResultShowName = (result, resultContent) => {
|
|
var _a, _b, _c;
|
|
if (!result) {
|
|
return "";
|
|
}
|
|
if (result.ID) {
|
|
return resultContent == null ? void 0 : resultContent.showName;
|
|
}
|
|
if (result.groupID) {
|
|
return result.name || result.groupID;
|
|
}
|
|
if (result.userID) {
|
|
return result.remark || result.nick || result.userID || "";
|
|
}
|
|
if ((_a = result.conversation) == null ? void 0 : _a.conversationID) {
|
|
if (typeof result.conversation.getShowName === "function") {
|
|
return result.conversation.getShowName();
|
|
} else {
|
|
return ((_c = (_b = common_vendor.zt.getConversationModel(result.conversation.conversationID)) == null ? void 0 : _b.getShowName) == null ? void 0 : _c.call(_b)) || result.conversation.conversationID;
|
|
}
|
|
}
|
|
return "";
|
|
};
|
|
const generateSearchResultAvatar = (result) => {
|
|
var _a, _b, _c, _d;
|
|
if (!result) {
|
|
return "";
|
|
}
|
|
if (result.ID) {
|
|
return result.avatar || "https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png";
|
|
}
|
|
if (result.groupID) {
|
|
return result.avatar || `https://web.sdk.qcloud.com/im/assets/images/${result == null ? void 0 : result.type}.svg`;
|
|
}
|
|
if (result.userID) {
|
|
return result.avatar || "https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png";
|
|
}
|
|
if ((_a = result == null ? void 0 : result.conversation) == null ? void 0 : _a.conversationID) {
|
|
if (typeof result.conversation.getAvatar === "function") {
|
|
return (_b = result.conversation) == null ? void 0 : _b.getAvatar();
|
|
} else {
|
|
return (_d = (_c = common_vendor.zt.getConversationModel(result.conversation.conversationID)) == null ? void 0 : _c.getAvatar) == null ? void 0 : _d.call(_c);
|
|
}
|
|
}
|
|
return "";
|
|
};
|
|
const generateSearchResultShowContent = (result, resultType, keywordList, isTypeShow = true) => {
|
|
var _a, _b, _c, _d;
|
|
if (result == null ? void 0 : result.groupID) {
|
|
return [
|
|
{ text: "groupID: ", isHighlight: false },
|
|
{ text: result.groupID, isHighlight: true }
|
|
];
|
|
}
|
|
if (result == null ? void 0 : result.userID) {
|
|
return [
|
|
{ text: "userID: ", isHighlight: false },
|
|
{ text: result.userID, isHighlight: true }
|
|
];
|
|
}
|
|
if ((result == null ? void 0 : result.conversation) || (result == null ? void 0 : result.flow)) {
|
|
if ((result == null ? void 0 : result.messageCount) === 1 || (result == null ? void 0 : result.flow)) {
|
|
const message = (result == null ? void 0 : result.flow) ? result : result == null ? void 0 : result.messageList[0];
|
|
const text = ((_a = message == null ? void 0 : message.payload) == null ? void 0 : _a.text) || ((_b = message == null ? void 0 : message.payload) == null ? void 0 : _b.fileName) || ((_c = message == null ? void 0 : message.payload) == null ? void 0 : _c.description);
|
|
const abstract = [];
|
|
if ((message == null ? void 0 : message.type) && isTypeShow && message.type !== common_vendor.Kt.TYPES.MSG_TEXT) {
|
|
abstract.push({
|
|
text: common_vendor.Jt.t(`TUISearch.${TUIKit_components_TUISearch_type.messageTypeAbstractMap[message.type]}`),
|
|
isHighlight: false
|
|
});
|
|
}
|
|
abstract.push(...generateMessageContentHighlight(text, keywordList));
|
|
return abstract;
|
|
} else {
|
|
return [
|
|
{
|
|
text: `${result == null ? void 0 : result.messageCount}${common_vendor.Jt.t(
|
|
"TUISearch.条相关"
|
|
)}${common_vendor.Jt.t(
|
|
`TUISearch.${resultType === "allMessage" ? "结果" : (_d = TUIKit_components_TUISearch_searchTypeList.searchMessageTypeList[resultType]) == null ? void 0 : _d.label}`
|
|
)}`,
|
|
isHighlight: false
|
|
}
|
|
];
|
|
}
|
|
}
|
|
return [];
|
|
};
|
|
const generateMessageContentHighlight = (content, keywordList) => {
|
|
var _a;
|
|
if (!content || !keywordList || !keywordList.length) {
|
|
return [{ text: content || "", isHighlight: false }];
|
|
}
|
|
const matches = [];
|
|
for (let i = 0; i < keywordList.length; i++) {
|
|
const substring = (_a = keywordList[i]) == null ? void 0 : _a.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
const regex = new RegExp(substring, "gi");
|
|
let match;
|
|
while ((match = regex.exec(content)) !== null) {
|
|
const start2 = match.index;
|
|
const end = match.index + match[0].length - 1;
|
|
matches.push([start2, end]);
|
|
}
|
|
}
|
|
const mergedRanges = [matches[0]];
|
|
if (matches.length > 1) {
|
|
matches.sort((a, b) => a[0] - b[0]);
|
|
for (let i = 1; i < matches.length; i++) {
|
|
const currentRange = matches[i];
|
|
const lastMergedRange = mergedRanges[mergedRanges.length - 1];
|
|
if (currentRange[0] - 1 <= lastMergedRange[1]) {
|
|
lastMergedRange[1] = Math.max(lastMergedRange[1], currentRange[1]);
|
|
} else {
|
|
mergedRanges.push(currentRange);
|
|
}
|
|
}
|
|
}
|
|
if (!mergedRanges[0]) {
|
|
return [{ text: content, isHighlight: false }];
|
|
}
|
|
const contentArray = [];
|
|
let start = 0;
|
|
for (let i = 0; i < mergedRanges.length; i++) {
|
|
const str1 = content.substring(start, mergedRanges[i][0]);
|
|
str1 && contentArray.push({ text: str1, isHighlight: false });
|
|
const str2 = content.substring(mergedRanges[i][0], mergedRanges[i][1] + 1);
|
|
str2 && contentArray.push({ text: str2, isHighlight: true });
|
|
start = mergedRanges[i][1] + 1;
|
|
}
|
|
const lastStr = content.substring(start);
|
|
lastStr && contentArray.push({ text: lastStr, isHighlight: false });
|
|
return contentArray;
|
|
};
|
|
const generateSearchResultTime = (timestamp) => {
|
|
const todayZero = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0);
|
|
const thisYear = new Date((/* @__PURE__ */ new Date()).getFullYear(), 0, 1, 0, 0, 0, 0).getTime();
|
|
const target = new Date(timestamp);
|
|
const oneDay = 24 * 60 * 60 * 1e3;
|
|
const oneWeek = 7 * oneDay;
|
|
const diff = todayZero - target.getTime();
|
|
function formatNum(num) {
|
|
return num < 10 ? "0" + num : num.toString();
|
|
}
|
|
if (diff <= 0) {
|
|
return `${formatNum(target.getHours())}:${formatNum(target.getMinutes())}`;
|
|
} else if (diff <= oneDay) {
|
|
return `${common_vendor.Jt.t("time.昨天")} ${formatNum(target.getHours())}:${formatNum(
|
|
target.getMinutes()
|
|
)}`;
|
|
} else if (diff <= oneWeek - oneDay) {
|
|
const weekdays = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
|
|
const weekday = weekdays[target.getDay()];
|
|
return `${common_vendor.Jt.t("time." + weekday)} ${formatNum(target.getHours())}:${formatNum(
|
|
target.getMinutes()
|
|
)}`;
|
|
} else if (target.getTime() >= thisYear) {
|
|
return `${target.getMonth() + 1}/${target.getDate()} ${formatNum(
|
|
target.getHours()
|
|
)}:${formatNum(target.getMinutes())}`;
|
|
} else {
|
|
return `${target.getFullYear()}/${target.getMonth() + 1}/${target.getDate()} ${formatNum(
|
|
target.getHours()
|
|
)}:${formatNum(target.getMinutes())}`;
|
|
}
|
|
};
|
|
const generateSearchResultYMD = (timestamp) => {
|
|
const date = new Date(timestamp * 1e3);
|
|
const year = date.getFullYear();
|
|
const month = ("0" + (date.getMonth() + 1)).slice(-2);
|
|
const day = ("0" + date.getDate()).slice(-2);
|
|
return `${year}-${month}-${day}`;
|
|
};
|
|
const debounce = (func, waitFor) => {
|
|
let timeout = null;
|
|
const debounced = (...args) => {
|
|
if (timeout !== null) {
|
|
clearTimeout(timeout);
|
|
timeout = null;
|
|
}
|
|
timeout = setTimeout(() => func(...args), waitFor);
|
|
};
|
|
return debounced;
|
|
};
|
|
exports.debounce = debounce;
|
|
exports.enterConversation = enterConversation;
|
|
exports.generateSearchResultAvatar = generateSearchResultAvatar;
|
|
exports.generateSearchResultShowContent = generateSearchResultShowContent;
|
|
exports.generateSearchResultShowName = generateSearchResultShowName;
|
|
exports.generateSearchResultTime = generateSearchResultTime;
|
|
exports.generateSearchResultYMD = generateSearchResultYMD;
|
|
exports.searchCloudMessages = searchCloudMessages;
|