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

Classic block: save content bug fix #23408

Merged
merged 6 commits into from
Jun 28, 2020

Conversation

glendaviesnz
Copy link
Contributor

@glendaviesnz glendaviesnz commented Jun 24, 2020

Description

Fixes: #22935
Fixes: #15577

Uses the TinyMCE change events to push changed content back out to gutenberg instead of just relying on the onblur event

How has this been tested?

Manually

Screenshots

Before:

onchange-before

After:

onchange-after

Types of changes

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR.

@glendaviesnz glendaviesnz added [Type] Bug An existing feature does not function as intended [Status] In Progress Tracking issues with work in progress [Block] Classic Affects the Classic Editor Block labels Jun 24, 2020
@glendaviesnz glendaviesnz self-assigned this Jun 24, 2020
@github-actions
Copy link

github-actions bot commented Jun 24, 2020

Size Change: +67 B (0%)

Total Size: 1.13 MB

Filename Size Change
build/block-library/index.js 130 kB +67 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.62 kB 0 B
build/api-fetch/index.js 3.4 kB 0 B
build/autop/index.js 2.82 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 7.38 kB 0 B
build/block-directory/style-rtl.css 941 B 0 B
build/block-directory/style.css 942 B 0 B
build/block-editor/index.js 109 kB 0 B
build/block-editor/style-rtl.css 10.7 kB 0 B
build/block-editor/style.css 10.7 kB 0 B
build/block-library/editor-rtl.css 7.6 kB 0 B
build/block-library/editor.css 7.6 kB 0 B
build/block-library/style-rtl.css 8.04 kB 0 B
build/block-library/style.css 8.04 kB 0 B
build/block-library/theme-rtl.css 730 B 0 B
build/block-library/theme.css 732 B 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/blocks/index.js 48.2 kB 0 B
build/components/index.js 198 kB 0 B
build/components/style-rtl.css 15.9 kB 0 B
build/components/style.css 15.9 kB 0 B
build/compose/index.js 9.65 kB 0 B
build/core-data/index.js 11.4 kB 0 B
build/data-controls/index.js 1.29 kB 0 B
build/data/index.js 8.44 kB 0 B
build/date/index.js 5.47 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 569 B 0 B
build/dom/index.js 3.19 kB 0 B
build/edit-navigation/index.js 9.87 kB 0 B
build/edit-navigation/style-rtl.css 1.02 kB 0 B
build/edit-navigation/style.css 1.02 kB 0 B
build/edit-post/index.js 303 kB 0 B
build/edit-post/style-rtl.css 5.51 kB 0 B
build/edit-post/style.css 5.5 kB 0 B
build/edit-site/index.js 16.7 kB 0 B
build/edit-site/style-rtl.css 3.03 kB 0 B
build/edit-site/style.css 3.03 kB 0 B
build/edit-widgets/index.js 9.32 kB 0 B
build/edit-widgets/style-rtl.css 2.42 kB 0 B
build/edit-widgets/style.css 2.42 kB 0 B
build/editor/editor-styles-rtl.css 537 B 0 B
build/editor/editor-styles.css 539 B 0 B
build/editor/index.js 44.8 kB 0 B
build/editor/style-rtl.css 3.85 kB 0 B
build/editor/style.css 3.85 kB 0 B
build/element/index.js 4.65 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/index.js 7.72 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 2.13 kB 0 B
build/html-entities/index.js 622 B 0 B
build/i18n/index.js 3.56 kB 0 B
build/is-shallow-equal/index.js 711 B 0 B
build/keyboard-shortcuts/index.js 2.51 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/index.js 3.12 kB 0 B
build/list-reusable-blocks/style-rtl.css 450 B 0 B
build/list-reusable-blocks/style.css 451 B 0 B
build/media-utils/index.js 5.29 kB 0 B
build/notices/index.js 1.79 kB 0 B
build/nux/index.js 3.4 kB 0 B
build/nux/style-rtl.css 663 B 0 B
build/nux/style.css 660 B 0 B
build/plugins/index.js 2.56 kB 0 B
build/primitives/index.js 1.5 kB 0 B
build/priority-queue/index.js 788 B 0 B
build/redux-routine/index.js 2.85 kB 0 B
build/rich-text/index.js 14 kB 0 B
build/server-side-render/index.js 2.68 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.28 kB 0 B
build/url/index.js 4.06 kB 0 B
build/viewport/index.js 1.85 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

@gziolo gziolo requested review from ellatrix and azaozz June 24, 2020 09:30
@scruffian
Copy link
Contributor

Looks good to me

@glendaviesnz glendaviesnz changed the title [WIP]Classic block: save content bug fix Classic block: save content bug fix Jun 24, 2020
@glendaviesnz glendaviesnz removed the [Status] In Progress Tracking issues with work in progress label Jun 24, 2020
@glendaviesnz glendaviesnz marked this pull request as ready for review June 24, 2020 20:50
@@ -112,6 +121,20 @@ export default class ClassicEdit extends Component {
bookmark = null;
} );

editor.on(
'Paste Change input Undo Redo',
debounce( () => {
Copy link
Contributor

@ntsekouras ntsekouras Jun 25, 2020

Choose a reason for hiding this comment

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

Why are you using debounce here? Just not to fire more times when these events are triggered?

Copy link
Contributor Author

@glendaviesnz glendaviesnz Jun 25, 2020

Choose a reason for hiding this comment

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

We figured that this could be a very noisy call as someone is typing, making lots of changes, etc., and we don't need every tiny change detected to go through this cycle.

We didn't actually start to see any visible performance degradation until you got upwards of 50,000 words in a post, and adding a debounce made it performant again even with a massive post.

Although people are never likely to have huge posts like that we didn't think it would hurt to add this in anyway, and the debounce time could probably even be raised. Open to feedback on whether we keep this, increase time, etc.

Copy link
Contributor

Choose a reason for hiding this comment

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

we didn't think it would hurt to add this in anyway

I believe that too and I also think that 250 is a fair debounce time.

It's great that you have made some tests checking performance! 👍

Copy link
Contributor

@ntsekouras ntsekouras left a comment

Choose a reason for hiding this comment

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

Good fix @glendaviesnz ! Thank you!

@glendaviesnz glendaviesnz force-pushed the fix/classic-block-content-save-bug branch from f5d45f5 to edb8ec1 Compare June 28, 2020 21:02
@glendaviesnz
Copy link
Contributor Author

Thanks @ntsekouras, did you have any thoughts on this one #23376?

@glendaviesnz glendaviesnz merged commit 0f489cf into master Jun 28, 2020
@glendaviesnz glendaviesnz deleted the fix/classic-block-content-save-bug branch June 28, 2020 21:23
@github-actions github-actions bot added this to the Gutenberg 8.5 milestone Jun 28, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Classic Affects the Classic Editor Block [Type] Bug An existing feature does not function as intended
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Classic block content not saved until block is blurred Update button doesn't work reliably
3 participants