Handle d2m events with empty guild/user avatars #106

Open
l1s5 wants to merge 3 commits from l1s5/out-of-your-element:handle-empty-guild-and-user-avatars into main
5 changed files with 11 additions and 0 deletions
Showing only changes of commit 9141bba25e - Show all commits

Add a few more jsdoc types

l1s5 2026-11-10 10:04:57 +09:00
Signed by untrusted user: l1s5
GPG key ID: D0A90CC905B58D9B

View file

@ -106,6 +106,7 @@ async function ensureSimJoined(pkMessage, roomID) {
* Generate profile data based on webhook displayname and configured avatar.
* @param {Ty.PkMessage} pkMessage
* @param {Ty.WebhookAuthor} author
* @returns {Promise<Ty.Event.M_Room_Member>}
*/
async function memberToStateContent(pkMessage, author) {
// We prefer to use the member's avatar URL data since the image upload can be cached across channels,

View file

@ -111,6 +111,7 @@ async function ensureSimJoined(pluRalMessage, roomID) {
* Generate profile data based on webhook displayname and configured avatar.
* @param {Ty.PluRalWebhookMessage} pluRalMessage
* @param {Ty.WebhookAuthor} author
* @returns {Promise<Ty.Event.M_Room_Member>}
*/
async function memberToStateContent(pluRalMessage, author) {
// We prefer to use the member's avatar URL data since the image upload can be cached across channels,

View file

@ -113,6 +113,8 @@ async function userToGlobalProfile(user) {
/**
* @param {DiscordTypes.APIUser} user
* @param {Omit<DiscordTypes.APIGuildMember, "user"> | undefined} member
* @param {string} guildID
* @returns {Promise<Ty.Event.M_Room_Member>}
*/
async function memberToStateContent(user, member, guildID) {
let displayname = user.username

View file

@ -87,6 +87,7 @@ async function ensureSimJoined(fakeUserID, author, roomID) {
/**
* Generate profile data based on webhook displayname and configured avatar.
* @param {Ty.WebhookAuthor} author
* @returns {Promise<Ty.Event.M_Room_Member>}
*/
async function authorToStateContent(author) {
const avatar = file.userAvatar(author)

View file

@ -157,6 +157,12 @@ function userAvatar(user) {
return `/avatars/${user.id}/${user.avatar}.png?size=${IMAGE_SIZE}`
}
/**
* @param {string} guildID
* @param {DiscordTypes.APIUser} user
* @param {Omit<DiscordTypes.APIGuildMember, "user"> | undefined} member
* @returns {string}
*/
function memberAvatar(guildID, user, member) {
if (!member?.avatar) return userAvatar(user)
return `/guilds/${guildID}/users/${user.id}/avatars/${member?.avatar}.png?size=${IMAGE_SIZE}`