fix(ContactVerificationRequestPopup): Fix overlapping messages

Close #9002 and #8950
This commit is contained in:
MishkaRogachev 2023-01-12 16:37:37 +04:00 committed by Mikhail Rogachev
parent b591254782
commit 1717a03a94
2 changed files with 77 additions and 84 deletions

View File

@ -15,11 +15,14 @@ StatusBaseText {
horizontalAlignment: Text.AlignHCenter
text: {
if (messageTimestamp === 0)
return ""
const currentMsgDate = new Date(messageTimestamp)
const prevMsgDate = new Date(previousMessageTimestamp)
if (prevMsgDate > 0 && currentMsgDate.getDay() === prevMsgDate.getDay())
return "";
return ""
const now = new Date();
// FIXME Qt6: replace with Intl.DateTimeFormat

View File

@ -1,7 +1,6 @@
import QtQuick 2.13
import QtQuick.Controls 2.13
import utils 1.0
import QtQuick 2.14
import QtQuick.Controls 2.14
import QtQuick.Layouts 1.14
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
@ -11,6 +10,8 @@ import StatusQ.Popups 0.1
import shared.controls 1.0
import shared.views.chat 1.0
import utils 1.0
StatusModal {
id: root
@ -62,97 +63,86 @@ StatusModal {
}
header.title: qsTr("%1 is asking you to verify your identity").arg(d.senderDisplayName)
x: Math.round(((parent ? parent.width : 0) - width) / 2)
y: Math.round(((parent ? parent.height : 0) - height) / 2)
width: 480
height: 230 + verificationMessage.height + verificationResponse.height
onOpened: {
root.updateVerificationDetails()
verificationResponse.input.edit.forceActiveFocus(Qt.MouseFocusReason)
}
contentItem: Item {
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: Style.current.padding
anchors.rightMargin: Style.current.padding
contentItem: StatusScrollView {
padding: Style.current.padding
ColumnLayout {
id: contentColumn
width: root.width - Style.current.padding * 2
spacing: Style.current.padding
StatusBaseText {
id: description
width: parent.width
color: Theme.palette.directColor1
wrapMode: Text.WordWrap
anchors.top: parent.top
anchors.topMargin: Style.current.padding
text: qsTr("%1 would like to verify your identity. Answer the question to prove your identity to %2")
.arg(d.senderDisplayName).arg(d.senderDisplayName)
font.pixelSize: 15
Layout.fillWidth: true
Layout.topMargin: Style.current.padding
}
MessageView {
id: verificationMessage
anchors.top: description.bottom
anchors.topMargin: Style.current.padding
width: parent.width
isMessage: true
shouldRepeatHeader: true
messageTimestamp: d.messageTimestamp
amIChatAdmin: false
placeholderMessage: true
senderId: d.senderPublicKey
senderDisplayName: d.senderDisplayName
senderIsEnsVerified: d.senderPublicKey !== "" && Utils.isEnsVerified(d.senderPublicKey)
senderIcon: d.senderIcon
messageText: d.challengeText
messageContentType: Constants.messageContentType.messageType
placeholderMessage: true
Layout.fillWidth: true
}
StatusInput {
id: verificationResponse
visible: !d.responseText
anchors.top: verificationMessage.bottom
anchors.topMargin: 5
input.multiline: true
placeholderText: qsTr("Provide answer to verification request from this contact.")
minimumHeight: 152
maximumHeight: 152
width: parent.width
input.verticalAlignment: TextEdit.AlignTop
leftPadding: 0
rightPadding: 0
charLimit: 280
Layout.fillWidth: true
}
MessageView {
id: responseMessage
visible: !!d.responseText
anchors.top: verificationMessage.bottom
width: parent.width
visible: !!d.responseText
isMessage: true
shouldRepeatHeader: true
messageTimestamp: d.responseTimestamp
amIChatAdmin: false
placeholderMessage: true
senderId: userProfile.pubKey
senderDisplayName: userProfile.displayName
senderIsEnsVerified: !!userProfile.preferredName
senderIcon: userProfile.icon
messageText: d.responseText
messageContentType: Constants.messageContentType.messageType
placeholderMessage: true
Layout.fillWidth: true
}
StatusBaseText {
id: responseSent
visible: !!d.responseText
width: parent.width
color: Theme.palette.baseColor1
wrapMode: Text.WordWrap
anchors.top: responseMessage.bottom
anchors.topMargin: 58
text: qsTr("Your answer has been sent to %1.").arg(d.senderDisplayName)
font.pixelSize: 13
horizontalAlignment: Text.AlignHCenter
Layout.fillWidth: true
}
}
}