mirror of
https://github.com/owncast/owncast.git
synced 2024-10-25 14:05:56 +03:00
4a17f30da8
* First pass at browser, discord, twilio notifications * Commit updated Javascript packages * Remove twilio notification support * Email notifications/smtp support * Fix Firefox notification support, remove chrome checks * WIP more email work * Add support for twitter notifications * Add stream title to discord and twitter notifications * Update notification registration modal * Fix hide/show email section * Commit updated API documentation * Commit updated Javascript packages * Fix post-rebase missing var * Remove unused var * Handle unsubscribe errors for browser push * Standardize email config prop names * Allow overriding go live email template * Some notifications cleanup * Commit updated Javascript packages * Remove email/smtp/mailjet support * Remove more references to email notifications Co-authored-by: Owncast <owncast@owncast.online>
30 lines
954 B
JavaScript
30 lines
954 B
JavaScript
export async function registerWebPushNotifications(vapidPublicKey) {
|
|
const registration = await navigator.serviceWorker.ready;
|
|
let subscription = await registration.pushManager.getSubscription();
|
|
|
|
if (!subscription) {
|
|
subscription = await registration.pushManager.subscribe({
|
|
userVisibleOnly: true,
|
|
applicationServerKey: urlBase64ToUint8Array(vapidPublicKey),
|
|
});
|
|
}
|
|
|
|
return JSON.stringify(subscription);
|
|
}
|
|
|
|
export function isPushNotificationSupported() {
|
|
return 'serviceWorker' in navigator && 'PushManager' in window;
|
|
}
|
|
|
|
function urlBase64ToUint8Array(base64String) {
|
|
var padding = '='.repeat((4 - (base64String.length % 4)) % 4);
|
|
var base64 = (base64String + padding).replace(/\-/g, '+').replace(/_/g, '/');
|
|
|
|
var rawData = window.atob(base64);
|
|
var outputArray = new Uint8Array(rawData.length);
|
|
|
|
for (var i = 0; i < rawData.length; ++i) {
|
|
outputArray[i] = rawData.charCodeAt(i);
|
|
}
|
|
return outputArray;
|
|
}
|