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] Unify HTML in SocialIcons #24306

Merged
merged 6 commits into from
Aug 7, 2020

Conversation

lukewalczak
Copy link
Member

@lukewalczak lukewalczak commented Jul 31, 2020

Description

According to the discussion that PR reverts changes in parser to unify generate HTML code.

How has this been tested?

Please follow Social Icon test cases:

Social Icons - 1

  • The newly created Social Icons block is added with 4 icons - steps
  • Active icon gets product color - steps
  • Only active icons are visible when not selected - steps

Social Icons - 2

  • The link sheet is opened automatically when adding new icon - steps
  • Ghost placeholder is visible when no icon is active - steps
  • Social icon forwarding to the link - steps

Screenshots

new backward compatibility

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.

@lukewalczak lukewalczak added Mobile App - i.e. Android or iOS Native mobile impl of the block editor. (Note: used in scripts, ping mobile folks to change) [Block] Social Affects the Social Block - used to display Social Media accounts labels Jul 31, 2020
@lukewalczak lukewalczak self-assigned this Jul 31, 2020
@lukewalczak lukewalczak requested a review from mcsf July 31, 2020 09:26
@github-actions
Copy link

github-actions bot commented Jul 31, 2020

Size Change: +88 B (0%)

Total Size: 1.16 MB

Filename Size Change
build/block-editor/index.js 125 kB +104 B (0%)
build/block-editor/style-rtl.css 10.8 kB +8 B (0%)
build/block-editor/style.css 10.8 kB +6 B (0%)
build/block-library/editor-rtl.css 7.59 kB -5 B (0%)
build/block-library/editor.css 7.59 kB -5 B (0%)
build/blocks/index.js 48.2 kB -20 B (0%)
ℹ️ 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-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 728 B 0 B
build/block-library/theme.css 729 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/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.61 kB 0 B
build/edit-post/style.css 5.61 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

@lukewalczak lukewalczak requested a review from dratwas July 31, 2020 09:48
@lukewalczak lukewalczak mentioned this pull request Jul 31, 2020
6 tasks
Comment on lines 77 to 79
return () => {
updateSocialIconName( false );
};
Copy link
Contributor

Choose a reason for hiding this comment

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

Copy link
Member Author

@lukewalczak lukewalczak Aug 3, 2020

Choose a reason for hiding this comment

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

  • What happens when the post is saved while the social icon is being edited?

Works properly

Good catch, there is an undo trap :( Do you have any suggestion how to avoid that?

Copy link
Member Author

@lukewalczak lukewalczak Aug 4, 2020

Choose a reason for hiding this comment

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

Basically I need to have full social icon name e.g.: core/social-link-wordpress, so I have one more idea to extend selector getBlockName to return name with service for native platforms:

export function getBlockName( state, clientId ) {
	const block = state.blocks.byClientId[ clientId ];

	if ( Platform.OS !== 'web' && block?.name === 'core/social-link' ) {
		const attributes = state.blocks.attributes[ clientId ];
		const { service } = attributes;

		return service ? `core/social-link-${ service }` : block.name;
	}
	return block ? block.name : null;
}

wdyt?

Copy link
Contributor

Choose a reason for hiding this comment

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

Good catch, there is an undo trap :( Do you have any suggestion how to avoid that?

In general, it's a strong anti-pattern to trigger an attribute change that isn't a direct consequence of a user interaction. For example: the user types a letter, it updates the content attribute; the user checks "Enable drop cap", that toggles dropCap; etc. These are all clean scenarios that don't affect the ability to undo.

The undo trap issues always arise from automated attribute setting. For example: while a Gallery block is loading with partial attributes (e.g. { images: [ { id: 42 } ] }, it calls getMedia to get more data, and automatically updates the attributes once the request resolves ({ images: [ { id: 42, src: '...', alt: '...' } ] }). The present case with Social Icons is identical, but without even a request.

In all these cases, there's a call to setAttributes that arises not from an event (e.g. user input), but — directly or indirectly — from a state:

  • Directly: state is blockName === 'core/social-link' -> call setState
  • Indirectly: state is missing image data -> make REST API request -> call setState

so I have one more idea to extend selector getBlockName to return name with service for native platforms

Yeah, that might work, as long as there is never a change to attributes (e.g. to touch service). And, naturally, with the understanding that this is a patch until you can confidently let the mobile editor handle variations of core/social-link naturally. :)

@lukewalczak lukewalczak requested a review from mcsf August 5, 2020 13:11
Copy link
Contributor

@dratwas dratwas left a comment

Choose a reason for hiding this comment

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

It works as expected but could you please create an issue to investigate if we could handle the social icon variations better?

Copy link
Contributor

@mcsf mcsf left a comment

Choose a reason for hiding this comment

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

Thanks for addressing this.

@lukewalczak lukewalczak merged commit 1179200 into master Aug 7, 2020
@lukewalczak lukewalczak deleted the rnmobile/unify-html-social-icons branch August 7, 2020 12:19
@github-actions github-actions bot added this to the Gutenberg 8.8 milestone Aug 7, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Social Affects the Social Block - used to display Social Media accounts Mobile App - i.e. Android or iOS Native mobile impl of the block editor. (Note: used in scripts, ping mobile folks to change)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants