-
Notifications
You must be signed in to change notification settings - Fork 180
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
Fix timezone issues with recurring action datetime pickers (bsc#1225196) #8833
Conversation
👋 Hello! Thanks for contributing to our project. If you are unsure the failing tests are related to your code, you can check the "reference jobs". These are jobs that run on a scheduled time with code from master. If they fail for the same reason as your build, it means the tests or the infrastructure are broken. If they do not fail, but yours do, it means it is related to your code. Reference tests: KNOWN ISSUES Sometimes the build can fail when pulling new jar files from download.opensuse.org . This is a known limitation. Given this happens rarely, when it does, all you need to do is rerun the test. Sorry for the inconvenience. For more tips on troubleshooting, see the troubleshooting guide. Happy hacking! |
3e14327
to
749af37
Compare
// Creation time is always retrieved in server's timezone | ||
// Parse the date and show it in user's timezone | ||
const createdAt = localizedMoment( | ||
Date.parse(`${details.createdAt} ${localizedMoment.serverTimeZoneAbbr}`) |
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.
This looks like we could maybe standardize this away inside localizedMoment
? Although it would be preferable if we could make details.createdAt
an ISO string rather than a humanized date string, then we could pass it directly to localizedMoment
. Would that be possible or does it seem like too much work?
If the latter, we could extend the interface we provide in localizedMoment
, maybe something along these lines?
Object.defineProperties(moment, {
// ...
+ fromServerString: {
+ get() {
+ return function fromServerString(input: string): moment.Moment {
+ return moment.tz(input, config.serverTimeZone);
+ };
+ },
+ },
});
What do you think?
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.
Yes, I actually wanted to open this to discussion. The ideal solution would be to send ISO dates from the backend, but we would need to do a whole sweep since this is how we get the DB dates all around. OTOH, the current format is consistent, so I guess your suggestion is the best way for now. I haven't been able to make it work without parsing it with JS Date
so far, but I'll try it and see if it works.
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.
Well the above internally uses Date
anyway since we don't specify any format information. But if we know the server format ahead of time we could add that and make that check strict. That way we could use this for pages that use the current format, but use ISO for everything new we make and over time if we touch stuff, move that to ISO too.
Of course, if there was an easy way to swap everything to ISO, that would be preferred, but I suspect that would be a beast with many hidden surprises.
When I create a new recurring action with a weekly schedule without touching any of the fields with this diff, I get an error about a null value when trying to look at the details of the created action. Other than that this looks good, thanks a lot for taking the time to look into this. |
Fixes multiple issues about timezone handling in recurring action details page and datetime pickers:
In recurring action details, show "Created At" in the correct timezone instead of server's (DB's) timezoneBugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1225196
Documentation
Test coverage
Links
https://bugzilla.suse.com/show_bug.cgi?id=1225196
Changelogs
Make sure the changelogs entries you are adding are compliant with https://github.com/uyuni-project/uyuni/wiki/Contributing#changelogs and https://github.com/uyuni-project/uyuni/wiki/Contributing#uyuni-projectuyuni-repository
If you don't need a changelog check, please mark this checkbox:
If you uncheck the checkbox after the PR is created, you will need to re-run
changelog_test
(see below)Re-run a test
If you need to re-run a test, please mark the related checkbox, it will be unchecked automatically once it has re-run:
Before you merge
Check How to branch and merge properly!