fix: display status emoji without any status text

This commit is contained in:
cnrad
2022-11-13 22:17:59 -05:00
parent 6d61ab36d3
commit c3b5f2b858

View File

@@ -46,7 +46,6 @@ const renderCard = async (body: LanyardTypes.Root, params: Parameters): Promise<
let { data } = body; let { data } = body;
let avatarBorderColor: string = "#747F8D", let avatarBorderColor: string = "#747F8D",
userStatus: string = "",
avatarExtension: string = "webp", avatarExtension: string = "webp",
statusExtension: string = "webp", statusExtension: string = "webp",
activity: any = false, activity: any = false,
@@ -123,13 +122,13 @@ const renderCard = async (body: LanyardTypes.Root, params: Parameters): Promise<
let flags: string[] = getFlags(data.discord_user.public_flags); let flags: string[] = getFlags(data.discord_user.public_flags);
if (data.discord_user.avatar && data.discord_user.avatar.includes("a_")) flags.push("Nitro"); if (data.discord_user.avatar && data.discord_user.avatar.includes("a_")) flags.push("Nitro");
if (data.activities[0] && data.activities[0].state && data.activities[0].type === 4) let userStatus: Record<string, any> | null = null;
userStatus = data.activities[0].state; if (data.activities[0] && data.activities[0].type === 4) userStatus = data.activities[0];
// filter only type 0 // Filter only type 0
const activities = data.activities.filter(activity => activity.type === 0); const activities = data.activities.filter(activity => activity.type === 0);
// take the highest one // Take the highest one
activity = Array.isArray(activities) ? activities[0] : activities; activity = Array.isArray(activities) ? activities[0] : activities;
return ` return `
@@ -186,7 +185,7 @@ const renderCard = async (body: LanyardTypes.Root, params: Parameters): Promise<
display: flex; display: flex;
flex-direction: row; flex-direction: row;
position: relative; position: relative;
top: ${userStatus.length > 0 && hideStatus !== "true" ? "35%" : "50%"}; top: ${userStatus && hideStatus !== "true" ? "35%" : "50%"};
transform: translate(0, -50%); transform: translate(0, -50%);
height: 25px; height: 25px;
"> ">
@@ -217,7 +216,7 @@ const renderCard = async (body: LanyardTypes.Root, params: Parameters): Promise<
} }
</div> </div>
${ ${
userStatus.length > 0 && hideStatus !== "true" ? ` userStatus && hideStatus !== "true" ? `
<h1 style=" <h1 style="
font-size: 0.9rem; font-size: 0.9rem;
margin-top: 16px; margin-top: 16px;
@@ -228,9 +227,9 @@ const renderCard = async (body: LanyardTypes.Root, params: Parameters): Promise<
text-overflow: ellipsis; text-overflow: ellipsis;
"> ">
${ ${
data.activities[0].emoji && data.activities[0].emoji.id ? ` userStatus.emoji?.id ? `
<img src="data:image/png;base64,${await encodeBase64( <img src="data:image/png;base64,${await encodeBase64(
`https://cdn.discordapp.com/emojis/${data.activities[0].emoji.id}.${statusExtension}` `https://cdn.discordapp.com/emojis/${userStatus.emoji.id}.${statusExtension}`
)}" )}"
style=" style="
width: 15px; width: 15px;
@@ -239,12 +238,16 @@ const renderCard = async (body: LanyardTypes.Root, params: Parameters): Promise<
top: 10px; top: 10px;
transform: translate(0%, -50%); transform: translate(0%, -50%);
margin: 0 2px 0 0; margin: 0 2px 0 0;
" />` : `` " />` : ''
} }
${ ${
data.activities[0].emoji && !data.activities[0].emoji.id userStatus.state && userStatus.emoji?.name && !userStatus.emoji.id
? data.activities[0].emoji.name + " " + escape(userStatus) ? `${userStatus.emoji.name} ${escape(userStatus.state)}`
: escape(userStatus) : userStatus.state
? escape(userStatus.state)
: !userStatus.state && userStatus.emoji?.name && !userStatus.emoji.id
? escape(userStatus.emoji.name)
: ''
} }
</h1>` : `` </h1>` : ``
} }
@@ -267,7 +270,7 @@ const renderCard = async (body: LanyardTypes.Root, params: Parameters): Promise<
height: auto; height: auto;
"> ">
${ ${
activity.assets && activity.assets.large_image ? ` activity.assets?.large_image ? `
<img src="data:image/png;base64,${await encodeBase64( <img src="data:image/png;base64,${await encodeBase64(
activity.assets.large_image.startsWith("mp:external/") activity.assets.large_image.startsWith("mp:external/")
? `https://media.discordapp.net/external/${activity.assets.large_image.replace("mp:external/", "")}` ? `https://media.discordapp.net/external/${activity.assets.large_image.replace("mp:external/", "")}`
@@ -290,7 +293,7 @@ const renderCard = async (body: LanyardTypes.Root, params: Parameters): Promise<
"/> "/>
`} `}
${ ${
activity.assets && activity.assets.small_image ? ` activity.assets?.small_image ? `
<img src="data:image/png;base64,${await encodeBase64( <img src="data:image/png;base64,${await encodeBase64(
activity.assets.small_image.startsWith("mp:external/") activity.assets.small_image.startsWith("mp:external/")
? `https://media.discordapp.net/external/${activity.assets.small_image.replace("mp:external/", "")}` ? `https://media.discordapp.net/external/${activity.assets.small_image.replace("mp:external/", "")}`
@@ -308,7 +311,7 @@ const renderCard = async (body: LanyardTypes.Root, params: Parameters): Promise<
<div style=" <div style="
color: #999; color: #999;
margin-top: ${ margin-top: ${
activity.timestamps && activity.timestamps.start && hideTimestamp !== "true" activity.timestamps?.start && hideTimestamp !== "true"
? "-6px" ? "-6px"
: "5px" : "5px"
}; };
@@ -351,13 +354,13 @@ const renderCard = async (body: LanyardTypes.Root, params: Parameters): Promise<
height: 15px; height: 15px;
margin: 7px 0; margin: 7px 0;
">${escape(activity.state)}${ ">${escape(activity.state)}${
activity.party && activity.party.size activity.party?.size
? ` (${activity.party.size[0]} of ${activity.party.size[1]})` ? ` (${activity.party.size[0]} of ${activity.party.size[1]})`
: "" : ""
}</p>` : `` }</p>` : ``
} }
${ ${
activity.timestamps && activity.timestamps.start && hideTimestamp !== "true" ? ` activity.timestamps?.start && hideTimestamp !== "true" ? `
<p style=" <p style="
color: ${theme === "dark" ? "#ccc" : "#777"}; color: ${theme === "dark" ? "#ccc" : "#777"};
overflow: hidden; overflow: hidden;