Add support for MSC-4144: Per-Message Profiles #82
2 changed files with 2 additions and 71 deletions
|
|
@ -558,7 +558,7 @@ async function eventToMessage(event, guild, channel, di) {
|
||||||
if (member.displayname) displayName = member.displayname
|
if (member.displayname) displayName = member.displayname
|
||||||
if (member.avatar_url) avatarURL = mxUtils.getPublicUrlForMxc(member.avatar_url)
|
if (member.avatar_url) avatarURL = mxUtils.getPublicUrlForMxc(member.avatar_url)
|
||||||
// Override display name and avatar from MSC4144 per-message profile if present
|
// Override display name and avatar from MSC4144 per-message profile if present
|
||||||
const perMessageProfile = event.content["m.per_message_profile"] || event.content["com.beeper.per_message_profile"]
|
const perMessageProfile = event.content["com.beeper.per_message_profile"]
|
||||||
if (perMessageProfile?.displayname) displayName = perMessageProfile.displayname
|
if (perMessageProfile?.displayname) displayName = perMessageProfile.displayname
|
||||||
if (perMessageProfile?.avatar_url) avatarURL = mxUtils.getPublicUrlForMxc(perMessageProfile.avatar_url)
|
if (perMessageProfile?.avatar_url) avatarURL = mxUtils.getPublicUrlForMxc(perMessageProfile.avatar_url)
|
||||||
// If the display name is too long to be put into the webhook (80 characters is the maximum),
|
// If the display name is too long to be put into the webhook (80 characters is the maximum),
|
||||||
|
|
|
||||||
|
|
@ -5526,40 +5526,7 @@ test("event2message: known and unknown emojis in the end are used for sprite she
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
test("event2message: m.per_message_profile overrides displayname and avatar_url", async t => {
|
test("event2message: com.beeper.per_message_profile overrides displayname and avatar_url", async t => {
|
||||||
t.deepEqual(
|
|
||||||
await eventToMessage({
|
|
||||||
type: "m.room.message",
|
|
||||||
sender: "@cadence:cadence.moe",
|
|
||||||
content: {
|
|
||||||
msgtype: "m.text",
|
|
||||||
body: "hello from a custom profile",
|
|
||||||
"m.per_message_profile": {
|
|
||||||
id: "custom-id",
|
|
||||||
displayname: "Custom Name",
|
|
||||||
avatar_url: "mxc://maunium.net/hgXsKqlmRfpKvCZdUoWDkFQo"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
event_id: "$g07oYSZFWBkxohNEfywldwgcWj1hbhDzQ1sBAKvqOOU",
|
|
||||||
room_id: "!kLRqKKUQXcibIMtOpl:cadence.moe"
|
|
||||||
}),
|
|
||||||
{
|
|
||||||
ensureJoined: [],
|
|
||||||
messagesToDelete: [],
|
|
||||||
messagesToEdit: [],
|
|
||||||
messagesToSend: [{
|
|
||||||
username: "Custom Name",
|
|
||||||
content: "hello from a custom profile",
|
|
||||||
avatar_url: "https://bridge.example.org/download/matrix/maunium.net/hgXsKqlmRfpKvCZdUoWDkFQo",
|
|
||||||
allowed_mentions: {
|
|
||||||
parse: ["users", "roles"]
|
|
||||||
}
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
)
|
|
||||||
})
|
|
||||||
|
|
||||||
test("event2message: com.beeper.per_message_profile (unstable prefix) overrides displayname and avatar_url", async t => {
|
|
||||||
t.deepEqual(
|
t.deepEqual(
|
||||||
await eventToMessage({
|
await eventToMessage({
|
||||||
type: "m.room.message",
|
type: "m.room.message",
|
||||||
|
|
@ -5592,42 +5559,6 @@ test("event2message: com.beeper.per_message_profile (unstable prefix) overrides
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
test("event2message: m.per_message_profile takes priority over com.beeper.per_message_profile", async t => {
|
|
||||||
t.deepEqual(
|
|
||||||
await eventToMessage({
|
|
||||||
type: "m.room.message",
|
|
||||||
sender: "@cadence:cadence.moe",
|
|
||||||
content: {
|
|
||||||
msgtype: "m.text",
|
|
||||||
body: "stable wins",
|
|
||||||
"m.per_message_profile": {
|
|
||||||
id: "stable-id",
|
|
||||||
displayname: "Stable Name"
|
|
||||||
},
|
|
||||||
"com.beeper.per_message_profile": {
|
|
||||||
id: "unstable-id",
|
|
||||||
displayname: "Unstable Name"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
event_id: "$g07oYSZFWBkxohNEfywldwgcWj1hbhDzQ1sBAKvqOOU",
|
|
||||||
room_id: "!kLRqKKUQXcibIMtOpl:cadence.moe"
|
|
||||||
}),
|
|
||||||
{
|
|
||||||
ensureJoined: [],
|
|
||||||
messagesToDelete: [],
|
|
||||||
messagesToEdit: [],
|
|
||||||
messagesToSend: [{
|
|
||||||
username: "Stable Name",
|
|
||||||
content: "stable wins",
|
|
||||||
avatar_url: undefined,
|
|
||||||
allowed_mentions: {
|
|
||||||
parse: ["users", "roles"]
|
|
||||||
}
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
)
|
|
||||||
})
|
|
||||||
|
|
||||||
test("event2message: data-mx-profile-fallback element is stripped from formatted_body when per-message profile is present", async t => {
|
test("event2message: data-mx-profile-fallback element is stripped from formatted_body when per-message profile is present", async t => {
|
||||||
t.deepEqual(
|
t.deepEqual(
|
||||||
await eventToMessage({
|
await eventToMessage({
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue