diff --git a/ts/services/storyLoader.ts b/ts/services/storyLoader.ts index 2a7aee5a9..01d127799 100644 --- a/ts/services/storyLoader.ts +++ b/ts/services/storyLoader.ts @@ -4,6 +4,7 @@ import { pick } from 'lodash'; import type { MessageAttributesType } from '../model-types.d'; import type { StoryDataType } from '../state/ducks/stories'; +import * as durations from '../util/durations'; import * as log from '../logging/log'; import dataInterface from '../sql/Client'; import { getAttachmentsForMessage } from '../state/selectors/message'; @@ -65,14 +66,25 @@ export function getStoriesForRedux(): Array { async function repairUnexpiredStories(): Promise { strictAssert(storyData, 'Could not load stories'); + const DAY_AS_SECONDS = durations.DAY / 1000; + const storiesWithExpiry = storyData - .filter(story => !story.expirationStartTimestamp) + .filter( + story => + !story.expirationStartTimestamp || + !story.expireTimer || + story.expireTimer > DAY_AS_SECONDS + ) .map(story => ({ ...story, expirationStartTimestamp: Math.min( story.serverTimestamp || story.timestamp, Date.now() ), + expireTimer: Math.min( + Math.floor((story.timestamp + durations.DAY - Date.now()) / 1000), + DAY_AS_SECONDS + ), })); if (!storiesWithExpiry.length) {