Allow specifying preferred order of displayname source. Fixes #20

This commit is contained in:
Tulir Asokan
2017-12-06 17:02:43 +02:00
parent 7c26942264
commit 4b6bf4439a
2 changed files with 46 additions and 17 deletions
+17
View File
@@ -21,6 +21,23 @@ bridge:
username_template: "telegram_${ID}"
# ${DISPLAYNAME} is replaced with the display name of the Telegram user.
displayname_template: "${DISPLAYNAME} (Telegram)"
# Set the preferred order of user identifiers which to use in the Matrix puppet display name.
# In the (hopefully unlikely) scenario that none of the given keys are found, the numeric user ID is used.
#
# If the bridge is working properly, a phone number or an username should always be known, but the other one can
# very well be empty.
#
# Valid keys:
# fullName (First and/or last name)
# fullNameReversed (Last and/or first name)
# firstName
# lastName
# username
# phoneNumber
displayname_preference:
- fullName
- username
- phoneNumber
# ${NAME} is replaced with the name part of the public channel/group invite link ( https://t.me/${NAME} )
alias_template: "telegram_${NAME}"
# Username of the bot. The registration must be regenerated to change this.
+29 -17
View File
@@ -82,17 +82,19 @@ class TelegramUser {
}
}
let changed = false
if (user.first_name && this.firstName !== user.first_name) {
this.firstName = user.first_name
changed = true
}
if (user.last_name && this.lastName !== user.last_name) {
this.lastName = user.last_name
changed = true
}
if (user.username && this.username !== user.username) {
this.username = user.username
changed = true
if (user.first_name || user.last_name || user.username) {
if (this.firstName !== user.first_name) {
this.firstName = user.first_name
changed = true
}
if (this.lastName !== user.last_name) {
this.lastName = user.last_name
changed = true
}
if (user.username && this.username !== user.username) {
this.username = user.username
changed = true
}
}
if (user.access_hash && telegramPOV && this.accessHashes.get(telegramPOV.userID) !== user.access_hash) {
this.accessHashes.set(telegramPOV.userID, user.access_hash)
@@ -129,13 +131,23 @@ class TelegramUser {
return [this.firstName, this.lastName].filter(s => !!s).join(" ")
}
getLastAndFirstName() {
return [this.lastName, this.firstName].filter(s => !!s).join(" ")
}
getDisplayName() {
if (this.firstName || this.lastName) {
return this.getFirstAndLastName()
} else if (this.username) {
return this.username
} else if (this.phoneNumber) {
return this.phoneNumber
for (const preference of this.app.config.bridge.displayname_preference) {
if (preference === "fullName") {
if (this.firstName || this.lastName) {
return this.getFirstAndLastName()
}
} else if (preference === "fullNameReversed") {
if (this.firstName || this.lastName) {
return this.getLastAndFirstName()
}
} else if (this[preference]) {
return this[preference]
}
}
return this.id
}