fix(android): Java call sites for scheduleExactNotification need 8th parameter
Add skipPendingIntentIdempotence (false) to NotifyReceiver.scheduleExactNotification calls in DailyNotificationReceiver.java and DailyNotificationWorker.java so consuming apps compile. Rollover paths do not skip idempotence. - DailyNotificationReceiver: scheduleNextNotification() — add 8th arg false - DailyNotificationWorker: scheduleNextNotification() — add 8th arg false - Bump version to 1.1.3 (package.json, CHANGELOG, native/TS refs)
This commit is contained in:
@@ -5,6 +5,12 @@ All notable changes to the Daily Notification Plugin will be documented in this
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [1.1.3] - 2026-02-13
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- **Android (Java)**: Java call sites for `NotifyReceiver.scheduleExactNotification()` now pass the 8th parameter `skipPendingIntentIdempotence`, fixing "actual and formal argument lists differ in length" when building consuming apps. Updated `DailyNotificationReceiver.java` and `DailyNotificationWorker.java`.
|
||||||
|
|
||||||
## [1.1.2] - 2026-02-13
|
## [1.1.2] - 2026-02-13
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Daily Notification Plugin
|
# Daily Notification Plugin
|
||||||
|
|
||||||
**Author**: Matthew Raymer
|
**Author**: Matthew Raymer
|
||||||
**Version**: 1.1.2 (see `package.json` for source of truth)
|
**Version**: 1.1.3 (see `package.json` for source of truth)
|
||||||
**Created**: 2025-09-22 09:22:32 UTC
|
**Created**: 2025-09-22 09:22:32 UTC
|
||||||
**Last Updated**: 2025-12-23 UTC
|
**Last Updated**: 2025-12-23 UTC
|
||||||
|
|
||||||
|
|||||||
@@ -445,7 +445,8 @@ public class DailyNotificationReceiver extends BroadcastReceiver {
|
|||||||
false, // isStaticReminder
|
false, // isStaticReminder
|
||||||
null, // reminderId
|
null, // reminderId
|
||||||
scheduleId,
|
scheduleId,
|
||||||
com.timesafari.dailynotification.ScheduleSource.ROLLOVER_ON_FIRE
|
com.timesafari.dailynotification.ScheduleSource.ROLLOVER_ON_FIRE,
|
||||||
|
false // skipPendingIntentIdempotence – rollover path does not skip
|
||||||
);
|
);
|
||||||
|
|
||||||
Log.i(TAG, "Next notification scheduled via centralized function: scheduleId=" + scheduleId);
|
Log.i(TAG, "Next notification scheduled via centralized function: scheduleId=" + scheduleId);
|
||||||
|
|||||||
@@ -588,7 +588,8 @@ public class DailyNotificationWorker extends Worker {
|
|||||||
false, // isStaticReminder
|
false, // isStaticReminder
|
||||||
null, // reminderId
|
null, // reminderId
|
||||||
scheduleId,
|
scheduleId,
|
||||||
com.timesafari.dailynotification.ScheduleSource.ROLLOVER_ON_FIRE
|
com.timesafari.dailynotification.ScheduleSource.ROLLOVER_ON_FIRE,
|
||||||
|
false // skipPendingIntentIdempotence – rollover path does not skip
|
||||||
);
|
);
|
||||||
|
|
||||||
// Log next scheduled time in readable format
|
// Log next scheduled time in readable format
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import org.json.JSONObject
|
|||||||
* Implements exponential backoff and network constraints
|
* Implements exponential backoff and network constraints
|
||||||
*
|
*
|
||||||
* @author Matthew Raymer
|
* @author Matthew Raymer
|
||||||
* @version 1.1.2
|
* @version 1.1.3
|
||||||
*/
|
*/
|
||||||
class FetchWorker(
|
class FetchWorker(
|
||||||
appContext: Context,
|
appContext: Context,
|
||||||
@@ -205,7 +205,7 @@ class FetchWorker(
|
|||||||
|
|
||||||
val entity = com.timesafari.dailynotification.entities.NotificationContentEntity(
|
val entity = com.timesafari.dailynotification.entities.NotificationContentEntity(
|
||||||
notificationId,
|
notificationId,
|
||||||
"1.1.2", // Plugin version
|
"1.1.3", // Plugin version
|
||||||
null, // timesafariDid - can be set if available
|
null, // timesafariDid - can be set if available
|
||||||
"daily",
|
"daily",
|
||||||
title,
|
title,
|
||||||
@@ -301,7 +301,7 @@ class FetchWorker(
|
|||||||
"timestamp": ${System.currentTimeMillis()},
|
"timestamp": ${System.currentTimeMillis()},
|
||||||
"content": "Daily notification content",
|
"content": "Daily notification content",
|
||||||
"source": "mock_generator",
|
"source": "mock_generator",
|
||||||
"version": "1.1.2"
|
"version": "1.1.3"
|
||||||
}
|
}
|
||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
return mockData.toByteArray()
|
return mockData.toByteArray()
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import kotlinx.coroutines.runBlocking
|
|||||||
* Implements TTL-at-fire logic and notification delivery
|
* Implements TTL-at-fire logic and notification delivery
|
||||||
*
|
*
|
||||||
* @author Matthew Raymer
|
* @author Matthew Raymer
|
||||||
* @version 1.1.2
|
* @version 1.1.3
|
||||||
*/
|
*/
|
||||||
/**
|
/**
|
||||||
* Source of schedule request - tracks which code path triggered scheduling
|
* Source of schedule request - tracks which code path triggered scheduling
|
||||||
@@ -246,7 +246,7 @@ class NotifyReceiver : BroadcastReceiver() {
|
|||||||
val roomStorage = com.timesafari.dailynotification.storage.DailyNotificationStorageRoom(context)
|
val roomStorage = com.timesafari.dailynotification.storage.DailyNotificationStorageRoom(context)
|
||||||
val entity = com.timesafari.dailynotification.entities.NotificationContentEntity(
|
val entity = com.timesafari.dailynotification.entities.NotificationContentEntity(
|
||||||
notificationId,
|
notificationId,
|
||||||
"1.1.2", // Plugin version
|
"1.1.3", // Plugin version
|
||||||
null, // timesafariDid - can be set if available
|
null, // timesafariDid - can be set if available
|
||||||
"daily",
|
"daily",
|
||||||
config.title,
|
config.title,
|
||||||
|
|||||||
@@ -247,7 +247,7 @@ class ReactivationManager(private val context: Context) {
|
|||||||
// Create new notification content entry for missed alarm
|
// Create new notification content entry for missed alarm
|
||||||
val notification = com.timesafari.dailynotification.entities.NotificationContentEntity(
|
val notification = com.timesafari.dailynotification.entities.NotificationContentEntity(
|
||||||
notificationId,
|
notificationId,
|
||||||
"1.1.2", // Plugin version
|
"1.1.3", // Plugin version
|
||||||
null, // timesafariDid
|
null, // timesafariDid
|
||||||
"daily", // notificationType
|
"daily", // notificationType
|
||||||
"Daily Notification",
|
"Daily Notification",
|
||||||
@@ -1014,7 +1014,7 @@ class ReactivationManager(private val context: Context) {
|
|||||||
// Create new notification content entry for missed alarm
|
// Create new notification content entry for missed alarm
|
||||||
val notification = com.timesafari.dailynotification.entities.NotificationContentEntity(
|
val notification = com.timesafari.dailynotification.entities.NotificationContentEntity(
|
||||||
notificationId,
|
notificationId,
|
||||||
"1.1.2", // Plugin version
|
"1.1.3", // Plugin version
|
||||||
null, // timesafariDid
|
null, // timesafariDid
|
||||||
"daily", // notificationType
|
"daily", // notificationType
|
||||||
"Daily Notification",
|
"Daily Notification",
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ public class DailyNotificationStorageRoom {
|
|||||||
private final ExecutorService executorService;
|
private final ExecutorService executorService;
|
||||||
|
|
||||||
// Plugin version for migration tracking
|
// Plugin version for migration tracking
|
||||||
private static final String PLUGIN_VERSION = "1.1.2";
|
private static final String PLUGIN_VERSION = "1.1.3";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@timesafari/daily-notification-plugin",
|
"name": "@timesafari/daily-notification-plugin",
|
||||||
"version": "1.1.2",
|
"version": "1.1.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",
|
"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",
|
"main": "dist/plugin.js",
|
||||||
"module": "dist/esm/index.js",
|
"module": "dist/esm/index.js",
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
* Aligned with Android implementation and test requirements
|
* Aligned with Android implementation and test requirements
|
||||||
*
|
*
|
||||||
* @author Matthew Raymer
|
* @author Matthew Raymer
|
||||||
* @version 1.1.2 (see package.json for source of truth)
|
* @version 1.1.3 (see package.json for source of truth)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Import SPI types from content-fetcher.ts
|
// Import SPI types from content-fetcher.ts
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
* Provides structured logging, event codes, and health monitoring
|
* Provides structured logging, event codes, and health monitoring
|
||||||
*
|
*
|
||||||
* @author Matthew Raymer
|
* @author Matthew Raymer
|
||||||
* @version 1.1.2
|
* @version 1.1.3
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
* This implementation provides clear error messages for all methods.
|
* This implementation provides clear error messages for all methods.
|
||||||
*
|
*
|
||||||
* @author Matthew Raymer
|
* @author Matthew Raymer
|
||||||
* @version 1.1.2
|
* @version 1.1.3
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
|
|||||||
Reference in New Issue
Block a user