This is a simpler API for chrome.notifications
to use in Chrome extensions.
Add the notifications
permission and create a notification with as little as a string. @extend-chrome/notify
will do the rest! ✨
notify('This is too easy')
You will need to use a bundler like Rollup or Webpack to include this library in the build of Chrome extension.
See rollup-plugin-chrome-extension
for an easy way use Rollup to build your Chrome extension!
$ npm i @extend-chrome/notify
import { notify } from '@extend-chrome/notify'
notify('The most simple notification').then((id) => {
console.log('notification id', id)
})
notify
.create({
message: 'You have been notified.',
})
.then((id) => {
console.log('notification id', id)
})
The function notify.create
takes any of the official notification options for chrome.notifications.create
, without trying to type "notifications"
every time.
The "notifications"
permission must be included in manifest.json
.
// manifest.json
{
"permissions": ["notifications"]
}
TypeScript definitions are included, so no need to install an additional @types
library!
This library will use chrome.runtime.getManifest()
to include the name and icon of your extension in your notifications!
Returns: Promise<string>
Create a simple notification with an icon and the name of the Chrome extension, if they are supplied in manifest.json
.
Returns a promise which resolves to the notification id, which you can use in the notify.onClick
and notify.onButtonClick
events.
const myId = await notify('This is my notification')
notify.onClicked.addListener((clickedId) => {
if (myId === clickedId) {
console.log('My notification was clicked.')
}
})
Returns: Promise<string>
Create a basic notification by default using as little as options.message
, or any of the other properties in NotificationOptions.
Returns a promise which resolves to the notification id, which you can use in notification events.
const myId = await notify.create({
message: 'This is my notification',
})
notify.onClicked.addListener((clickedId) => {
if (myId === clickedId) {
console.log('My notification was clicked.')
}
})
All the other methods and events from chrome.notifications
are promisified using chrome-promise
and assigned to notify
, so you can use notify
as if it is chrome.notifications
with promises. These include the following:
Methods return promises but are otherwise the same as the Chrome API.
notify
.update('my-notification', updateOptions)
.then((wasUpdated) => {
if (wasUpdated) {
console.log('my notification was updated')
}
})
update(id) => Promise<wasUpdated: boolean>
clear(id) => Promise<wasCleared: boolean>
getAll() => Promise<notificationIds: string[]>
getPermissionsLevel() => Promise<'granted'|'denied'>
Events are exacly the same as the Chrome API. Register a listener by calling addListener
on an event:
notify.onClosed.addListener((id) => {
console.log('This notification was closed', id)
})