mirror of
https://github.com/electron/electron.git
synced 2026-05-02 03:00:22 -04:00
* feat: add `Notification.getHistory()` static method (macOS) Add `Notification.getHistory()` which returns a `Promise<Notification[]>` of all delivered notifications still present in Notification Center. Each returned Notification is a live object connected to the corresponding delivered notification — interaction events (click, reply, action, close) will fire on these objects, enabling apps to re-attach event handlers after a restart. Key implementation details: - Queries UNUserNotificationCenter's getDeliveredNotifications API - Creates live Notification objects with populated id, groupId, title, subtitle, and body properties from what macOS provides - Registers each object with the presenter via Restore() so the NotificationCenterDelegate routes events correctly - Restored notifications use is_restored_ flag to prevent removal from Notification Center when the JS object is garbage collected - Requires code-signed builds (unsigned builds resolve with empty array) Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> * test: fix typecheck * fix: avoid dangling presenter pointer in GetHistory callback * fix: document show() behavior Notifications returned by getHistory() now set is_restored_ so that Dismiss() skips removal from Notification Center on GC. Calling show() on a restored notification removes the original from NC and posts a new one. * fix: address code review feedback * test: fix oxfmt linting * docs: update docs/api/notification.md Co-authored-by: Erick Zhao <erick@hotmail.ca> --------- Co-authored-by: Claude <svc-devxp-claude@slack-corp.com> Co-authored-by: Erick Zhao <erick@hotmail.ca>
12 lines
408 B
TypeScript
12 lines
408 B
TypeScript
const binding = process._linkedBinding('electron_browser_notification');
|
|
|
|
const ElectronNotification = binding.Notification;
|
|
ElectronNotification.isSupported = binding.isSupported;
|
|
ElectronNotification.getHistory = binding.getHistory;
|
|
|
|
if (process.platform === 'win32' && binding.handleActivation) {
|
|
ElectronNotification.handleActivation = binding.handleActivation;
|
|
}
|
|
|
|
export default ElectronNotification;
|