···153153 descendants: true,
154154 by: true,
155155 enteredLeaderboardAt: true,
156156+ exitedLeaderboardAt: true,
156157 firstSeenAt: true,
157158 isOnLeaderboard: true,
158159 isFromMonitoredUser: true,
···164165 return null;
165166 }
166167167167- // Calculate time on front page if available
168168 let timeOnFrontPage = null;
169169+169170 if (story.enteredLeaderboardAt) {
170170- // Use current time as end time if the story is still on the leaderboard
171171- const endTime = story.isOnLeaderboard
172172- ? Math.floor(Date.now() / 1000)
173173- : story.enteredLeaderboardAt + 3600;
174174- timeOnFrontPage = endTime - story.enteredLeaderboardAt;
171171+ if (story.exitedLeaderboardAt)
172172+ timeOnFrontPage =
173173+ story.exitedLeaderboardAt - story.enteredLeaderboardAt;
174174+ else
175175+ timeOnFrontPage =
176176+ (Date.now() - story.enteredLeaderboardAt * 1000) / 1000;
175177 }
176178177179 // Format the response