Skip to content

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

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)
    }

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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