From b0fd3caa934bb5e4084ad96557df292ab073578d Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 7 Apr 2026 15:04:45 +0000 Subject: [PATCH] Fix createdAt and expiresAt returning numbers instead of Date objects setUTCMilliseconds() returns a numeric timestamp, not a Date object, causing type mismatches and crashes on Android. Replace with new Date() constructor which correctly creates Date objects from millisecond timestamps. Also removes the downstream typeof workaround in defaultDateMapper and the @ts-ignore suppression. Fixes #581 https://claude.ai/code/session_016EHrcqQDgexLB5xApCxrZj --- src/inApp/classes/IterableInAppMessage.ts | 16 ++-------------- src/inbox/classes/IterableInboxDataModel.ts | 10 +--------- 2 files changed, 3 insertions(+), 23 deletions(-) diff --git a/src/inApp/classes/IterableInAppMessage.ts b/src/inApp/classes/IterableInAppMessage.ts index c77b08e63..eda8e0d7c 100644 --- a/src/inApp/classes/IterableInAppMessage.ts +++ b/src/inApp/classes/IterableInAppMessage.ts @@ -175,16 +175,8 @@ export class IterableInAppMessage { const campaignId = dict.campaignId; const trigger = IterableInAppTrigger.fromDict(dict.trigger); - let createdAt = dict.createdAt; - if (createdAt) { - const dateObject = new Date(0); - createdAt = dateObject.setUTCMilliseconds(createdAt); - } - let expiresAt = dict.expiresAt; - if (expiresAt) { - const dateObject = new Date(0); - expiresAt = dateObject.setUTCMilliseconds(expiresAt); - } + const createdAt = dict.createdAt ? new Date(dict.createdAt) : undefined; + const expiresAt = dict.expiresAt ? new Date(dict.expiresAt) : undefined; const saveToInbox = IterableUtil.readBoolean(dict, 'saveToInbox'); const inboxMetadataDict = dict.inboxMetadata; let inboxMetadata: IterableInboxMetadata | undefined; @@ -202,10 +194,6 @@ export class IterableInAppMessage { messageId, campaignId, trigger, - // MOB-10426: Speak to the team about `IterableInAppMessage` requiring a date - // object, but being passed a number in this case - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore createdAt, expiresAt, saveToInbox, diff --git a/src/inbox/classes/IterableInboxDataModel.ts b/src/inbox/classes/IterableInboxDataModel.ts index 4b81d5b22..0f3a4527d 100644 --- a/src/inbox/classes/IterableInboxDataModel.ts +++ b/src/inbox/classes/IterableInboxDataModel.ts @@ -211,15 +211,7 @@ export class IterableInboxDataModel { return ''; } - let createdAt; - - if (typeof message.createdAt === 'string') { - createdAt = new Date(parseInt(message.createdAt, 10)); - } else { - createdAt = new Date(message.createdAt); - } - - const defaultDateString = `${createdAt.toLocaleDateString()} at ${createdAt.toLocaleTimeString()}`; + const defaultDateString = `${message.createdAt.toLocaleDateString()} at ${message.createdAt.toLocaleTimeString()}`; return defaultDateString; }