gptbot/bingchat/components/chatbox/index.js
2023-03-30 23:25:30 +08:00

230 lines
5.7 KiB
JavaScript

const app = getApp()
var closeShareOnCopy = false
try {
if (wx.getStorageSync("closeShareOnCopy")) {
closeShareOnCopy = true
}
} catch (e) {
closeShareOnCopy = false
}
Component({
options: {
addGlobalClass: true,
multipleSlots: true,
},
properties: {},
pageLifetimes: {
show: function () {
this.initMessageHistory()
},
},
lifetimes: {
attached() {
var that = this
app.globalData.cht = that
//that.initMessageHistory()
wx.getSystemInfo({
success: function (res) {
that.setData({
systemInfo: res,
})
},
})
},
detached() {
try {} catch (error) {}
},
},
data: {
chatList: [],
receiveData: false,
autoIncrConversation: 1,
closeShareOnCopy: closeShareOnCopy,
showShare: false,
},
methods: {
initMessageHistory() {
var that = this
var data = wx.getStorageSync("chatList")
data = data ? data : []
data.forEach((v) => {
if (v["suggests"] === undefined) {
v["suggests"] = []
}
})
if (data.length > 0) {
that.setData({
chatList: data,
})
}
},
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) {
data.splice(index, 1)
that.setData({
chatList: data,
})
wx.setStorage({
key: "chatList",
data: data,
})
}
},
})
},
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", {}, {}
)
},
deleteAllChat: function () {
var that = this
wx.showModal({
content: "是否删除全部聊天?",
complete: (res) => {
if (res.confirm) {
that.setData({
chatList: [],
})
wx.setStorage({
key: "chatList",
data: [],
})
}
},
})
},
longPress: function (e) {
var that = this
wx.showActionSheet({
itemList: ["删除全部聊天记录", "切换聊天接口方式", that.data.closeShareOnCopy ? "打开复制后分享" : "关闭复制后分享"],
success(res) {
if (res.tapIndex == 0) {
that.deleteAllChat()
} else if (res.tapIndex == 1) {
that.triggerEvent(
"switchRequestMethod", {}, {}
)
} else if (res.tapIndex == 2) {
if (that.data.closeShareOnCopy) {
that.setData({
closeShareOnCopy: false,
})
wx.showToast({
title: "已打开复制后分享",
icon: "none"
})
wx.removeStorage({
key: "closeShareOnCopy",
})
} else {
that.setData({
closeShareOnCopy: true,
})
wx.showToast({
title: "已关闭复制后分享",
icon: "none"
})
wx.setStorage({
key: "closeShareOnCopy",
data: 1,
})
}
}
}
})
},
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
})
}
},
})