From 3940d9d60f7018e9911688c5bf0d9e6c569213aa Mon Sep 17 00:00:00 2001 From: Jason Zimdars Date: Thu, 17 Jul 2025 19:30:30 -0500 Subject: [PATCH] Linux wet the bed on this, trim whitespace and ensure 8-bit values --- app/javascript/controllers/notifications_controller.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/javascript/controllers/notifications_controller.js b/app/javascript/controllers/notifications_controller.js index eff1f888d..2d7dc65eb 100644 --- a/app/javascript/controllers/notifications_controller.js +++ b/app/javascript/controllers/notifications_controller.js @@ -79,6 +79,8 @@ export default class extends Controller { // VAPID public key comes encoded as base64 but service worker registration needs it as a Uint8Array #urlBase64ToUint8Array(base64String) { + base64String = base64String.trim() + const padding = "=".repeat((4 - base64String.length % 4) % 4) const base64 = (base64String + padding).replace(/-/g, "+").replace(/_/g, "/") @@ -86,7 +88,7 @@ export default class extends Controller { const outputArray = new Uint8Array(rawData.length) for (let i = 0; i < rawData.length; ++i) { - outputArray[i] = rawData.charCodeAt(i) + outputArray[i] = rawData.charCodeAt(i) & 0xff } return outputArray