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

[RNMobile] create undo level less frequently #24116

Merged
merged 7 commits into from
Aug 11, 2020

Conversation

dratwas
Copy link
Contributor

@dratwas dratwas commented Jul 22, 2020

Description

This is the following PR of #22492

In this PR i added a selectionStart and selectionEnd to transient Edits. The motivation is described here: wordpress-mobile/gutenberg-mobile#2192 (comment)

I also added a debounce function to create an undo level when the input (rich-text) stops for over a second to be consistent with the web:
https://github.com/WordPress/gutenberg/blob/master/packages/rich-text/src/component/index.js#L501

It changes how the undo mechanism works on mobile.

In this PR I also added a fix for autosave issue wordpress-mobile/gutenberg-mobile#2349

How has this been tested?

Undo/redo block actions

  • From the example app, remove a few blocks.
  • Press the Undo button to see them reappear.
  • Press Redo to remove the blocks again.

Undo/redo text

  • Write some text on a text based block .
  • Press Undo until all new text has disappeared.
  • Press Redo to see the text appear again.

Undo/redo text format

  • On a rich-text based component, add some format (bold, links, etc…).
  • Undo all changes and Redo them to arrive to the same state.

Autosave issue(Android)

  • Open a new post with an empty paragraph block (WP-Android)
  • Quickly type 30+ characters (i.e., tap "A" a bunch of times in a row)
  • Publish the post (without selecting or changing any other blocks)
  • Open published post, the text should be exactly the same as before publishing

Screenshots

Before After
undobefore undoafter
Web
undowebpar

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.

@github-actions
Copy link

github-actions bot commented Jul 22, 2020

Size Change: 0 B

Total Size: 1.15 MB

ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.67 kB 0 B
build/api-fetch/index.js 3.44 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.97 kB 0 B
build/block-directory/style-rtl.css 953 B 0 B
build/block-directory/style.css 952 B 0 B
build/block-editor/index.js 125 kB 0 B
build/block-editor/style-rtl.css 10.6 kB 0 B
build/block-editor/style.css 10.6 kB 0 B
build/block-library/editor-rtl.css 7.59 kB 0 B
build/block-library/editor.css 7.59 kB 0 B
build/block-library/index.js 132 kB 0 B
build/block-library/style-rtl.css 7.76 kB 0 B
build/block-library/style.css 7.77 kB 0 B
build/block-library/theme-rtl.css 729 B 0 B
build/block-library/theme.css 730 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.3 kB 0 B
build/components/index.js 200 kB 0 B
build/components/style-rtl.css 15.7 kB 0 B
build/components/style.css 15.7 kB 0 B
build/compose/index.js 9.68 kB 0 B
build/core-data/index.js 11.8 kB 0 B
build/data-controls/index.js 1.29 kB 0 B
build/data/index.js 8.45 kB 0 B
build/date/index.js 5.38 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 568 B 0 B
build/dom/index.js 3.23 kB 0 B
build/edit-navigation/index.js 10.9 kB 0 B
build/edit-navigation/style-rtl.css 1.08 kB 0 B
build/edit-navigation/style.css 1.08 kB 0 B
build/edit-post/index.js 304 kB 0 B
build/edit-post/style-rtl.css 5.59 kB 0 B
build/edit-post/style.css 5.59 kB 0 B
build/edit-site/index.js 17 kB 0 B
build/edit-site/style-rtl.css 3.06 kB 0 B
build/edit-site/style.css 3.06 kB 0 B
build/edit-widgets/index.js 9.38 kB 0 B
build/edit-widgets/style-rtl.css 2.45 kB 0 B
build/edit-widgets/style.css 2.45 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 45.3 kB 0 B
build/editor/style-rtl.css 3.8 kB 0 B
build/editor/style.css 3.79 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 621 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.52 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/index.js 3.11 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.33 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 671 B 0 B
build/nux/style.css 668 B 0 B
build/plugins/index.js 2.56 kB 0 B
build/primitives/index.js 1.41 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/redux-routine/index.js 2.85 kB 0 B
build/rich-text/index.js 13.9 kB 0 B
build/server-side-render/index.js 2.71 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.27 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

@dratwas dratwas marked this pull request as ready for review August 3, 2020 14:25
@dratwas
Copy link
Contributor Author

dratwas commented Aug 7, 2020

Hey @mchowning could you please review and test it? 🙏 Asking you since you have a lot of context on autosave part :)

Copy link
Contributor

@mchowning mchowning left a comment

Choose a reason for hiding this comment

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

This is working well for me. 👍 Nice job @dratwas !

Just noting that it is possible to make changes and very quickly publish a post in a way that loses the most very recent changes (changes that occurred in the last 0.5 seconds before publishing), but this is due to the native code on Android and not because of this PR. In addition, it is quite hard to make this happen.

@dratwas dratwas changed the title [RNMobile] create undo level less frequently Rich Text autosave [RNMobile] create undo level less frequently Aug 11, 2020
@dratwas dratwas merged commit 90b5cda into master Aug 11, 2020
@dratwas dratwas deleted the rnmobile/rich-text-autosave branch August 11, 2020 10:32
@github-actions github-actions bot added this to the Gutenberg 8.8 milestone Aug 11, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants