Skip to content
This repository has been archived by the owner on Mar 13, 2023. It is now read-only.

Commit

Permalink
捉虫子
Browse files Browse the repository at this point in the history
🐛 修正了合并转发消息框高度错误的问题
⚡ 限制了消息滑动的距离以防长距离布局偏移导致的性能问题
✨ #7 现在菜单不会出屏幕了 <- @Logic-Accepted#8 现在撤回消息失败会有提示了 <- @Logic-Accepted#6 现在触发回复会自动取消掉转发,反之同 <- @Logic-Accepted
  • Loading branch information
Stapxs committed Apr 23, 2022
1 parent 6532746 commit 5db5ad5
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 19 deletions.
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M511.1 63.1v287.1c0 35.25-28.75 63.1-64 63.1h-144l-124.9 93.68c-7.875 5.75-19.12 .0497-19.12-9.7v-83.98h-96c-35.25 0-64-28.75-64-63.1V63.1c0-35.25 28.75-63.1 64-63.1h384C483.2 0 511.1 28.75 511.1 63.1z"></path></svg>
<a>合并消息</a>
<svg onclick="closeForwardBody()" style="float: right;margin: 33px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M310.6 361.4c12.5 12.5 12.5 32.75 0 45.25C304.4 412.9 296.2 416 288 416s-16.38-3.125-22.62-9.375L160 301.3L54.63 406.6C48.38 412.9 40.19 416 32 416S15.63 412.9 9.375 406.6c-12.5-12.5-12.5-32.75 0-45.25l105.4-105.4L9.375 150.6c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L160 210.8l105.4-105.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-105.4 105.4L310.6 361.4z"></path></svg>
<div id="forward-msg-body-inn" style="margin-right: 7px;height: calc(100vh - 220px);overflow-y: scroll;overflow-x: hidden;padding: 0 20px;"></div>
<div id="forward-msg-body-inn" style="margin-right: 7px;height: calc(100vh - 140px);overflow-y: scroll;overflow-x: hidden;padding: 0 20px;"></div>
</div>
</div>
<!-- 消息顶栏 -->
Expand Down
48 changes: 31 additions & 17 deletions js/chat.js
Original file line number Diff line number Diff line change
Expand Up @@ -476,23 +476,25 @@ function msgTouchMove(sender, event) {
if(x < -10) {
// 左滑
window.msgOnMove = "on"
if(dx > sender.offsetWidth / 10) {
if(dx >= sender.offsetWidth / 10) {
showLog("b573f7", "fff", "UI", "触发左滑判定 ……")
window.msgOnMove = "right"
window.msgInMenu = sender
} else {
sender.style.transform = "translate(" + dx + "px)"
sender.style.transition = "transform 0s"
}
sender.style.transform = "translate(" + dx + "px)"
sender.style.transition = "transform 0s"
} else if(x > 10) {
// 右滑
window.msgOnMove = "on"
if(dx > sender.offsetWidth / 10) {
if(dx >= sender.offsetWidth / 10) {
showLog("b573f7", "fff", "UI", "触发右滑判定 ……")
window.msgOnMove = "left"
window.msgInMenu = sender
} else {
sender.style.transform = "translate(-" + dx + "px)"
sender.style.transition = "transform 0s"
}
sender.style.transform = "translate(-" + dx + "px)"
sender.style.transition = "transform 0s"
}
}else {
window.msgOnMove = null
Expand Down Expand Up @@ -524,13 +526,14 @@ function msgTouchEnd(sender, event) {
}

function showMsgMenu(sender, event) {
const menu = document.getElementById("right-click-menu")
const body = document.getElementById("right-click-menu-body")
if(sender == undefined || sender == null) {
document.getElementById("right-click-menu").children[1].style.transform = "scaleY(0)"
body.style.transform = "scaleY(0)"
document.getElementById("right-click-menu-bg").onmousedown = null
setTimeout(() => {
document.getElementById("right-click-menu").style.display = "none"
menu.style.display = "none"
// 恢复被隐藏的菜单
const body = document.getElementById("right-click-menu-body")
for(let i=0; i<body.children.length; i++) {
body.children[i].style.display = "flex"
}
Expand All @@ -542,27 +545,36 @@ function showMsgMenu(sender, event) {
window.msgInMenu = sender
// 修改消息的背景
sender.style.background = "#00000008"
// 获取鼠标位置
const pointEvent = event || window.event
// 修改菜单位置
document.getElementById("right-click-menu").children[1].style.marginLeft = pointEvent.pageX + "px"
document.getElementById("right-click-menu").children[1].style.marginTop = pointEvent.pageY + "px"
// 判断是不是自己的消息
if(Number(sender.dataset.sender) != Number(window.login_id)) {
document.getElementById("menuCancel").style.display = "none"
}
// 只显示复制菜单(已经被撤回的消息、合并转发消息、未登录)
if(sender.style.opacity === "0.4" || sender.parentNode.parentNode.id == "forward-msg-body" || window.connect == false) {
const body = document.getElementById("right-click-menu-body")
for(let i=0; i<body.children.length; i++) {
body.children[i].style.display = "none"
}
document.getElementById("menuCopy").style.display = "flex"
}
// 获取鼠标位置
const pointEvent = event || window.event
// 判定菜单是否出界
menu.style.display = "block"
const height = body.offsetHeight
const webHeight = document.body.offsetHeight
// 修改菜单位置
showLog("b573f7", "fff", "UI", "菜单底部位置:" + (pointEvent.pageY + height) + ",页面高度:" + webHeight)
if(pointEvent.pageY + height < webHeight) {
body.style.marginLeft = pointEvent.pageX + "px"
body.style.marginTop = pointEvent.pageY + "px"
} else {
body.style.marginLeft = pointEvent.pageX + "px"
body.style.marginTop = pointEvent.pageY - (pointEvent.pageY + height - webHeight) + "px"
showLog("b573f7", "fff", "UI", "菜单位置:" + body.style.marginTop)
}
// 显示菜单
document.getElementById("right-click-menu").style.display = "block"
setTimeout(() => {
document.getElementById("right-click-menu").children[1].style.transform = "scaleY(1)"
body.style.transform = "scaleY(1)"
setTimeout(() => {
document.getElementById("right-click-menu-bg").onmousedown = function() { showMsgMenu() }
}, 100)
Expand All @@ -571,6 +583,7 @@ function showMsgMenu(sender, event) {
}

function menuReply() {
cancelResend()
if(window.msgInMenu != undefined && window.msgInMenu != null) {
// 设置回复标志
document.getElementById("replyer-txt").innerText = window.msgInMenu.dataset.raw
Expand All @@ -594,6 +607,7 @@ function cancelReply() {
}

function menuResend() {
cancelReply()
if(window.msgInMenu != undefined && window.msgInMenu != null) {
// 显示提示控件
document.getElementById("resend-tips").style.height = "45px"
Expand Down
7 changes: 7 additions & 0 deletions js/impl/notice_fun.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ function runJSON(json) {
case "send_msg": sendMsgBack(msg.data.message_id); break // 发送消息回调
case "get_forward_msg": printForwardMsg(msg.data); break // 输出合并转发消息详情
case "get_group_member_list": saveGroupMemberList(msg.data); break // 获取群成员列表
case "delete_msg": deleteMsgBack(msg); break // 删除消息回调
default: {
// 处理其他特殊的返回
if(msg.echo.indexOf("get_rep_msg_") >= 0) {
Expand Down Expand Up @@ -64,6 +65,12 @@ function runJSON(json) {

// ----------------------------------------------------------------------------------

function deleteMsgBack(msg) {
if(msg.status == "failed") {
setStatue("err", "撤回消息失败,可能是消息不存在或消息超时。(" + msg.error.code + ":" + msg.error.message + ")")
}
}

function setFriendList(data) {
// 遍历列表
// <div class="friend-body" data-id="1007028430" data-type="friend">
Expand Down
2 changes: 1 addition & 1 deletion main.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
window.version = 'v1.27'
window.version = 'v1.271'
document.getElementById("opt-version").innerText = window.version
// 自动暗黑模式标志
window.is_auto_dark = true
Expand Down

0 comments on commit 5db5ad5

Please sign in to comment.