Prevent saving alias taken by other account
This commit is contained in:
parent
a0c42fe5a6
commit
298043b3cb
1
TODO.md
1
TODO.md
|
@ -89,7 +89,6 @@
|
||||||
- Adapt shortcuts flicking speed to font size
|
- Adapt shortcuts flicking speed to font size
|
||||||
|
|
||||||
- Multiaccount aliases:
|
- Multiaccount aliases:
|
||||||
- Warn when conflict with another alias
|
|
||||||
- Prevent sending messages with a user not in the current room
|
- Prevent sending messages with a user not in the current room
|
||||||
|
|
||||||
- Accept drag and drop to upload files or set a new avatar
|
- Accept drag and drop to upload files or set a new avatar
|
||||||
|
|
|
@ -8,6 +8,7 @@ HColumnLayout {
|
||||||
|
|
||||||
|
|
||||||
property alias label: label
|
property alias label: label
|
||||||
|
property alias errorLabel: errorLabel
|
||||||
property alias field: field
|
property alias field: field
|
||||||
property alias toolTip: toolTip
|
property alias toolTip: toolTip
|
||||||
|
|
||||||
|
@ -51,4 +52,16 @@ HColumnLayout {
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HLabel {
|
||||||
|
id: errorLabel
|
||||||
|
visible: Layout.maximumHeight > 0
|
||||||
|
wrapMode: Text.Wrap
|
||||||
|
color: theme.colors.errorText
|
||||||
|
|
||||||
|
Layout.maximumHeight: text ? implicitHeight : 0
|
||||||
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
Behavior on Layout.maximumHeight { HNumberAnimation {} }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,14 +166,31 @@ HGridLayout {
|
||||||
}
|
}
|
||||||
|
|
||||||
HLabeledTextField {
|
HLabeledTextField {
|
||||||
property string currentAlias:
|
property string currentAlias: aliases[userId] || ""
|
||||||
window.settings.writeAliases[userId] || ""
|
|
||||||
|
|
||||||
property bool changed: field.text !== currentAlias
|
property bool changed: field.text !== currentAlias
|
||||||
|
|
||||||
|
readonly property var aliases: window.settings.writeAliases
|
||||||
|
|
||||||
|
readonly property string alreadyTakenBy: {
|
||||||
|
if (! field.text) return ""
|
||||||
|
|
||||||
|
for (const [id, idAlias] of Object.entries(aliases))
|
||||||
|
if (id !== userId && idAlias === field.text) return id
|
||||||
|
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
id: aliasField
|
id: aliasField
|
||||||
|
|
||||||
label.text: qsTr("Multi-account composer alias:")
|
label.text: qsTr("Multi-account composer alias:")
|
||||||
|
|
||||||
|
errorLabel.text:
|
||||||
|
alreadyTakenBy ?
|
||||||
|
qsTr("Taken by %1").arg(alreadyTakenBy) :
|
||||||
|
""
|
||||||
|
|
||||||
|
field.error: alreadyTakenBy !== ""
|
||||||
field.onAccepted: applyChanges()
|
field.onAccepted: applyChanges()
|
||||||
field.placeholderText: (
|
field.placeholderText: (
|
||||||
nameField.field.text ||
|
nameField.field.text ||
|
||||||
|
@ -197,8 +214,6 @@ HGridLayout {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HSpacer {}
|
|
||||||
|
|
||||||
HRowLayout {
|
HRowLayout {
|
||||||
Layout.alignment: Qt.AlignBottom
|
Layout.alignment: Qt.AlignBottom
|
||||||
|
|
||||||
|
@ -212,7 +227,10 @@ HGridLayout {
|
||||||
text: qsTr("Save")
|
text: qsTr("Save")
|
||||||
loading: nameChangeRunning || avatarChangeRunning
|
loading: nameChangeRunning || avatarChangeRunning
|
||||||
enabled:
|
enabled:
|
||||||
nameField.changed || aliasField.changed || avatar.changed
|
avatar.changed ||
|
||||||
|
nameField.changed ||
|
||||||
|
(aliasField.changed && ! aliasField.alreadyTakenBy)
|
||||||
|
|
||||||
onClicked: applyChanges()
|
onClicked: applyChanges()
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
Loading…
Reference in New Issue
Block a user