From f5988754fa35a442610a6475dfdfeeec13c0f956 Mon Sep 17 00:00:00 2001 From: Nikolay Gruychev Date: Wed, 24 Nov 2021 16:05:13 +0200 Subject: [PATCH] Add client::notification.bigImageUrl extra closes #185 --- .../com/github/gotify/picasso/PicassoHandler.java | 10 ++++++---- .../com/github/gotify/service/WebSocketService.java | 13 +++++++++++++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/github/gotify/picasso/PicassoHandler.java b/app/src/main/java/com/github/gotify/picasso/PicassoHandler.java index 7d92ed1..995224e 100644 --- a/app/src/main/java/com/github/gotify/picasso/PicassoHandler.java +++ b/app/src/main/java/com/github/gotify/picasso/PicassoHandler.java @@ -56,16 +56,18 @@ public class PicassoHandler { .build(); } + public Bitmap getImageFromUrl(String url) throws IOException { + return picasso.load(url).get(); + } + public Bitmap getIcon(Long appId) { if (appId == -1) { return BitmapFactory.decodeResource(context.getResources(), R.drawable.gotify); } try { - return picasso.load( - Utils.resolveAbsoluteUrl( - settings.url() + "/", appIdToAppImage.get(appId))) - .get(); + return getImageFromUrl( + Utils.resolveAbsoluteUrl(settings.url() + "/", appIdToAppImage.get(appId))); } catch (IOException e) { Log.e("Could not load image for notification", e); } diff --git a/app/src/main/java/com/github/gotify/service/WebSocketService.java b/app/src/main/java/com/github/gotify/service/WebSocketService.java index 1b38831..6cc241e 100644 --- a/app/src/main/java/com/github/gotify/service/WebSocketService.java +++ b/app/src/main/java/com/github/gotify/service/WebSocketService.java @@ -314,6 +314,19 @@ public class WebSocketService extends Service { b.setContentText(message); b.setStyle(new NotificationCompat.BigTextStyle().bigText(formattedMessage)); + String notificationImageUrl = + Extras.getNestedValue(String.class, extras, "client::notification", "bigImageUrl"); + + if (notificationImageUrl != null) { + try { + b.setStyle( + new NotificationCompat.BigPictureStyle() + .bigPicture(picassoHandler.getImageFromUrl(notificationImageUrl))); + } catch (Exception e) { + Log.e("Error loading bigImageUrl", e); + } + } + NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(Utils.longToInt(id), b.build());