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

[Mobile] Generate static data to be used to develop Modal Layout picker #24027

Merged
merged 5 commits into from
Jul 27, 2020

Conversation

chipsnyder
Copy link
Contributor

@chipsnyder chipsnyder commented Jul 17, 2020

Partially Fixes: wordpress-mobile/gutenberg-mobile#2455

Description

Exposes static data for creating the modal layout picker for Gutenberg Mobile. The goal of placing it in the Gutenberg library was in hopes of creating a mechanism down the road where the layout can be defined once and then used to generate a file for iOS and Android.

The Preview images used below were picked to align with what would be returned by sites that use WPCOM endpoints.

How has this been tested?

This is not independently testable at this point but will be testable in WPiOS as the layout picker is developed.

Screenshots

Types of changes

New feature

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.

@chipsnyder chipsnyder added the Mobile App - i.e. Android or iOS Native mobile impl of the block editor. (Note: used in scripts, ping mobile folks to change) label Jul 17, 2020
@chipsnyder chipsnyder changed the title Mobile/issue/2455 layout data [Mobile] Generate static data to be used to develop Modal Layout picker Jul 17, 2020
@github-actions
Copy link

Size Change: 0 B

Total Size: 1.15 MB

ℹ️ View Unchanged
Filename Size Change
build/a11y/index.min.js 1.14 kB 0 B
build/annotations/index.min.js 3.67 kB 0 B
build/api-fetch/index.min.js 3.43 kB 0 B
build/autop/index.min.js 2.82 kB 0 B
build/blob/index.min.js 620 B 0 B
build/block-directory/index.min.js 7.63 kB 0 B
build/block-directory/style-rtl.css 944 B 0 B
build/block-directory/style.css 945 B 0 B
build/block-editor/index.min.js 125 kB 0 B
build/block-editor/style-rtl.css 10.8 kB 0 B
build/block-editor/style.css 10.8 kB 0 B
build/block-library/editor-rtl.css 7.58 kB 0 B
build/block-library/editor.css 7.57 kB 0 B
build/block-library/index.min.js 132 kB 0 B
build/block-library/style-rtl.css 7.77 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.min.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.min.js 3.1 kB 0 B
build/blocks/index.min.js 48.3 kB 0 B
build/components/index.min.js 200 kB 0 B
build/components/style-rtl.css 15.6 kB 0 B
build/components/style.css 15.6 kB 0 B
build/compose/index.min.js 9.67 kB 0 B
build/core-data/index.min.js 11.5 kB 0 B
build/data-controls/index.min.js 1.29 kB 0 B
build/data/index.min.js 8.45 kB 0 B
build/date/index.min.js 5.38 kB 0 B
build/deprecated/index.min.js 772 B 0 B
build/dom-ready/index.min.js 568 B 0 B
build/dom/index.min.js 3.23 kB 0 B
build/edit-navigation/index.min.js 10.8 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.min.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.min.js 16.8 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.min.js 9.35 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.min.js 45.3 kB 0 B
build/editor/style-rtl.css 3.78 kB 0 B
build/editor/style.css 3.78 kB 0 B
build/element/index.min.js 4.65 kB 0 B
build/escape-html/index.min.js 733 B 0 B
build/format-library/index.min.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.min.js 2.13 kB 0 B
build/html-entities/index.min.js 621 B 0 B
build/i18n/index.min.js 3.56 kB 0 B
build/is-shallow-equal/index.min.js 711 B 0 B
build/keyboard-shortcuts/index.min.js 2.51 kB 0 B
build/keycodes/index.min.js 1.94 kB 0 B
build/list-reusable-blocks/index.min.js 3.12 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.min.js 5.32 kB 0 B
build/notices/index.min.js 1.79 kB 0 B
build/nux/index.min.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.min.js 2.56 kB 0 B
build/primitives/index.min.js 1.4 kB 0 B
build/priority-queue/index.min.js 789 B 0 B
build/redux-routine/index.min.js 2.85 kB 0 B
build/rich-text/index.min.js 13.9 kB 0 B
build/server-side-render/index.min.js 2.71 kB 0 B
build/shortcode/index.min.js 1.7 kB 0 B
build/token-list/index.min.js 1.27 kB 0 B
build/url/index.min.js 4.06 kB 0 B
build/viewport/index.min.js 1.85 kB 0 B
build/warning/index.min.js 1.14 kB 0 B
build/wordcount/index.min.js 1.17 kB 0 B

compressed-size-action

@chipsnyder chipsnyder added this to the Future milestone Jul 23, 2020
@chipsnyder chipsnyder marked this pull request as ready for review July 23, 2020 21:04
@chipsnyder chipsnyder requested review from pinarol and antonis July 23, 2020 21:05
Copy link
Member

@antonis antonis left a comment

Choose a reason for hiding this comment

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

LGTM!

Copy link
Contributor

@pinarol pinarol left a comment

Choose a reason for hiding this comment

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

Not sure how to test this atm so I am just focusing on code and leaving small questions.

public let slug: String
public let title: String
public let preview: String
public let categories: [GutenbergLayoutCategory]
Copy link
Contributor

Choose a reason for hiding this comment

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

Not sure why this is an array 🤔 Are we aware of any use case where a layout appears under different categories?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'm not sure if we would expect multiple categories for a layout or not. My goal with the structs GutenbergPageLayouts, GutenbergLayout, and GutenbergLayoutCategory was to mirror the syntax of the response that comes from the API to make parsing those a bit easier and to prevent having one struct for the API and another for the UI.

Otherwise we'll need to search in GutenbergLayout instances to get layouts for a specific category.

To prevent having to do this I added groupedLayouts to so that we only need to organize the layouts into categories once. Since it's a small n I figured there wouldn't be a noticeable performance hit.

Sample API Response
{
    "layouts": [
        {
            "slug": "about-2",
            "title": "About",
            "content": "...",
            "categories": [
                {
                    "slug": "about",
                    "title": "About",
                    "description": "About pages",
                    "emoji": "👋"
                }
            ],
            "preview": "https://headstartdata.files.wordpress.com/2020/01/about-2.png?w=200&zoom=1"
        },
        ...
    ],
    "categories": [
        {
            "slug": "about",
            "title": "About",
            "description": "About pages",
            "emoji": "👋"
        }
        ...
    ]
}

Copy link
Contributor

Choose a reason for hiding this comment

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

mirror the syntax of the response that comes from the API

OK thanks, LGTM then!

public let slug: String
public let title: String
public let description: String
public let emoji: String
Copy link
Contributor

Choose a reason for hiding this comment

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

Just thinking out loud, would it not be simpler if we had array of GutenbergLayout here instead? Otherwise we'll need to search in GutenbergLayout instances to get layouts for a specific category.

@chipsnyder chipsnyder merged commit 1d538c1 into master Jul 27, 2020
@chipsnyder chipsnyder deleted the mobile/issue/2455-layoutData branch July 27, 2020 13:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
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.

[Modal Layout Picker] Add support for Self-Hosted sites
3 participants