presence: game icon large image fallback (client behavior)
This commit is contained in:
		
							parent
							
								
									9d0ce017a9
								
							
						
					
					
						commit
						4f5eae6dcb
					
				
					 1 changed files with 29 additions and 1 deletions
				
			
		| 
						 | 
					@ -316,7 +316,35 @@ presence.callback = async function (msg, line) {
 | 
				
			||||||
              smallUrl = CDNEndpoints.APP_ASSET(activity.application_id, activity.assets.small_image);
 | 
					              smallUrl = CDNEndpoints.APP_ASSET(activity.application_id, activity.assets.small_image);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            thumbnail = fixMediaProxyURL(smallUrl);
 | 
					            const game = Games.find((game) => game.id == activity.application_id);
 | 
				
			||||||
 | 
					            if (game?.icon) {
 | 
				
			||||||
 | 
					              const gameIcon = `${CDNEndpoints.APP_ICON(game.id, game.icon)}?keep_aspect_ratio=false`;
 | 
				
			||||||
 | 
					              image_links.push({label: "App Icon", url: gameIcon});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              const largeImage = await fetch(gameIcon)
 | 
				
			||||||
 | 
					                .then((res) => res.arrayBuffer())
 | 
				
			||||||
 | 
					                .then((b) => Buffer.from(b));
 | 
				
			||||||
 | 
					              const presenceImage = sharp(largeImage).resize(100, 100);
 | 
				
			||||||
 | 
					              const smallImage = await fetch(smallUrl)
 | 
				
			||||||
 | 
					                .then((res) => res.arrayBuffer())
 | 
				
			||||||
 | 
					                .then((b) => Buffer.from(b));
 | 
				
			||||||
 | 
					              const smallImageBuffer = await sharp(smallImage).resize(32, 32).toBuffer();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              presenceImage.composite([
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                  input: smallImageBuffer,
 | 
				
			||||||
 | 
					                  gravity: "southeast",
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					              ]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              files.push({
 | 
				
			||||||
 | 
					                contents: await presenceImage.toBuffer(),
 | 
				
			||||||
 | 
					                name: `${index}.png`,
 | 
				
			||||||
 | 
					              });
 | 
				
			||||||
 | 
					              thumbnail = `attachment://${index}.png`;
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					              thumbnail = fixMediaProxyURL(smallUrl);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            image_links.push({label: "Small Image", url: thumbnail});
 | 
					            image_links.push({label: "Small Image", url: thumbnail});
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue