wx-web/pages/chat/index.js

155 lines
5.8 KiB
JavaScript

"use strict";
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var common_vendor = require("../../common/vendor.js");
var kongshuju = require("../../kongshuju.js");
var api_index = require("../../api/index.js");
var config_index = require("../../config/index.js");
require("../../utils/request.js");
const _sfc_main = {
setup(__props) {
const state = common_vendor.reactive({
initChatList: [],
chatList: [],
finished: false
});
const { chatList, finished } = common_vendor.toRefs(state);
const getMessageRecord = () => {
api_index.getAllRolesMessageRecord({
start_time: common_vendor.hooks().subtract(7, "days").startOf().format("YYYY-MM-DD HH:mm:ss"),
stop_time: common_vendor.hooks().endOf().format("YYYY-MM-DD HH:mm:ss")
}).then(({ status, data }) => {
if (Number(status) === 200 && Array.isArray(data.role_list)) {
const list = data.role_list.map((item) => {
var _a;
const [lastMessage] = (_a = item.list) == null ? void 0 : _a.slice(-1);
return __spreadProps(__spreadValues({}, item), {
lastMessage
});
});
state.initChatList = list;
state.chatList = list;
}
}).finally(() => {
state.finished = true;
});
};
common_vendor.onShow(getMessageRecord);
const onChatOnLine = async ({ role_info }) => {
try {
const { user_info } = common_vendor.index.getStorageSync("userData");
const { user_id } = user_info || {};
if (user_id) {
const { status, data } = await api_index.createChat({
user_id,
character_id: role_info.role_id
});
if (status === "success") {
common_vendor.index.setStorage({
key: "chatInfo",
data: __spreadValues({
userId: user_id,
session_id: data.session_id
}, role_info),
success: () => {
common_vendor.index.navigateTo({
url: "/pages/chatOnline/index"
});
}
});
} else {
common_vendor.index.showToast({
title: "\u521B\u5EFA\u804A\u5929\u5931\u8D25"
});
}
} else {
common_vendor.index.showToast({
title: "\u5F53\u524D\u767B\u5F55\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",
icon: "none"
});
common_vendor.index.clearStorage();
common_vendor.index.navigateTo({
url: "/pages/login/index"
});
}
} catch (e) {
throw new Error(e);
}
};
const timer = common_vendor.ref(null);
const onInputKeyWords = (e) => {
const keyWord = e.detail.value;
if (timer.value) {
clearTimeout(timer.value);
}
timer.value = setTimeout(() => {
if (keyWord) {
const clonedChatList = JSON.parse(JSON.stringify(state.initChatList));
const list = clonedChatList.filter((item) => {
const { role_info, list: list2 } = item;
if (role_info.role_name.includes(keyWord)) {
return true;
}
const filterMessageList = list2.filter(({ message }) => message.includes(keyWord));
if (filterMessageList.length > 0) {
item.lastMessage = filterMessageList[0];
return true;
}
return false;
});
state.chatList = list;
} else {
state.chatList = state.initChatList;
}
}, 500);
};
const sliceMessage = (str) => {
const message = str.replace(/\r\n|\r|\n/g, " ");
if (message.length > 20) {
return `${message.substring(0, 20)}...`;
}
return message;
};
return (_ctx, _cache) => {
return common_vendor.e({
a: common_vendor.o(onInputKeyWords),
b: common_vendor.unref(finished) && common_vendor.unref(chatList).length === 0
}, common_vendor.unref(finished) && common_vendor.unref(chatList).length === 0 ? {
c: kongshuju._imports_1
} : common_vendor.unref(finished) && common_vendor.unref(chatList).length > 0 ? {
e: common_vendor.f(common_vendor.unref(chatList), (item, index, i0) => {
return {
a: `${common_vendor.unref(config_index.filePrefix)}${item.role_info.avatar_id}`,
b: common_vendor.t(item.role_info.role_name),
c: common_vendor.t(sliceMessage(item.lastMessage.message)),
d: common_vendor.t(item.lastMessage.create_at),
e: index,
f: common_vendor.o(($event) => onChatOnLine(item))
};
})
} : {}, {
d: common_vendor.unref(finished) && common_vendor.unref(chatList).length > 0
});
};
}
};
var MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-3fea99d8"], ["__file", "C:/Users/bzm15/Desktop/ix/mini_web-develop/pages/chat/index.vue"]]);
wx.createPage(MiniProgramPage);