You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
IterableInAppMessage.createdAt type seems inconsistent with what's specified in the TS declaration - causing crashes #581
The type is declared to be a Date (potentially undefined)
// https://github.com/Iterable/react-native-sdk/blob/master/ts/IterableInAppMessage.tsdeclareclassIterableInAppMessage{/** * the ID for the in-app message */readonlymessageId: string;/** * the campaign ID for this message */readonlycampaignId: number;/** * when to trigger this in-app */readonlytrigger: IterableInAppTrigger;/** * when was this message created */readonlycreatedAt?: Date;/**
I see that typeof createdAt is a string when logging from Android and a Number when logging from iOS
Android logs: i included the error that is thrown that's causing my app to crash (android only)
LOG 1720797936904
LOG string
ERROR Error: fromMillis requires a numerical input, but received a string with value 1720797936904
iOS Logs
LOG 1720797936904
LOG number
Investigation (so far)
I'm not sure what is causing the typeof to be different between iOS/Android, however by reading the code it doesn't look like the typing of Date | undefined is correct. dateObject.setUTCMilliseconds returns a Number, not a Date
If anyone else runs into this issue this is how I fixed in my codebase temporarily:
Using patch-package make this patch so TS will fail to compile if I don't account for the typings
diff --git a/node_modules/@iterable/react-native-sdk/js/IterableInAppMessage.d.ts b/node_modules/@iterable/react-native-sdk/js/IterableInAppMessage.d.ts
index b363e19..41efec4 100644
--- a/node_modules/@iterable/react-native-sdk/js/IterableInAppMessage.d.ts+++ b/node_modules/@iterable/react-native-sdk/js/IterableInAppMessage.d.ts@@ -19,7 +19,7 @@ declare class IterableInAppMessage {
/**
* when was this message created
*/
- readonly createdAt?: Date;+ readonly createdAt?: string | number | Date;
/**
* when to expire this in-app (undefined means do not expire)
*/
Thanks for reporting this issue @alex-a-pereira ! and appreciate the workaround suggested for fellow developers.
Will have this issue flagged internally for the team to fix.
Activity
alex-a-pereira commentedon Oct 7, 2024
If anyone else runs into this issue this is how I fixed in my codebase temporarily:
Using
patch-packagemake this patch so TS will fail to compile if I don't account for the typingsThen I made a helper function in my code
Ayyanchira commentedon Oct 7, 2024
Thanks for reporting this issue @alex-a-pereira ! and appreciate the workaround suggested for fellow developers.
Will have this issue flagged internally for the team to fix.
Fix createdAt and expiresAt returning numbers instead of Date objects
fix: return proper Date objects for createdAt/expiresAt in fromDict
fix(#581): convert createdAt and expiresAt to Date objects in fromDict