Skip to content

Commit

Permalink
Merge pull request #38 from rxu/update-push-worker
Browse files Browse the repository at this point in the history
Provide correct push worker update.
  • Loading branch information
iMattPro authored May 26, 2024
2 parents 1defba2 + c94e233 commit 4b0a2ed
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 3 deletions.
12 changes: 12 additions & 0 deletions event/listener.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public static function getSubscribedEvents()
'core.ucp_notifications_output_notification_types_modify_template_vars' => 'load_template_data',
'core.ucp_display_module_before' => 'load_language',
'core.acp_main_notice' => 'compatibility_notice',
'core.page_header_after' => 'service_worker_url',
];
}

Expand Down Expand Up @@ -90,4 +91,15 @@ public function compatibility_notice()
{
$this->template->assign_var('S_WPN_COMPATIBILITY_NOTICE', phpbb_version_compare(PHPBB_VERSION, '4.0.0-dev', '>='));
}

/**
* Generate service worker URL globally for update
*/
public function service_worker_url()
{
if (!$this->template->retrieve_var('U_WEBPUSH_WORKER_URL'))
{
$this->template->assign_var('U_WEBPUSH_WORKER_URL', $this->controller_helper->route('phpbb_webpushnotifications_ucp_push_worker_controller'));
}
}
}
4 changes: 2 additions & 2 deletions notification/method/webpush.php
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,7 @@ protected function clean_expired_subscriptions(array $user_subscription_map, arr
* into https://myboard.url/path/to/avatar=123456789.gif
*
* @param string $avatar
* @return string Absolute path to avatar image
* @return array 'src' => Absolute path to avatar image
*/
protected function prepare_avatar($avatar)
{
Expand All @@ -455,7 +455,7 @@ protected function prepare_avatar($avatar)

$path = !empty($matches[1]) ? end($matches[1]) : $avatar;

return preg_replace('#^' . preg_quote($this->path_helper->get_web_root_path(), '#') . '#', $this->get_board_url(), $path, 1);
return ['src' => preg_replace('#^' . preg_quote($this->path_helper->get_web_root_path(), '#') . '#', $this->get_board_url(), $path, 1)];
}

/**
Expand Down
2 changes: 1 addition & 1 deletion styles/all/template/push_worker.js.twig
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ self.addEventListener('push', event => {
const options = {
body: responseBody,
data: response,
icon: response.avatar,
icon: response.avatar.src,
};
self.registration.showNotification(response.heading, options);
});
Expand Down
29 changes: 29 additions & 0 deletions styles/all/template/update_worker.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
'use strict';

function webpushWorkerUpdate() {
if ('serviceWorker' in navigator) {
navigator.serviceWorker.getRegistration(serviceWorkerUrl)
.then((registration) => {
registration.update();
})
.catch(error => {
// Service worker could not be updated
console.info(error);
});
}
}
// Do not redeclare function if exist
if (typeof domReady === 'undefined') {
window.domReady = function(callBack) {
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', callBack);
} else {
callBack();
}
}
}

domReady(() => {
/* global serviceWorkerUrl */
webpushWorkerUpdate();
});
4 changes: 4 additions & 0 deletions styles/prosilver/template/event/overall_footer_after.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<script>
const serviceWorkerUrl = '{{ U_WEBPUSH_WORKER_URL }}';
</script>
{% INCLUDEJS('@phpbb_webpushnotifications/update_worker.js') %}
1 change: 1 addition & 0 deletions tests/event/listener_test.php
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ public function test_getSubscribedEvents()
'core.ucp_notifications_output_notification_types_modify_template_vars',
'core.ucp_display_module_before',
'core.acp_main_notice',
'core.page_header_after',
], array_keys(\phpbb\webpushnotifications\event\listener::getSubscribedEvents()));
}

Expand Down

0 comments on commit 4b0a2ed

Please sign in to comment.