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

[Webhooks] Refactor Edit view #16800

Merged
merged 42 commits into from
Jun 5, 2023
Merged

[Webhooks] Refactor Edit view #16800

merged 42 commits into from
Jun 5, 2023

Conversation

jhoward1994
Copy link
Contributor

@jhoward1994 jhoward1994 commented May 22, 2023

What does it do?

Refactor the web-hooks settings page edit view

Why is it needed?

To maintain the components and enable review workflow webhook events

BE review workflows webhooks implementation must be merged first

@jhoward1994 jhoward1994 self-assigned this May 22, 2023
@jhoward1994 jhoward1994 added pr: enhancement This PR adds or updates some part of the codebase or features source: core:admin Source is core/admin package labels May 22, 2023
@github-actions
Copy link
Contributor

github-actions bot commented May 22, 2023

Size Change: +129 B (0%)

Total Size: 1.5 MB

Filename Size Change
packages/core/admin/build/content-manager.********.chunk.js 61.6 kB -86 B (0%)
packages/core/admin/build/en-json.********.chunk.js 15 kB +55 B (0%)
packages/core/admin/build/main.********.js 568 kB -511 B (0%)
packages/core/admin/build/webhook-edit-page.********.chunk.js 7.41 kB +677 B (+10%) ⚠️
ℹ️ View Unchanged
Filename Size Change
packages/core/admin/build/Admin_homePage.********.chunk.js 8.47 kB 0 B
packages/core/admin/build/Admin_InternalErrorPage.********.chunk.js 495 B 0 B
packages/core/admin/build/Admin_marketplace.********.chunk.js 8.33 kB 0 B
packages/core/admin/build/Admin_pluginsPage.********.chunk.js 1.17 kB 0 B
packages/core/admin/build/Admin_profilePage.********.chunk.js 3.05 kB 0 B
packages/core/admin/build/Admin_settingsPage.********.chunk.js 9.25 kB 0 B
packages/core/admin/build/admin-app.********.chunk.js 22.7 kB 0 B
packages/core/admin/build/Admin-authenticatedApp.********.chunk.js 8.26 kB -1 B (0%)
packages/core/admin/build/admin-edit-roles-page.********.chunk.js 15.9 kB 0 B
packages/core/admin/build/admin-edit-users.********.chunk.js 4.09 kB 0 B
packages/core/admin/build/admin-roles-list.********.chunk.js 3.04 kB 0 B
packages/core/admin/build/admin-users.********.chunk.js 6.44 kB 0 B
packages/core/admin/build/api-tokens-create-page.********.chunk.js 232 B 0 B
packages/core/admin/build/api-tokens-edit-page.********.chunk.js 232 B 0 B
packages/core/admin/build/api-tokens-list-page.********.chunk.js 2.78 kB 0 B
packages/core/admin/build/ar-json.********.chunk.js 19.6 kB 0 B
packages/core/admin/build/audit-logs-settings-page.********.chunk.js 6.3 kB -1 B (0%)
packages/core/admin/build/bb3108f7fd1e6179bde1.svg 352 B 0 B
packages/core/admin/build/bb4d0d527bdfb161bc5a.svg 2.33 kB 0 B
packages/core/admin/build/ca-json.********.chunk.js 12.9 kB 0 B
packages/core/admin/build/content-type-builder-list-view.********.chunk.js 7.67 kB 0 B
packages/core/admin/build/content-type-builder-translation-ar-json.********.chunk.js 1.35 kB 0 B
packages/core/admin/build/content-type-builder-translation-cs-json.********.chunk.js 2.88 kB 0 B
packages/core/admin/build/content-type-builder-translation-de-json.********.chunk.js 4.19 kB 0 B
packages/core/admin/build/content-type-builder-translation-dk-json.********.chunk.js 3.75 kB 0 B
packages/core/admin/build/content-type-builder-translation-en-json.********.chunk.js 4.1 kB 0 B
packages/core/admin/build/content-type-builder-translation-es-json.********.chunk.js 3.97 kB 0 B
packages/core/admin/build/content-type-builder-translation-fr-json.********.chunk.js 1.66 kB 0 B
packages/core/admin/build/content-type-builder-translation-id-json.********.chunk.js 3.34 kB 0 B
packages/core/admin/build/content-type-builder-translation-it-json.********.chunk.js 3.47 kB 0 B
packages/core/admin/build/content-type-builder-translation-ja-json.********.chunk.js 1.23 kB 0 B
packages/core/admin/build/content-type-builder-translation-ko-json.********.chunk.js 4.37 kB 0 B
packages/core/admin/build/content-type-builder-translation-ms-json.********.chunk.js 3.28 kB 0 B
packages/core/admin/build/content-type-builder-translation-nl-json.********.chunk.js 3.3 kB 0 B
packages/core/admin/build/content-type-builder-translation-pl-json.********.chunk.js 4.16 kB 0 B
packages/core/admin/build/content-type-builder-translation-pt-BR-json.********.chunk.js 4.17 kB 0 B
packages/core/admin/build/content-type-builder-translation-pt-json.********.chunk.js 1.1 kB 0 B
packages/core/admin/build/content-type-builder-translation-ru-json.********.chunk.js 4.69 kB 0 B
packages/core/admin/build/content-type-builder-translation-sk-json.********.chunk.js 3.74 kB 0 B
packages/core/admin/build/content-type-builder-translation-sv-json.********.chunk.js 4.18 kB 0 B
packages/core/admin/build/content-type-builder-translation-th-json.********.chunk.js 4.36 kB 0 B
packages/core/admin/build/content-type-builder-translation-tr-json.********.chunk.js 3.84 kB 0 B
packages/core/admin/build/content-type-builder-translation-uk-json.********.chunk.js 4.37 kB 0 B
packages/core/admin/build/content-type-builder-translation-zh-Hans-json.********.chunk.js 3.5 kB 0 B
packages/core/admin/build/content-type-builder-translation-zh-json.********.chunk.js 4.5 kB 0 B
packages/core/admin/build/content-type-builder.********.chunk.js 24.7 kB -6 B (0%)
packages/core/admin/build/cs-json.********.chunk.js 5.88 kB 0 B
packages/core/admin/build/de-json.********.chunk.js 12.8 kB 0 B
packages/core/admin/build/dk-json.********.chunk.js 10.5 kB 0 B
packages/core/admin/build/email-settings-page.********.chunk.js 3.6 kB 0 B
packages/core/admin/build/email-translation-ar-json.********.chunk.js 122 B 0 B
packages/core/admin/build/email-translation-cs-json.********.chunk.js 121 B 0 B
packages/core/admin/build/email-translation-de-json.********.chunk.js 120 B 0 B
packages/core/admin/build/email-translation-dk-json.********.chunk.js 616 B 0 B
packages/core/admin/build/email-translation-en-json.********.chunk.js 610 B 0 B
packages/core/admin/build/email-translation-es-json.********.chunk.js 675 B 0 B
packages/core/admin/build/email-translation-fr-json.********.chunk.js 122 B 0 B
packages/core/admin/build/email-translation-id-json.********.chunk.js 122 B 0 B
packages/core/admin/build/email-translation-it-json.********.chunk.js 118 B 0 B
packages/core/admin/build/email-translation-ja-json.********.chunk.js 787 B 0 B
packages/core/admin/build/email-translation-ko-json.********.chunk.js 758 B 0 B
packages/core/admin/build/email-translation-ms-json.********.chunk.js 122 B 0 B
packages/core/admin/build/email-translation-nl-json.********.chunk.js 122 B 0 B
packages/core/admin/build/email-translation-pl-json.********.chunk.js 660 B 0 B
packages/core/admin/build/email-translation-pt-BR-json.********.chunk.js 122 B 0 B
packages/core/admin/build/email-translation-pt-json.********.chunk.js 668 B 0 B
packages/core/admin/build/email-translation-ru-json.********.chunk.js 122 B 0 B
packages/core/admin/build/email-translation-sk-json.********.chunk.js 122 B 0 B
packages/core/admin/build/email-translation-th-json.********.chunk.js 122 B 0 B
packages/core/admin/build/email-translation-tr-json.********.chunk.js 687 B 0 B
packages/core/admin/build/email-translation-uk-json.********.chunk.js 122 B 0 B
packages/core/admin/build/email-translation-vi-json.********.chunk.js 122 B 0 B
packages/core/admin/build/email-translation-zh-Hans-json.********.chunk.js 473 B 0 B
packages/core/admin/build/email-translation-zh-json.********.chunk.js 730 B 0 B
packages/core/admin/build/es-json.********.chunk.js 14 kB 0 B
packages/core/admin/build/eu-json.********.chunk.js 14.1 kB 0 B
packages/core/admin/build/fr-json.********.chunk.js 12.6 kB 0 B
packages/core/admin/build/gu-json.********.chunk.js 14.2 kB 0 B
packages/core/admin/build/he-json.********.chunk.js 6.48 kB 0 B
packages/core/admin/build/hi-json.********.chunk.js 16.3 kB 0 B
packages/core/admin/build/highlight.js.********.chunk.js 842 B 0 B
packages/core/admin/build/hu-json.********.chunk.js 15.4 kB 0 B
packages/core/admin/build/i18n-settings-page.********.chunk.js 6.89 kB 0 B
packages/core/admin/build/i18n-translation-de-json.********.chunk.js 1.62 kB 0 B
packages/core/admin/build/i18n-translation-dk-json.********.chunk.js 1.62 kB 0 B
packages/core/admin/build/i18n-translation-en-json.********.chunk.js 1.55 kB 0 B
packages/core/admin/build/i18n-translation-es-json.********.chunk.js 1.68 kB 0 B
packages/core/admin/build/i18n-translation-fr-json.********.chunk.js 1.73 kB 0 B
packages/core/admin/build/i18n-translation-ko-json.********.chunk.js 1.86 kB 0 B
packages/core/admin/build/i18n-translation-pl-json.********.chunk.js 1.8 kB 0 B
packages/core/admin/build/i18n-translation-ru-json.********.chunk.js 2.3 kB 0 B
packages/core/admin/build/i18n-translation-tr-json.********.chunk.js 1.7 kB 0 B
packages/core/admin/build/i18n-translation-zh-Hans-json.********.chunk.js 1.64 kB 0 B
packages/core/admin/build/i18n-translation-zh-json.********.chunk.js 1.73 kB 0 B
packages/core/admin/build/id-json.********.chunk.js 7.46 kB 0 B
packages/core/admin/build/index.html 263 B +1 B (0%)
packages/core/admin/build/it-json.********.chunk.js 7.93 kB 0 B
packages/core/admin/build/ja-json.********.chunk.js 12.2 kB 0 B
packages/core/admin/build/ko-json.********.chunk.js 11.5 kB 0 B
packages/core/admin/build/ml-json.********.chunk.js 17.2 kB 0 B
packages/core/admin/build/ms-json.********.chunk.js 6.16 kB 0 B
packages/core/admin/build/nl-json.********.chunk.js 14.3 kB 0 B
packages/core/admin/build/no-json.********.chunk.js 5.48 kB 0 B
packages/core/admin/build/pl-json.********.chunk.js 13.1 kB 0 B
packages/core/admin/build/pt-BR-json.********.chunk.js 13.8 kB 0 B
packages/core/admin/build/pt-json.********.chunk.js 5.71 kB 0 B
packages/core/admin/build/review-workflows-settings.********.chunk.js 4.53 kB 0 B
packages/core/admin/build/ru-json.********.chunk.js 21.6 kB 0 B
packages/core/admin/build/runtime~main.********.js 4.78 kB +1 B (0%)
packages/core/admin/build/sa-json.********.chunk.js 16.9 kB 0 B
packages/core/admin/build/sk-json.********.chunk.js 11.8 kB 0 B
packages/core/admin/build/sso-settings-page.********.chunk.js 1.52 kB 0 B
packages/core/admin/build/sv-json.********.chunk.js 14.1 kB 0 B
packages/core/admin/build/th-json.********.chunk.js 9.01 kB 0 B
packages/core/admin/build/tr-json.********.chunk.js 13.7 kB 0 B
packages/core/admin/build/transfer-tokens-create-page.********.chunk.js 237 B 0 B
packages/core/admin/build/transfer-tokens-edit-page.********.chunk.js 236 B 0 B
packages/core/admin/build/transfer-tokens-list-page.********.chunk.js 2.9 kB 0 B
packages/core/admin/build/uk-json.********.chunk.js 7.71 kB 0 B
packages/core/admin/build/Upload_ConfigureTheView.********.chunk.js 1.74 kB 0 B
packages/core/admin/build/upload-settings.********.chunk.js 3.08 kB 0 B
packages/core/admin/build/upload-translation-ca-json.********.chunk.js 2.48 kB 0 B
packages/core/admin/build/upload-translation-de-json.********.chunk.js 2.19 kB 0 B
packages/core/admin/build/upload-translation-dk-json.********.chunk.js 1.96 kB 0 B
packages/core/admin/build/upload-translation-en-json.********.chunk.js 2.58 kB 0 B
packages/core/admin/build/upload-translation-es-json.********.chunk.js 2.45 kB 0 B
packages/core/admin/build/upload-translation-fr-json.********.chunk.js 2.86 kB 0 B
packages/core/admin/build/upload-translation-he-json.********.chunk.js 1.84 kB 0 B
packages/core/admin/build/upload-translation-it-json.********.chunk.js 1.56 kB 0 B
packages/core/admin/build/upload-translation-ja-json.********.chunk.js 1.92 kB 0 B
packages/core/admin/build/upload-translation-ko-json.********.chunk.js 2.5 kB 0 B
packages/core/admin/build/upload-translation-ms-json.********.chunk.js 1.41 kB 0 B
packages/core/admin/build/upload-translation-pl-json.********.chunk.js 2.19 kB 0 B
packages/core/admin/build/upload-translation-pt-BR-json.********.chunk.js 1.61 kB 0 B
packages/core/admin/build/upload-translation-pt-json.********.chunk.js 1.61 kB 0 B
packages/core/admin/build/upload-translation-ru-json.********.chunk.js 2.02 kB 0 B
packages/core/admin/build/upload-translation-sk-json.********.chunk.js 2.58 kB 0 B
packages/core/admin/build/upload-translation-th-json.********.chunk.js 1.99 kB 0 B
packages/core/admin/build/upload-translation-tr-json.********.chunk.js 2.35 kB 0 B
packages/core/admin/build/upload-translation-uk-json.********.chunk.js 1.96 kB 0 B
packages/core/admin/build/upload-translation-zh-Hans-json.********.chunk.js 3.12 kB 0 B
packages/core/admin/build/upload-translation-zh-json.********.chunk.js 2.65 kB 0 B
packages/core/admin/build/upload.********.chunk.js 7.63 kB 0 B
packages/core/admin/build/users-advanced-settings-page.********.chunk.js 3.42 kB 0 B
packages/core/admin/build/users-email-settings-page.********.chunk.js 3.78 kB 0 B
packages/core/admin/build/users-permissions-translation-ar-json.********.chunk.js 1.51 kB 0 B
packages/core/admin/build/users-permissions-translation-cs-json.********.chunk.js 1.46 kB 0 B
packages/core/admin/build/users-permissions-translation-de-json.********.chunk.js 1.58 kB 0 B
packages/core/admin/build/users-permissions-translation-dk-json.********.chunk.js 1.92 kB 0 B
packages/core/admin/build/users-permissions-translation-en-json.********.chunk.js 1.81 kB 0 B
packages/core/admin/build/users-permissions-translation-es-json.********.chunk.js 2.05 kB 0 B
packages/core/admin/build/users-permissions-translation-fr-json.********.chunk.js 1.41 kB 0 B
packages/core/admin/build/users-permissions-translation-id-json.********.chunk.js 1.49 kB 0 B
packages/core/admin/build/users-permissions-translation-it-json.********.chunk.js 1.57 kB 0 B
packages/core/admin/build/users-permissions-translation-ja-json.********.chunk.js 1.53 kB 0 B
packages/core/admin/build/users-permissions-translation-ko-json.********.chunk.js 2.23 kB 0 B
packages/core/admin/build/users-permissions-translation-ms-json.********.chunk.js 1.27 kB 0 B
packages/core/admin/build/users-permissions-translation-nl-json.********.chunk.js 1.32 kB 0 B
packages/core/admin/build/users-permissions-translation-pl-json.********.chunk.js 2.11 kB 0 B
packages/core/admin/build/users-permissions-translation-pt-BR-json.********.chunk.js 1.21 kB 0 B
packages/core/admin/build/users-permissions-translation-pt-json.********.chunk.js 1.3 kB 0 B
packages/core/admin/build/users-permissions-translation-ru-json.********.chunk.js 2.75 kB 0 B
packages/core/admin/build/users-permissions-translation-sk-json.********.chunk.js 1.38 kB 0 B
packages/core/admin/build/users-permissions-translation-sv-json.********.chunk.js 2.01 kB 0 B
packages/core/admin/build/users-permissions-translation-th-json.********.chunk.js 2.01 kB 0 B
packages/core/admin/build/users-permissions-translation-tr-json.********.chunk.js 2.07 kB 0 B
packages/core/admin/build/users-permissions-translation-uk-json.********.chunk.js 1.75 kB 0 B
packages/core/admin/build/users-permissions-translation-vi-json.********.chunk.js 1.51 kB 0 B
packages/core/admin/build/users-permissions-translation-zh-Hans-json.********.chunk.js 2.19 kB 0 B
packages/core/admin/build/users-permissions-translation-zh-json.********.chunk.js 2.1 kB 0 B
packages/core/admin/build/users-providers-settings-page.********.chunk.js 5.72 kB 0 B
packages/core/admin/build/users-roles-settings-page.********.chunk.js 7.37 kB 0 B
packages/core/admin/build/vi-json.********.chunk.js 5.98 kB 0 B
packages/core/admin/build/webhook-list-page.********.chunk.js 3.11 kB 0 B
packages/core/admin/build/zh-Hans-json.********.chunk.js 17.2 kB 0 B
packages/core/admin/build/zh-json.********.chunk.js 15.1 kB 0 B
packages/core/helper-plugin/build/helper-plugin.esm.js 24.3 kB 0 B
packages/core/helper-plugin/build/helper-plugin.js 22.1 kB 0 B

compressed-size-action

return acc;
}, {});

const StyledTable = styled.table`
Copy link
Contributor

Choose a reason for hiding this comment

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

Why do we need a custom table here?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Do you think we should be using the Table or RawTable from the DS?

Copy link
Contributor

@gu-stav gu-stav May 24, 2023

Choose a reason for hiding this comment

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

If it is possible - yes definitely. In case something is missing we could check if we can add it to the DS. I'd say in the CMS consistency wins in a case like this.

There is also a Table component in the helper-plugin that already has even more defaults.

@jhoward1994 jhoward1994 added the flag: don't merge This PR should not be merged at the moment label May 24, 2023
Copy link
Member

@joshuaellis joshuaellis left a comment

Choose a reason for hiding this comment

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

Shaping up really nicely, left some thoughts in line 👍🏼

@jhoward1994 jhoward1994 marked this pull request as ready for review May 31, 2023 14:04
@gu-stav gu-stav self-requested a review May 31, 2023 14:50
@jhoward1994 jhoward1994 removed the flag: don't merge This PR should not be merged at the moment label Jun 2, 2023
Copy link
Contributor

@gu-stav gu-stav left a comment

Choose a reason for hiding this comment

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

Some QA feedback:

  • I'm not able to remove the last header. Is this on purpose? If so, IMO we should disable / hide (to check with Maeva) remove button. cc @maevalienard

  • Adding multiple headers: (This was caused by potentially duplicate keys for the header inputs)

  1. Click "Add new header" 3 times, but don't fill in values
  2. Click to the second to the last combobox and select a header
  3. Now 4 headers have been added and the combobox did not close
  • Review workflow "stage change" events throw a validation error
Screenshot 2023-06-02 at 12 26 14

Comment on lines 15 to 17
jest.mock('../../../../../../../../hooks', () => ({
useThemeToggle: jest.fn(() => ({ currentTheme: 'light', themes: { light: lightTheme } })),
}));
Copy link
Contributor

Choose a reason for hiding this comment

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

I believe you can also get rid of this, if you wrap the test below into ThemeProvider instead of ThemeToggleProvider?

Copy link
Contributor

Choose a reason for hiding this comment

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

Do you still need the mock now that ThemeToggleProvider is gone?

Copy link
Contributor

@gu-stav gu-stav left a comment

Choose a reason for hiding this comment

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

More QA:

  • When I change something in the edit-view, go to the list view and immediately back to the webook edit view the changes are not displayed; have to reload the page to see them.

Other than that I couldn't really find anything. I'm gonna use the opportunity to say: great work! I think this looks much better than before and it's great to see how easy it will become to extend the view. The pattern can probably be improved a bit further, but it's a great first step!

Comment on lines 15 to 17
jest.mock('../../../../../../../../hooks', () => ({
useThemeToggle: jest.fn(() => ({ currentTheme: 'light', themes: { light: lightTheme } })),
}));
Copy link
Contributor

Choose a reason for hiding this comment

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

Do you still need the mock now that ThemeToggleProvider is gone?

Comment on lines +95 to +99
const getStoredPrivateAttributes = (model) =>
union(
strapi?.config?.get('api.responses.privateAttributes', []) ?? [],
getOr([], 'options.privateAttributes', model)
);
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 what happened here? Eslint?

return (
<>
<EventTable.Headers isDraftAndPublish={isDraftAndPublish} />
<EventTable.Body isDraftAndPublish={isDraftAndPublish} extraEvents={events} />
Copy link
Contributor

Choose a reason for hiding this comment

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

I think we can improve this further (maybe discuss it with Josh next week), but I think to get this merged it is ok for now.

Comment on lines 9 to 14
renderChildren={({ isDraftAndPublish }) => (
<>
<EventTable.Headers isDraftAndPublish={isDraftAndPublish} />
<EventTable.Body isDraftAndPublish={isDraftAndPublish} />
</>
)}
Copy link
Member

Choose a reason for hiding this comment

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

This API is a bit odd for me imo, firstly, it'd be good to understand why we've opted for a render children pattern as opposed to using Context? Secondly, is there a reason children couldn't just be used as a function?

<EventTable.Root>
	{(props) => <Children {...props} />}
</EventTable.Root>

@jhoward1994 jhoward1994 added this to the 4.11.0 milestone Jun 5, 2023
@jhoward1994 jhoward1994 merged commit 9b56e4f into main Jun 5, 2023
55 checks passed
@jhoward1994 jhoward1994 deleted the webhooks/edit-view branch June 5, 2023 15:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
pr: enhancement This PR adds or updates some part of the codebase or features source: core:admin Source is core/admin package
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants