From 08baf335929724e18addfc553f42fe8a3b274a42 Mon Sep 17 00:00:00 2001 From: Nathanael Sensfelder Date: Sat, 29 Sep 2018 22:14:30 +0200 Subject: Adds icon notification. There might be a browser function to make a notification, but let's go with an icon change for now... --- images/to-favicon-notification.svg | 522 ++++++++++++++++++++++++ src/background/src/Update/HandleServerReply.elm | 30 +- src/shared/Action/Ports.elm | 3 +- www/background.html | 1 + www/script/init_background.js | 3 +- www/script/init_popup.js | 2 +- www/script/notification.js | 32 ++ 7 files changed, 580 insertions(+), 13 deletions(-) create mode 100644 images/to-favicon-notification.svg create mode 100644 www/script/notification.js diff --git a/images/to-favicon-notification.svg b/images/to-favicon-notification.svg new file mode 100644 index 0000000..fbee323 --- /dev/null +++ b/images/to-favicon-notification.svg @@ -0,0 +1,522 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/background/src/Update/HandleServerReply.elm b/src/background/src/Update/HandleServerReply.elm index 116a60c..983043d 100644 --- a/src/background/src/Update/HandleServerReply.elm +++ b/src/background/src/Update/HandleServerReply.elm @@ -7,6 +7,8 @@ import Json.Encode import Http +import List + -- Extension ------------------------------------------------------------------- import Action.Ports @@ -34,20 +36,28 @@ maybe_update_storage model cmds = then cmds else - ( - (Action.Ports.set_results - (Json.Encode.encode - 0 - (Json.Encode.list - (List.map - (Struct.Player.encode) - (Array.toList model.players) + let + players_list = (Array.toList model.players) + in + ( + (Action.Ports.set_results + (Json.Encode.encode + 0 + (Json.Encode.list + (List.map (Struct.Player.encode) players_list) ) ) ) + :: + ( + ( + if (List.any (Struct.Player.has_active_battles) players_list) + then (Action.Ports.activate_notification ()) + else (Action.Ports.disable_notification ()) + ) + :: cmds + ) ) - :: cmds - ) handle_set_battles : ( ( diff --git a/src/shared/Action/Ports.elm b/src/shared/Action/Ports.elm index c14d7f4..c42ff8b 100644 --- a/src/shared/Action/Ports.elm +++ b/src/shared/Action/Ports.elm @@ -8,4 +8,5 @@ port get_results : () -> (Cmd msg) port results_in : (String -> msg) -> (Sub msg) port set_results : (String) -> (Cmd msg) -port set_signal : (Bool) -> (Cmd msg) +port activate_notification : () -> (Cmd msg) +port disable_notification : () -> (Cmd msg) diff --git a/www/background.html b/www/background.html index fd648a2..dc8d0e9 100644 --- a/www/background.html +++ b/www/background.html @@ -5,6 +5,7 @@ + diff --git a/www/script/init_background.js b/www/script/init_background.js index 362ec43..51cdedf 100644 --- a/www/script/init_background.js +++ b/www/script/init_background.js @@ -1,6 +1,7 @@ tacticians_online.params.load(); -tacticians_online.app = Elm.Main.fullscreen(tacticians_online.params.get_params()); +tacticians_online.app = Elm.Main.fullscreen(); tacticians_online.params.attach_to(tacticians_online.app); tacticians_online.battles.attach_to(tacticians_online.app); +tacticians_online.notification.attach_to(tacticians_online.app); diff --git a/www/script/init_popup.js b/www/script/init_popup.js index 362ec43..3853867 100644 --- a/www/script/init_popup.js +++ b/www/script/init_popup.js @@ -1,6 +1,6 @@ tacticians_online.params.load(); -tacticians_online.app = Elm.Main.fullscreen(tacticians_online.params.get_params()); +tacticians_online.app = Elm.Main.fullscreen(); tacticians_online.params.attach_to(tacticians_online.app); tacticians_online.battles.attach_to(tacticians_online.app); diff --git a/www/script/notification.js b/www/script/notification.js new file mode 100644 index 0000000..d997ba9 --- /dev/null +++ b/www/script/notification.js @@ -0,0 +1,32 @@ +/******************************************************************************/ +/** Notification Management ***************************************************/ +/******************************************************************************/ +var tacticians_online = tacticians_online || new Object(); + +tacticians_online.notification = new Object(); + +tacticians_online.notification.activate = +function () +{ + browser.browserAction.setIcon("images/to-favicon-notification.svg"); +} + +tacticians_online.notification.disable = +function (encoded_notification) +{ + browser.browserAction.setIcon("images/to-favicon.svg"); +} + +tacticians_online.notification.attach_to = +function (app) +{ + app.ports.activate_notification.subscribe + ( + tacticians_online.notification.activate + ); + app.ports.disable_notification.subscribe + ( + tacticians_online.notification.disable + ); +} + -- cgit v1.2.3-70-g09d2