Skip to content

IterableInAppMessage.createdAt type seems inconsistent with what's specified in the TS declaration - causing crashes #581

Open
@alex-a-pereira

Description

@alex-a-pereira

Issue

The type is declared to be a Date (potentially undefined)

// https://github.com/Iterable/react-native-sdk/blob/master/ts/IterableInAppMessage.ts
declare class IterableInAppMessage {
    /**
     * the ID for the in-app message
     */
    readonly messageId: string;
    /**
     * the campaign ID for this message
     */
    readonly campaignId: number;
    /**
     * when to trigger this in-app
     */
    readonly trigger: IterableInAppTrigger;
    /**
     * when was this message created
     */
    readonly createdAt?: Date;
    /**

However when i add the following logging:

   console.log('=====================================')
   console.log(latestInboxMessage?.itbInAppMessage?.createdAt)
   console.log(typeof latestInboxMessage.itbInAppMessage.createdAt)

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

// https://github.com/Iterable/react-native-sdk/blob/master/ts/IterableInAppMessage.ts#L115
    let createdAt = dict["createdAt"]
    if (createdAt) {
      var dateObject = new Date(0)
      createdAt = dateObject.setUTCMilliseconds(createdAt)
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions