fix: no broken game cover URLs for auto-detected games, improve gaming card contrast
Some checks failed
CI / CD / deploy-dev (push) Has been cancelled
CI / CD / deploy-production (push) Has been cancelled
CI / CD / test-build (push) Has been cancelled

This commit is contained in:
2026-04-23 23:06:27 +02:00
parent 037e75828f
commit ff58d1f849
2 changed files with 24 additions and 24 deletions

View File

@@ -165,10 +165,10 @@ export default function ActivityFeed({
)}
{data?.gaming?.isPlaying && (
<motion.div initial={{ opacity: 0, y: 10 }} animate={{ opacity: 1, y: 0 }} className="bg-indigo-500/5 dark:bg-indigo-500/10 border border-indigo-500/20 rounded-2xl p-5">
<motion.div initial={{ opacity: 0, y: 10 }} animate={{ opacity: 1, y: 0 }} className="bg-indigo-500/10 dark:bg-indigo-500/20 border border-indigo-500/20 dark:border-indigo-400/30 rounded-2xl p-5">
<div className="flex items-center gap-3 mb-3">
<Gamepad2 size={14} className="text-indigo-600 dark:text-indigo-400" />
<span className="text-[10px] font-black uppercase tracking-widest text-indigo-600 dark:text-indigo-400">{t("gaming")}</span>
<Gamepad2 size={14} className="text-indigo-600 dark:text-indigo-300" />
<span className="text-[10px] font-black uppercase tracking-widest text-indigo-600 dark:text-indigo-300">{t("gaming")}</span>
</div>
<div className="flex gap-4">
{data.gaming.image && (
@@ -178,7 +178,7 @@ export default function ActivityFeed({
)}
<div className="min-w-0 flex flex-col justify-center">
<p className="font-bold text-stone-900 dark:text-white text-base truncate">{data.gaming.name}</p>
<p className="text-xs text-stone-500 dark:text-white/50 truncate">
<p className="text-xs text-stone-600 dark:text-stone-300 truncate">
{getSafeGamingText(data.gaming.details, data.gaming.state, t("inGame"))}
</p>
</div>

View File

@@ -41,28 +41,28 @@ function updatePresence(guild) {
type: a.type,
details: a.details || null,
state: a.state || null,
assets: a.assets
? {
large_image: a.assets.largeImage || null,
large_text: a.assets.largeText || null,
small_image: a.assets.smallImage || null,
small_text: a.assets.smallText || null,
}
: null,
timestamps: a.timestamps
? {
start: a.timestamps.start?.toISOString() || null,
end: a.timestamps.end?.toISOString() || null,
}
: null,
image: null,
applicationId: a.applicationId || null,
};
if (a.applicationId && a.assets?.largeImage) {
const imgId = a.assets.largeImage.startsWith("mp:external")
? `https://media.discordapp.net/${a.assets.largeImage.replace("mp:", "")}`
: `https://cdn.discordapp.com/app-assets/${a.applicationId}/${a.assets.largeImage}.png`;
entry.image = imgId;
} else if (a.assets?.largeImage) {
entry.image = `https://cdn.discordapp.com/app-assets/0/${a.assets.largeImage}.png`;
const imgKey = a.assets.largeImage;
entry.image = imgKey.startsWith("mp:external")
? `https://media.discordapp.net/${imgKey.replace("mp:", "")}`
: `https://cdn.discordapp.com/app-assets/${a.applicationId}/${imgKey}.png`;
}
if (a.assets) {
entry.assets = {
large_image: a.assets.largeImage || null,
large_text: a.assets.largeText || null,
small_image: a.assets.smallImage || null,
small_text: a.assets.smallText || null,
};
}
if (a.timestamps) {
entry.timestamps = {
start: a.timestamps.start?.toISOString() || null,
end: a.timestamps.end?.toISOString() || null,
};
}
return entry;
})