256 lines
6.4 KiB
JavaScript
256 lines
6.4 KiB
JavaScript
const app = getApp()
|
|
|
|
import {
|
|
doRequest,
|
|
sid_prefix,
|
|
systemInfo
|
|
} from "../../config"
|
|
|
|
var closeShareOnCopy = false
|
|
try {
|
|
if (wx.getStorageSync("closeShareOnCopy")) {
|
|
closeShareOnCopy = true
|
|
}
|
|
} catch (e) {
|
|
closeShareOnCopy = false
|
|
}
|
|
|
|
Component({
|
|
options: {
|
|
addGlobalClass: true,
|
|
multipleSlots: true,
|
|
},
|
|
properties: {
|
|
chatType: {
|
|
type: String,
|
|
value: "bing"
|
|
}
|
|
},
|
|
pageLifetimes: {
|
|
show: function () {
|
|
//this.initMessageHistory()
|
|
},
|
|
},
|
|
lifetimes: {
|
|
attached() {
|
|
app.globalData.cht = this
|
|
this.initMessageHistory()
|
|
},
|
|
detached() {
|
|
try {} catch (error) {}
|
|
},
|
|
},
|
|
data: {
|
|
chatList: [],
|
|
receiveData: false,
|
|
autoIncrConversation: 1,
|
|
closeShareOnCopy: closeShareOnCopy,
|
|
showShare: false,
|
|
loadingData: false,
|
|
systemInfo: systemInfo,
|
|
height: systemInfo.windowHeight - parseInt(100 / 750 * systemInfo.windowWidth) - ((systemInfo.platform == "ios" || systemInfo.platform == "android") ? 22 : 5)
|
|
},
|
|
methods: {
|
|
bindscrolltoupper: function (e) {
|
|
var that = this
|
|
if (that.data.loadingData) {
|
|
return
|
|
}
|
|
that.setData({
|
|
loadingData: true
|
|
})
|
|
wx.showLoading({
|
|
title: "加载历史记录...",
|
|
})
|
|
app.getSid(sid => {
|
|
var page = 1
|
|
if (that.data.chatList.length > 0) {
|
|
page = Math.ceil((that.data.chatList.length + 1) / 10)
|
|
}
|
|
doRequest("/query", "GET", {
|
|
"sid": sid_prefix + sid,
|
|
"page": page,
|
|
"size": 10,
|
|
}).then(res => {
|
|
var data = res.data["data"]
|
|
data.reverse()
|
|
var oldData = that.data.chatList
|
|
var filterData = []
|
|
if (oldData.length > 0) {
|
|
data.forEach(k => {
|
|
if (k["dt"] < oldData[0]["dt"]) {
|
|
filterData.push(k)
|
|
}
|
|
})
|
|
} else {
|
|
filterData = data
|
|
}
|
|
var newData = filterData.concat(oldData)
|
|
that.setData({
|
|
chatList: newData,
|
|
loadingData: false
|
|
}, () => {
|
|
if (oldData.length < 10) {
|
|
wx.setStorage({
|
|
key: "chatList",
|
|
data: newData.slice(newData.length - 10),
|
|
})
|
|
}
|
|
if (filterData.length == 0 && e) {
|
|
setTimeout(() => {
|
|
wx.showToast({
|
|
title: "已全部加载完成"
|
|
})
|
|
}, 100)
|
|
} else {
|
|
setTimeout(() => {
|
|
wx.hideLoading()
|
|
}, 100)
|
|
}
|
|
})
|
|
}).catch(res => {
|
|
wx.hideLoading()
|
|
console.log(res)
|
|
})
|
|
})
|
|
},
|
|
initMessageHistory() {
|
|
var that = this
|
|
wx.getStorage({
|
|
key: "chatList",
|
|
success: function (res) {
|
|
var data = res.data
|
|
data = data ? data : []
|
|
if (data.length > 0) {
|
|
that.setData({
|
|
chatList: data,
|
|
})
|
|
} else {
|
|
that.bindscrolltoupper()
|
|
}
|
|
},
|
|
fail: function () {
|
|
that.bindscrolltoupper()
|
|
}
|
|
})
|
|
},
|
|
clearChat: function (e) {
|
|
var that = this
|
|
var index = e.currentTarget.dataset.index
|
|
var data = this.data.chatList
|
|
wx.showModal({
|
|
content: "是否删除该条聊天?",
|
|
complete: (res) => {
|
|
if (res.confirm) {
|
|
var deleteData = data[index]
|
|
data.splice(index, 1)
|
|
that.setData({
|
|
chatList: data,
|
|
})
|
|
app.getSid(sid => {
|
|
doRequest("/delete", "POST", {
|
|
"sid": sid_prefix + sid,
|
|
"conversation": deleteData
|
|
}).then(res => {
|
|
console.log(res)
|
|
wx.setStorage({
|
|
key: "chatList",
|
|
data: data.slice(data.length - 10),
|
|
})
|
|
})
|
|
})
|
|
}
|
|
},
|
|
})
|
|
},
|
|
copyContent: function (e) {
|
|
var index = e.currentTarget.dataset.index
|
|
var that = this
|
|
var content = this.data.chatList[index].originContent
|
|
wx.setClipboardData({
|
|
data: content,
|
|
success: function () {
|
|
wx.showToast({
|
|
title: "复制成功",
|
|
})
|
|
if (that.data.chatList[index]["type"] == "man" && !that.data.closeShareOnCopy) {
|
|
setTimeout(() => {
|
|
that.setData({
|
|
showShare: true
|
|
})
|
|
wx.setStorage({
|
|
key: "shareContent",
|
|
data: {
|
|
q: content,
|
|
validTime: new Date().getTime() + 300 * 1000
|
|
}
|
|
})
|
|
}, 1200)
|
|
}
|
|
}
|
|
})
|
|
},
|
|
renderMd: function (e) {
|
|
var index = e.currentTarget.dataset.index
|
|
var data = this.data.chatList[index]
|
|
var content = data.originContent
|
|
if (!this.data.chatList[index].content) {
|
|
var matches = content.match(/```markdown[\s\S]*```/g)
|
|
if (null == matches) {
|
|
matches = content.match(/```markdown[\s\S]*/g)
|
|
}
|
|
if (null != matches) {
|
|
matches.forEach(m => {
|
|
var m1 = m.replace("```markdown", "").trim()
|
|
if (m1.endsWith("```")) {
|
|
m1 = m1.substring(0, m1.length - 3)
|
|
}
|
|
content = content.replace(m, m1)
|
|
})
|
|
}
|
|
data.content = content
|
|
} else {
|
|
data.content = null
|
|
}
|
|
this.setData({
|
|
chatList: this.data.chatList
|
|
})
|
|
},
|
|
suggestSubmit: function (e) {
|
|
var suggest = e.currentTarget.dataset.suggest
|
|
this.triggerEvent(
|
|
"suggestSubmit", {
|
|
suggest,
|
|
}, {}
|
|
)
|
|
},
|
|
cancelReceive: function () {
|
|
this.triggerEvent(
|
|
"cancelReceive", {}, {}
|
|
)
|
|
},
|
|
showOriginContent: function (e) {
|
|
var index = e.currentTarget.dataset.index
|
|
var data = this.data.chatList[index]
|
|
if (data.showOrigin) {
|
|
data.showOrigin = null
|
|
} else {
|
|
data.showOrigin = true
|
|
}
|
|
this.setData({
|
|
chatList: this.data.chatList
|
|
})
|
|
},
|
|
onPopButtonClick: function (e) {
|
|
if (e.detail.t !== "confirm") {
|
|
wx.removeStorage({
|
|
key: "shareContent",
|
|
})
|
|
}
|
|
this.setData({
|
|
showShare: false
|
|
})
|
|
}
|
|
},
|
|
})
|