From 1f499ab951a74d95a09a85ded4208accb68a236f Mon Sep 17 00:00:00 2001 From: Ivan-Shaml <72102779+Ivan-Shaml@users.noreply.github.com> Date: Mon, 11 Aug 2025 23:34:58 +0300 Subject: [PATCH] fix: bundle the tray icon with the jar - don't download the icon from the server --- .../faforever/iceadapter/util/TrayIcon.java | 20 ++++++++++++------ ice-adapter/src/main/resources/faf-logo.png | Bin 0 -> 12752 bytes 2 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 ice-adapter/src/main/resources/faf-logo.png diff --git a/ice-adapter/src/main/java/com/faforever/iceadapter/util/TrayIcon.java b/ice-adapter/src/main/java/com/faforever/iceadapter/util/TrayIcon.java index dd3ea86..c430076 100644 --- a/ice-adapter/src/main/java/com/faforever/iceadapter/util/TrayIcon.java +++ b/ice-adapter/src/main/java/com/faforever/iceadapter/util/TrayIcon.java @@ -4,20 +4,22 @@ import com.faforever.iceadapter.debug.Debug; import com.faforever.iceadapter.debug.DebugWindow; import com.faforever.iceadapter.debug.InfoWindow; -import java.awt.*; +import java.awt.AWTException; +import java.awt.Image; +import java.awt.SystemTray; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.io.IOException; -import java.net.URL; +import java.io.InputStream; import java.util.concurrent.CompletableFuture; import javax.imageio.ImageIO; -import javax.swing.*; +import javax.swing.SwingUtilities; import lombok.extern.slf4j.Slf4j; @Slf4j public class TrayIcon { - public static final String FAF_LOGO_URL = "https://faforever.com/images/faf-logo.png"; + public static final String FAF_LOGO_FILE = "faf-logo.png"; private static volatile java.awt.TrayIcon trayIcon; public static void create() { @@ -27,10 +29,14 @@ public static void create() { } Image fafLogo = null; - try { - fafLogo = ImageIO.read(new URL(FAF_LOGO_URL)); + try (final InputStream imageStream = TrayIcon.class.getClassLoader().getResourceAsStream(FAF_LOGO_FILE)) { + if (imageStream == null) { + log.error("Couldn't find '{}' in resource folder", FAF_LOGO_FILE); + return; + } + fafLogo = ImageIO.read(imageStream); } catch (IOException e) { - log.error("Couldn't load FAF tray icon logo from URL"); + log.error("Couldn't load FAF tray icon logo from resource folder", e); return; } diff --git a/ice-adapter/src/main/resources/faf-logo.png b/ice-adapter/src/main/resources/faf-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e21788f666ca054c8807238aa64878571a57ddeb GIT binary patch literal 12752 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 cJ!3!!(&xVW