-
Notifications
You must be signed in to change notification settings - Fork 973
feat: order robots according to updatedAt #572
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
chore: release v0.0.8
chore: release v0.0.9
chore: release v0.0.10
chore: release v0.0.11
chore: release v0.0.12
chore: release v0.0.13
WalkthroughThe change modifies the timestamp format used when duplicating a robot recording in the server route, switching from an ISO string ( Changes
Suggested labels
Poem
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
✅ Files skipped from review due to trivial changes (1)
✨ Finishing Touches
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@@ -405,7 +405,7 @@ router.post('/recordings/:id/duplicate', requireSignIn, async (req: Authenticate | |||
return step; | |||
}); | |||
|
|||
const currentTimestamp = new Date().toISOString(); | |||
const currentTimestamp = new Date().toLocaleString(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Timestamp format change may cause inconsistency issues.
Changing from toISOString()
to toLocaleString()
aligns with the frontend changes that use updatedAt
for sorting recordings, but introduces potential issues:
toLocaleString()
output varies by server locale, which may cause inconsistent display and sorting- The codebase uses mixed timestamp formats (analytics events use ISO format while UI-facing values use locale format)
- String-based sorting of locale-formatted dates may not yield chronologically correct results
🏁 Script executed:
#!/bin/bash
# Check timestamp format consistency across the codebase
echo "Checking timestamp format usage patterns:"
echo "==========================================="
echo "ISO format usage:"
rg "toISOString\(\)" -A 2 -B 2 --no-heading
echo "\nLocale format usage:"
rg "toLocaleString\(\)" -A 2 -B 2 --no-heading
# Check if there's any date parsing logic in the frontend RecordingsTable component
echo "\nRelated date parsing in RecordingsTable component:"
rg -t tsx "updatedAt|createdAt|parse|sort" --include="RecordingsTable.tsx" -A 3 -B 3 --no-heading
Length of output: 16814
🏁 Script executed:
#!/bin/bash
set -e
echo "Locating RecordingsTable.tsx..."
fd --hidden --full-path --extension tsx RecordingsTable.tsx
echo -e "\nSearching for updatedAt usage in RecordingsTable.tsx..."
rg -n "updatedAt" -A3 -B3 -g "*RecordingsTable.tsx"
echo -e "\nSearching for sorting logic in RecordingsTable.tsx..."
rg -n "sort" -A3 -B3 -g "*RecordingsTable.tsx"
echo -e "\nSearching for any Date parsing or conversion in RecordingsTable.tsx..."
rg -n "new Date" -A3 -B3 -g "*RecordingsTable.tsx"
Length of output: 3148
🏁 Script executed:
#!/bin/bash
set -e
echo "Inspecting usage of currentTimestamp in storage.ts..."
rg -n "currentTimestamp" -A5 -B5 server/src/routes/storage.ts
Length of output: 859
Standardize timestamp formatting to ISO for storage and display
The switch to toLocaleString()
does avoid string-based sorting (we’re parsing to Date
and sorting by getTime()
), but it still introduces two risks:
- Locale-dependent output on the server can vary between environments and may break parsing
- We now mix ISO (
toISOString()
) and locale strings across the codebase
To avoid subtle bugs and parsing edge cases, store timestamps in ISO everywhere (including here) and format them for display only on the client. For example, in server/src/routes/storage.ts (lines 408–419):
- const currentTimestamp = new Date().toLocaleString();
+ const currentTimestamp = new Date().toISOString();
const newRobot = await Robot.create({
id: uuid(),
userId: originalRobot.userId,
recording_meta: {
…,
- createdAt: currentTimestamp,
- updatedAt: currentTimestamp,
+ createdAt: currentTimestamp, // ISO format
+ updatedAt: currentTimestamp,
},
…
});
– Revert or remove other uses of toLocaleString()
for persisted timestamps
– Use client-side code (e.g. RecordingsTable) to format or localize ISO dates for display
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
const currentTimestamp = new Date().toLocaleString(); | |
const currentTimestamp = new Date().toISOString(); | |
const newRobot = await Robot.create({ | |
id: uuid(), | |
userId: originalRobot.userId, | |
recording_meta: { | |
…, | |
createdAt: currentTimestamp, // ISO format | |
updatedAt: currentTimestamp, | |
}, | |
… | |
}); |
Already done in other PR
Summary by CodeRabbit