Options
All
  • Public
  • Public/Protected
  • All
Menu

Namespace notificationService

Helper functions for notification handling

import { notificationService } from '@oneblink/apps'

Service Worker

To display push notifications and allow them to be clicked to open the application, add the following JavaScript to your service worker (we recommend using offline-plugin):

Example

self.addEventListener('push', (event) => {
console.log('push event', event)

if (!event.data) {
console.log('Received push event without any data', event)
return
}
const notification = event.data.json()

event.waitUntil(
clients.matchAll().then((c) => {
if (c.length === 0 || c.every((client) => !client.focused)) {
// Show notification
return self.registration.showNotification(
notification.title,
notification.options,
)
} else {
console.log('Application is already open!')
}
}),
)
})

self.addEventListener('notificationclick', (event) => {
console.log('notification click event', event)

const pathname =
event.notification.data && event.notification.data.pathname
? event.notification.data.pathname
: '/'

event.waitUntil(
clients.matchAll().then((clis) => {
const client = clis[0]
if (client === undefined) {
// there are no visible windows. Open one.
clients.openWindow(pathname)
} else {
client.navigate(pathname)
client.focus()
}

return self.registration
.getNotifications()
.then((notifications) => {
notifications.forEach((notification) => {
notification.close()
})
})
}),
)
})

Index

Functions

  • getEmailSubscriptions(formsAppId: number, abortSignal?: AbortSignal): Promise<FormsAppUserSubscription["emailSubscriptions"]>
  • Get the current users email subscriptions for a single forms app.

    Example

    const formsAppId = 1
    const emailSubscriptions =
    await approvalsService.getEmailSubscriptions(formsAppId)

    Parameters

    • formsAppId: number
    • Optional abortSignal: AbortSignal

    Returns Promise<FormsAppUserSubscription["emailSubscriptions"]>

  • isSubscribed(): Promise<boolean>
  • Check if the user is currently subscribed to notifications

    Example

    const isSubscribed = await notificationService.isSubscribed()
    // Allow user to subscribe or unsubscribe

    Returns Promise<boolean>

  • subscribe(formsAppId: number): Promise<boolean>
  • Subscribe the current user to notifications

    Example

    const formsAppId = 1
    const isSubscribed = await notificationService.subscribe(formsAppId)
    // isSubscribed will be false if user denied permission to push notifications

    Parameters

    • formsAppId: number

    Returns Promise<boolean>

  • unsubscribe(formsAppId: number): Promise<void>
  • Subscribe the current user to notifications

    Example

    const formsAppId = 1
    await notificationService.unsubscribe(formsAppId)
    // isSubscribed will be false if user denied permission to push notifications

    Parameters

    • formsAppId: number

    Returns Promise<void>

  • updateEmailSubscriptions(formsAppId: number, emailSubscriptions: undefined | EmailSubscription, abortSignal?: AbortSignal): Promise<void>
  • Update the current users email subscriptions for a single forms app.

    Example

    const emailSubscriptions = {
    newApproval: true,
    clarificationReceived: true,
    }
    const savedFormsAppUserSubscription =
    await approvalsService.updateFormsAppUserSubscription(
    emailSubscriptions,
    )

    Parameters

    • formsAppId: number
    • emailSubscriptions: undefined | EmailSubscription
    • Optional abortSignal: AbortSignal

    Returns Promise<void>