Skip to content
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: Post schedule label showing wrong time if site and user timezones did not match #26212

Merged
merged 1 commit into from
Oct 19, 2020

Conversation

jorgefilipecosta
Copy link
Member

Fixes: https://core.trac.wordpress.org/ticket/50949#comment:29

Previously the issue happened just on the core but if the Gutenberg plugin was installed the issue did not happen.
Recently the issue started appearing also with Gutenberg installed. That happened after PR #22866 was merged.
On PR #22866 it is referred that core already used a higher version of moment-timezone than the one previously used on Gutenberg. That explains why previously the issue happened on the core but not on Gutenberg.

It seems the update is not the issue in fact it seems before the update there was a bug in the library that made our code work well.

The date we have in select( 'core/editor' ).getEditedPostAttribute( 'date' ) is on the timezone of the website and does not needs any conversion. We just want to format it in a pretty way to show it to the user. The function dateI18n that was previously being used assumes the date is in a different timezone and then changes the time to the site time zone making the time appear wrong because the time was already in that timezone.

What I did was instead of calling dateI18n just use format because we just want to format the date given that it is already on the site timezone.

The component DateTime was showing the correct date and that component was just doing format calls packages/components/src/date-time/time.js, so this change makes PostScheduleLabel consistent with that.

How has this been tested?

Se your test website to a timezone that is different from the one on your computer.
On master Create a post and publish it verify the date shown as publishing date on the document sidebar is not correct (according to the website timezone). Click the date and open the post scheduler to verify the date there is correct according to the site time zone.
On this branch repeat the previous step and verify the post publish date now shows the correct date.

@jorgefilipecosta jorgefilipecosta added [Type] Bug An existing feature does not function as intended [Priority] High Used to indicate top priority items that need quick attention [Package] Date /packages/date Backport to WP 6.7 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta labels Oct 16, 2020
@github-actions
Copy link

Size Change: -4 B (0%)

Total Size: 1.19 MB

Filename Size Change
build/editor/index.js 42.6 kB -4 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.54 kB 0 B
build/api-fetch/index.js 3.35 kB 0 B
build/autop/index.js 2.72 kB 0 B
build/blob/index.js 668 B 0 B
build/block-directory/index.js 8.6 kB 0 B
build/block-directory/style-rtl.css 943 B 0 B
build/block-directory/style.css 942 B 0 B
build/block-editor/index.js 130 kB 0 B
build/block-editor/style-rtl.css 11 kB 0 B
build/block-editor/style.css 10.9 kB 0 B
build/block-library/editor-rtl.css 8.69 kB 0 B
build/block-library/editor.css 8.69 kB 0 B
build/block-library/index.js 142 kB 0 B
build/block-library/style-rtl.css 7.71 kB 0 B
build/block-library/style.css 7.71 kB 0 B
build/block-library/theme-rtl.css 741 B 0 B
build/block-library/theme.css 741 B 0 B
build/block-serialization-default-parser/index.js 1.77 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/blocks/index.js 47.6 kB 0 B
build/components/index.js 169 kB 0 B
build/components/style-rtl.css 15.4 kB 0 B
build/components/style.css 15.4 kB 0 B
build/compose/index.js 9.63 kB 0 B
build/core-data/index.js 12.1 kB 0 B
build/data-controls/index.js 684 B 0 B
build/data/index.js 8.63 kB 0 B
build/date/index.js 31.9 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 569 B 0 B
build/dom/index.js 4.43 kB 0 B
build/edit-navigation/index.js 10.6 kB 0 B
build/edit-navigation/style-rtl.css 868 B 0 B
build/edit-navigation/style.css 871 B 0 B
build/edit-post/index.js 306 kB 0 B
build/edit-post/style-rtl.css 6.37 kB 0 B
build/edit-post/style.css 6.35 kB 0 B
build/edit-site/index.js 21.6 kB 0 B
build/edit-site/style-rtl.css 3.8 kB 0 B
build/edit-site/style.css 3.81 kB 0 B
build/edit-widgets/index.js 21.6 kB 0 B
build/edit-widgets/style-rtl.css 3.09 kB 0 B
build/edit-widgets/style.css 3.09 kB 0 B
build/editor/editor-styles-rtl.css 480 B 0 B
build/editor/editor-styles.css 482 B 0 B
build/editor/style-rtl.css 3.85 kB 0 B
build/editor/style.css 3.84 kB 0 B
build/element/index.js 4.45 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/index.js 7.49 kB 0 B
build/format-library/style-rtl.css 547 B 0 B
build/format-library/style.css 548 B 0 B
build/hooks/index.js 1.74 kB 0 B
build/html-entities/index.js 622 B 0 B
build/i18n/index.js 3.54 kB 0 B
build/is-shallow-equal/index.js 709 B 0 B
build/keyboard-shortcuts/index.js 2.39 kB 0 B
build/keycodes/index.js 1.85 kB 0 B
build/list-reusable-blocks/index.js 3.02 kB 0 B
build/list-reusable-blocks/style-rtl.css 476 B 0 B
build/list-reusable-blocks/style.css 476 B 0 B
build/media-utils/index.js 5.12 kB 0 B
build/notices/index.js 1.69 kB 0 B
build/nux/index.js 3.27 kB 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/plugins/index.js 2.44 kB 0 B
build/primitives/index.js 1.35 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/redux-routine/index.js 2.85 kB 0 B
build/reusable-blocks/index.js 3.04 kB 0 B
build/rich-text/index.js 13 kB 0 B
build/server-side-render/index.js 2.6 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.24 kB 0 B
build/url/index.js 4.07 kB 0 B
build/viewport/index.js 1.75 kB 0 B
build/warning/index.js 1.13 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

Copy link
Member

@whyisjake whyisjake left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

import { withSelect } from '@wordpress/data';

export function PostScheduleLabel( { date, isFloating } ) {
const settings = __experimentalGetSettings();

return date && ! isFloating
? dateI18n(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems the intent of that function is not clear. Does it assume that the passed date is a given timezone? Should we remove that assumption? Should we clarify it in the description of the function.

Anyway, it seems like the current fix is good anyway but there might be something wrong with dateI18n

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think by default the dateI18n assumes the time is in the user's timezone and formats it in the website time zone.
I think we may have other cases where we are using dateI18n for dates that are already on the website timezone. I will try to propose a follow-up PR that improves documentation for this function and maybe fixes additional issues.

@tellthemachines
Copy link
Contributor

To confirm, this backport is aimed at 5.5.2, right?

@whyisjake
Copy link
Member

Correct @tellthemachines.

@tellthemachines
Copy link
Contributor

Cool, who's doing the backporting? I think #24852 was meant to go in too, and possibly also #25037 and #25107.

@youknowriad
Copy link
Contributor

I didn't realize that we might have a minor backport too during the "beta" phase of a major. We might want to have two separate labels for these?

@tellthemachines
Copy link
Contributor

We could try that! Are you thinking something like "Backport to WP Core - Minor" and "- Major", or labelling by target version?

@youknowriad
Copy link
Contributor

@tellthemachines Yes, this works for me to avoid ambiguity

@tellthemachines
Copy link
Contributor

@youknowriad which of them works? Differentiating by minor/major, or having a different label for each target version?

@youknowriad
Copy link
Contributor

I prefer just two labels personally because we explicitly remove the label once the backport is made but both work tbh.

@noisysocks noisysocks added Backport to WP Minor Release Pull request that needs to be backported to a WordPress minor release and removed Backport to WP 6.7 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta labels Oct 29, 2020
talldan pushed a commit that referenced this pull request Oct 29, 2020
noisysocks added a commit that referenced this pull request Oct 29, 2020
* Refactor BlockMover to use React hooks (#24774)

* Add drag handle to block toolbar (#24852)

* Add drag handle to block mover component

* Switch draggable chip to reflect toolbar layout

* Use drag cursor

* Hide drag handle on mobile or in top toolbar mode

* Adjust handle and structure.

* Size the switcher.

* Adjust mover.

* Update icon for handle.

* Update movers buttons.

* Fix groups.

* Focus for switcher.

* Handle focus.

* Fix top toolbar.

* Popover fix.

* Fix spacing issue.

* Harmonize spacing.

* Try small independen transition for up / down.

* Reduce motion.

* use dragHandle icon in draggable chip

* Make draggable chip use same icon as toolbar

* Revert "Make draggable chip use same icon as toolbar"

This reverts commit d031006.

* Revert offset change and ensure cursor does not overlap chip block info

* Update snapshots to reflect chevron icon change

Co-authored-by: jasmussen <joen@automattic.com>
Co-authored-by: Matías Ventura <mv@matiasventura.com>

* Fix issue with single block. (#25107)

* Remove animation from mover buttons. (#25728)

The animation was intended to better convey direction, and were added as an experiment. It doesn't seem successful, so let's remove it again.

* add label in drag and drop button (#25606)

* Change toolbar drag remove labels (#25614)

* Refactor toolabar drag+remove labels

* fix tests

* fixes #24845 (#24847)

* Fix: Post schedule label showing wrong time if site and user timezones did not match (#26212)

* URLInput: Use debounce() instead of throttle() (#26529)

Wait until the user finishes typing before sending an AJAX request. This
ensures that there isn't an AJAX request sent every 200 ms while the
user is typing.

* Update browserlist dependency (#24756)

* Fix composer test failures due to invalid lock (#26472)

* Update package-lock.json

* Set dev environment to use WordPress 5.5

Co-authored-by: Chris Alexander <cmalex@gmail.com>
Co-authored-by: Daniel Richards <daniel.richards@automattic.com>
Co-authored-by: jasmussen <joen@automattic.com>
Co-authored-by: Matías Ventura <mv@matiasventura.com>
Co-authored-by: Joen A <1204802+jasmussen@users.noreply.github.com>
Co-authored-by: Nik Tsekouras <ntsekouras@outlook.com>
Co-authored-by: Ari Stathopoulos <aristath@gmail.com>
Co-authored-by: Jorge Costa <jorge.costa@automattic.com>
Co-authored-by: Riad Benguella <benguella@gmail.com>
Co-authored-by: Marcus Kazmierczak <marcus@mkaz.com>
@noisysocks noisysocks removed the Backport to WP Minor Release Pull request that needs to be backported to a WordPress minor release label Oct 29, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Package] Date /packages/date [Priority] High Used to indicate top priority items that need quick attention [Type] Bug An existing feature does not function as intended
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants