feat(android): implement cancelAllNotifications() method

- Add cancelAllNotifications() method to DailyNotificationPlugin
  - Cancels all AlarmManager alarms (exact and inexact)
  - Cancels all WorkManager prefetch/fetch jobs by tag
  - Clears notification schedules from database (sets enabled=false)
  - Idempotent - safe to call multiple times

- Implementation details:
  - Reads scheduled notifications from database
  - Uses NotifyReceiver.cancelNotification() for each scheduled alarm
  - Includes fallback cleanup for orphaned alarms
  - Cancels WorkManager jobs with tags: prefetch, daily_notification_fetch,
    daily_notification_maintenance, soft_refetch, daily_notification_display,
    daily_notification_dismiss
  - Disables all notification and fetch schedules in database

- Add required imports:
  - android.app.PendingIntent for alarm cancellation
  - androidx.work.WorkManager for job cancellation

- Error handling:
  - Gracefully handles missing alarms/jobs (logs warnings, doesn't fail)
  - Continues cleanup even if individual operations fail
  - Comprehensive logging for debugging

Fixes:
- 'not implemented' error when host app calls cancelAllNotifications()
- Enables users to update notification time without errors
- Allows users to disable notifications completely
- Prevents orphaned alarms and jobs after cancellation

The method matches TypeScript interface and is ready for use.
This commit is contained in:
Matthew Raymer
2025-11-10 04:17:45 +00:00
parent 50b08401d0
commit f31bae1563
2 changed files with 129 additions and 1 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "@timesafari/daily-notification-plugin",
"version": "1.0.2",
"version": "1.0.3",
"description": "TimeSafari Daily Notification Plugin - Enterprise-grade daily notification functionality with dual scheduling, callback support, TTL-at-fire logic, and comprehensive observability across Mobile (Capacitor) and Desktop (Electron) platforms",
"main": "dist/plugin.js",
"module": "dist/esm/index.js",