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

(fix) Remove uses of externalModuleName in styleguide components #1125

Closed
wants to merge 1 commit into from

Conversation

denniskigen
Copy link
Member

@denniskigen denniskigen commented Aug 27, 2024

Requirements

  • This PR has a title that briefly describes the work done including the ticket number. Ensure your PR title includes a conventional commit label (such as feat, fix, or chore, among others). See existing PR titles for inspiration.

For changes to apps

If applicable

  • My work includes tests or is validated by existing tests.
  • I have updated the esm-framework mock to reflect any API changes I have made.

Summary

This PR removes uses of externalModuleName from two components in the styleguide. AFAIK, externalModuleName is used when you want to load a config schema from a separate frontend module into another. In this case, both components are colocated within the style guide and reference the style guide config schema, so there's no need to use externalModuleName. Unrelatedly, this exposed an issue with the useConfig stub in the framework mock (which is responsible for the failing tests from this refactor in Patient Management). The stub does not correctly handle externalModuleName and fails silently in the test environment when the component under test leverages externalModuleName.

Screenshots

Related Issue

Other

@denniskigen
Copy link
Member Author

FYI @Twiineenock

Copy link
Contributor

Size Change: -80.7 kB (-1.43%)

Total Size: 5.57 MB

Filename Size Change
packages/shell/esm-app-shell/dist/93b2b763bc30a720.js 0 B -59.3 kB (removed) 🏆
packages/shell/esm-app-shell/dist/openmrs.f8312fa6ff27c273.js 0 B -21.4 kB (removed) 🏆
ℹ️ View Unchanged
Filename Size Change
packages/apps/esm-devtools-app/dist/593.js 149 kB 0 B
packages/apps/esm-devtools-app/dist/642.js 21.1 kB 0 B
packages/apps/esm-devtools-app/dist/657.js 7.02 kB 0 B
packages/apps/esm-devtools-app/dist/735.js 2.63 kB 0 B
packages/apps/esm-devtools-app/dist/762.js 4.1 kB 0 B
packages/apps/esm-devtools-app/dist/788.js 42.9 kB 0 B
packages/apps/esm-devtools-app/dist/875.js 11.6 kB 0 B
packages/apps/esm-devtools-app/dist/889.js 306 kB 0 B
packages/apps/esm-devtools-app/dist/988.js 326 B 0 B
packages/apps/esm-devtools-app/dist/main.js 3.22 kB 0 B
packages/apps/esm-devtools-app/dist/openmrs-esm-devtools-app.js 3.28 kB 0 B
packages/apps/esm-help-menu-app/dist/167.js 1.07 kB 0 B
packages/apps/esm-help-menu-app/dist/248.js 7.07 kB 0 B
packages/apps/esm-help-menu-app/dist/611.js 2.45 kB 0 B
packages/apps/esm-help-menu-app/dist/642.js 21.1 kB 0 B
packages/apps/esm-help-menu-app/dist/657.js 7.02 kB 0 B
packages/apps/esm-help-menu-app/dist/662.js 147 kB 0 B
packages/apps/esm-help-menu-app/dist/735.js 2.63 kB 0 B
packages/apps/esm-help-menu-app/dist/788.js 42.9 kB 0 B
packages/apps/esm-help-menu-app/dist/889.js 306 kB 0 B
packages/apps/esm-help-menu-app/dist/958.js 3.74 kB 0 B
packages/apps/esm-help-menu-app/dist/main.js 8.56 kB 0 B
packages/apps/esm-help-menu-app/dist/openmrs-esm-help-menu-app.js 3.23 kB 0 B
packages/apps/esm-implementer-tools-app/dist/271.js 723 B 0 B
packages/apps/esm-implementer-tools-app/dist/289.js 14.1 kB 0 B
packages/apps/esm-implementer-tools-app/dist/319.js 639 B 0 B
packages/apps/esm-implementer-tools-app/dist/336.js 137 kB 0 B
packages/apps/esm-implementer-tools-app/dist/36.js 2.49 kB 0 B
packages/apps/esm-implementer-tools-app/dist/426.js 27.8 kB 0 B
packages/apps/esm-implementer-tools-app/dist/441.js 4.38 kB 0 B
packages/apps/esm-implementer-tools-app/dist/448.js 4.66 kB 0 B
packages/apps/esm-implementer-tools-app/dist/460.js 748 B 0 B
packages/apps/esm-implementer-tools-app/dist/491.js 134 kB 0 B
packages/apps/esm-implementer-tools-app/dist/574.js 584 B 0 B
packages/apps/esm-implementer-tools-app/dist/587.js 2.93 kB 0 B
packages/apps/esm-implementer-tools-app/dist/625.js 564 B 0 B
packages/apps/esm-implementer-tools-app/dist/642.js 21.1 kB 0 B
packages/apps/esm-implementer-tools-app/dist/644.js 723 B 0 B
packages/apps/esm-implementer-tools-app/dist/657.js 7.03 kB 0 B
packages/apps/esm-implementer-tools-app/dist/667.js 121 kB 0 B
packages/apps/esm-implementer-tools-app/dist/735.js 2.63 kB 0 B
packages/apps/esm-implementer-tools-app/dist/757.js 563 B 0 B
packages/apps/esm-implementer-tools-app/dist/788.js 42.9 kB 0 B
packages/apps/esm-implementer-tools-app/dist/807.js 562 B 0 B
packages/apps/esm-implementer-tools-app/dist/833.js 691 B 0 B
packages/apps/esm-implementer-tools-app/dist/845.js 6.43 kB 0 B
packages/apps/esm-implementer-tools-app/dist/859.js 3.09 kB 0 B
packages/apps/esm-implementer-tools-app/dist/873.js 3.46 kB 0 B
packages/apps/esm-implementer-tools-app/dist/889.js 306 kB 0 B
packages/apps/esm-implementer-tools-app/dist/main.js 20.8 kB 0 B
packages/apps/esm-implementer-tools-app/dist/openmrs-esm-implementer-tools-app.js 3.39 kB 0 B
packages/apps/esm-login-app/dist/202.js 2.57 kB 0 B
packages/apps/esm-login-app/dist/236.js 272 B 0 B
packages/apps/esm-login-app/dist/240.js 366 B 0 B
packages/apps/esm-login-app/dist/271.js 962 B 0 B
packages/apps/esm-login-app/dist/272.js 266 B 0 B
packages/apps/esm-login-app/dist/319.js 879 B 0 B
packages/apps/esm-login-app/dist/336.js 233 B 0 B
packages/apps/esm-login-app/dist/415.js 26.7 kB 0 B
packages/apps/esm-login-app/dist/460.js 967 B 0 B
packages/apps/esm-login-app/dist/539.js 300 B 0 B
packages/apps/esm-login-app/dist/574.js 687 B 0 B
packages/apps/esm-login-app/dist/593.js 149 kB 0 B
packages/apps/esm-login-app/dist/625.js 762 B 0 B
packages/apps/esm-login-app/dist/63.js 16.5 kB 0 B
packages/apps/esm-login-app/dist/642.js 21.1 kB 0 B
packages/apps/esm-login-app/dist/644.js 962 B 0 B
packages/apps/esm-login-app/dist/657.js 7.02 kB 0 B
packages/apps/esm-login-app/dist/673.js 286 B 0 B
packages/apps/esm-login-app/dist/676.js 2.23 kB 0 B
packages/apps/esm-login-app/dist/7.js 3.03 kB 0 B
packages/apps/esm-login-app/dist/735.js 2.62 kB 0 B
packages/apps/esm-login-app/dist/755.js 3.36 kB 0 B
packages/apps/esm-login-app/dist/757.js 908 B 0 B
packages/apps/esm-login-app/dist/788.js 42.9 kB 0 B
packages/apps/esm-login-app/dist/80.js 30.6 kB 0 B
packages/apps/esm-login-app/dist/807.js 1.13 kB 0 B
packages/apps/esm-login-app/dist/833.js 902 B 0 B
packages/apps/esm-login-app/dist/859.js 3.08 kB 0 B
packages/apps/esm-login-app/dist/889.js 306 kB 0 B
packages/apps/esm-login-app/dist/93.js 2.04 kB 0 B
packages/apps/esm-login-app/dist/main.js 58.9 kB 0 B
packages/apps/esm-login-app/dist/openmrs-esm-login-app.js 3.46 kB 0 B
packages/apps/esm-offline-tools-app/dist/271.js 1.19 kB 0 B
packages/apps/esm-offline-tools-app/dist/319.js 1.13 kB 0 B
packages/apps/esm-offline-tools-app/dist/460.js 1.3 kB 0 B
packages/apps/esm-offline-tools-app/dist/574.js 1.03 kB 0 B
packages/apps/esm-offline-tools-app/dist/601.js 142 kB 0 B
packages/apps/esm-offline-tools-app/dist/625.js 1.03 kB 0 B
packages/apps/esm-offline-tools-app/dist/63.js 16.5 kB 0 B
packages/apps/esm-offline-tools-app/dist/642.js 21.1 kB 0 B
packages/apps/esm-offline-tools-app/dist/644.js 1.19 kB 0 B
packages/apps/esm-offline-tools-app/dist/645.js 91.4 kB 0 B
packages/apps/esm-offline-tools-app/dist/657.js 7.02 kB 0 B
packages/apps/esm-offline-tools-app/dist/703.js 6.32 kB 0 B
packages/apps/esm-offline-tools-app/dist/735.js 2.63 kB 0 B
packages/apps/esm-offline-tools-app/dist/757.js 1.19 kB 0 B
packages/apps/esm-offline-tools-app/dist/788.js 42.9 kB 0 B
packages/apps/esm-offline-tools-app/dist/807.js 1.1 kB 0 B
packages/apps/esm-offline-tools-app/dist/833.js 1.21 kB 0 B
packages/apps/esm-offline-tools-app/dist/859.js 3.09 kB 0 B
packages/apps/esm-offline-tools-app/dist/889.js 306 kB 0 B
packages/apps/esm-offline-tools-app/dist/947.js 8.66 kB 0 B
packages/apps/esm-offline-tools-app/dist/main.js 107 kB 0 B
packages/apps/esm-offline-tools-app/dist/openmrs-esm-offline-tools-app.js 3.38 kB 0 B
packages/apps/esm-primary-navigation-app/dist/271.js 270 B 0 B
packages/apps/esm-primary-navigation-app/dist/319.js 232 B 0 B
packages/apps/esm-primary-navigation-app/dist/460.js 266 B 0 B
packages/apps/esm-primary-navigation-app/dist/482.js 15.2 kB 0 B
packages/apps/esm-primary-navigation-app/dist/513.js 146 kB 0 B
packages/apps/esm-primary-navigation-app/dist/574.js 231 B 0 B
packages/apps/esm-primary-navigation-app/dist/577.js 7.64 kB 0 B
packages/apps/esm-primary-navigation-app/dist/619.js 6.45 kB 0 B
packages/apps/esm-primary-navigation-app/dist/625.js 231 B 0 B
packages/apps/esm-primary-navigation-app/dist/63.js 16.5 kB 0 B
packages/apps/esm-primary-navigation-app/dist/644.js 270 B 0 B
packages/apps/esm-primary-navigation-app/dist/657.js 7.03 kB 0 B
packages/apps/esm-primary-navigation-app/dist/735.js 2.63 kB 0 B
packages/apps/esm-primary-navigation-app/dist/757.js 237 B 0 B
packages/apps/esm-primary-navigation-app/dist/788.js 42.9 kB 0 B
packages/apps/esm-primary-navigation-app/dist/807.js 291 B 0 B
packages/apps/esm-primary-navigation-app/dist/833.js 258 B 0 B
packages/apps/esm-primary-navigation-app/dist/889.js 306 kB 0 B
packages/apps/esm-primary-navigation-app/dist/933.js 3.63 kB 0 B
packages/apps/esm-primary-navigation-app/dist/958.js 24.3 kB 0 B
packages/apps/esm-primary-navigation-app/dist/main.js 29.8 kB 0 B
packages/apps/esm-primary-navigation-app/dist/openmrs-esm-primary-navigation-app.js 3.38 kB 0 B
packages/framework/esm-api/dist/openmrs-esm-api.js 16.2 kB 0 B
packages/framework/esm-config/dist/openmrs-esm-module-config.js 8.41 kB 0 B
packages/framework/esm-context/dist/openmrs-esm-context.js 1.14 kB 0 B
packages/framework/esm-dynamic-loading/dist/openmrs-esm-dynamic-loading.js 2.89 kB 0 B
packages/framework/esm-error-handling/dist/openmrs-esm-error-handling.js 891 B 0 B
packages/framework/esm-extensions/dist/openmrs-esm-extensions.js 24.6 kB 0 B
packages/framework/esm-feature-flags/dist/openmrs-esm-feature-flags.js 1.66 kB 0 B
packages/framework/esm-framework/dist/278.openmrs-esm-framework.js 14.5 kB 0 B
packages/framework/esm-framework/dist/530.openmrs-esm-framework.js 2.93 kB 0 B
packages/framework/esm-framework/dist/588.openmrs-esm-framework.js 2.15 kB 0 B
packages/framework/esm-framework/dist/619.openmrs-esm-framework.js 6.49 kB 0 B
packages/framework/esm-framework/dist/645.openmrs-esm-framework.js 9.3 kB 0 B
packages/framework/esm-framework/dist/735.openmrs-esm-framework.js 2.65 kB 0 B
packages/framework/esm-framework/dist/746.openmrs-esm-framework.js 6.14 kB 0 B
packages/framework/esm-framework/dist/788.openmrs-esm-framework.js 42.9 kB 0 B
packages/framework/esm-framework/dist/openmrs-esm-framework.js 441 kB -16 B (0%)
packages/framework/esm-globals/dist/openmrs-esm-globals.js 791 B 0 B
packages/framework/esm-navigation/dist/openmrs-esm-navigation.js 9.34 kB 0 B
packages/framework/esm-offline/dist/openmrs-esm-offline.js 34.4 kB 0 B
packages/framework/esm-react-utils/dist/openmrs-esm-react-utils.js 21.4 kB 0 B
packages/framework/esm-routes/dist/openmrs-esm-utils.js 4.67 kB 0 B
packages/framework/esm-state/dist/openmrs-esm-state.js 910 B 0 B
packages/framework/esm-styleguide/dist/openmrs-esm-styleguide.js 135 kB 0 B
packages/framework/esm-translations/dist/openmrs-esm-core-translations.js 1.87 kB 0 B
packages/framework/esm-utils/dist/openmrs-esm-utils.js 45.5 kB 0 B
packages/shell/esm-app-shell/dist/0320f3310a8e6ffd.js 624 B 0 B
packages/shell/esm-app-shell/dist/0e69d9ec4853cfe2.js 958 B 0 B
packages/shell/esm-app-shell/dist/108de29b7c1b7ac8.js 6.99 kB 0 B
packages/shell/esm-app-shell/dist/11ef1677bd02878e.js 5.57 kB 0 B
packages/shell/esm-app-shell/dist/19b0e4a05a2e4596.js 3.52 kB 0 B
packages/shell/esm-app-shell/dist/20ee3ecb5d9c7be1.js 2.58 kB 0 B
packages/shell/esm-app-shell/dist/298c2e1a5addb329.js 39 kB 0 B
packages/shell/esm-app-shell/dist/2b553874176a2d5e.js 912 B 0 B
packages/shell/esm-app-shell/dist/2cc5179a2a17e577.js 911 B 0 B
packages/shell/esm-app-shell/dist/2ddface0d88d7441.js 43 kB 0 B
packages/shell/esm-app-shell/dist/3644c66a25798faa.js 168 kB 0 B
packages/shell/esm-app-shell/dist/39c27dcaf13969ce.js 6.77 kB 0 B
packages/shell/esm-app-shell/dist/3f6a392e89fc74bd.js 59.3 kB 0 B
packages/shell/esm-app-shell/dist/4600ae74dce9320d.js 1.17 kB 0 B
packages/shell/esm-app-shell/dist/47b4569526a565e6.js 3.04 kB 0 B
packages/shell/esm-app-shell/dist/4d55947c2d077956.js 1.19 kB 0 B
packages/shell/esm-app-shell/dist/4ef81ca673948056.js 18.3 kB 0 B
packages/shell/esm-app-shell/dist/5aadd684d60c6888.js 2.23 kB 0 B
packages/shell/esm-app-shell/dist/6ad76e3ec944b8f2.js 6.72 kB 0 B
packages/shell/esm-app-shell/dist/82b941b0585ccaed.js 624 B 0 B
packages/shell/esm-app-shell/dist/85bbfd1b2f124ed9.js 3.33 kB 0 B
packages/shell/esm-app-shell/dist/85d9e1ec051fd113.js 2.84 kB 0 B
packages/shell/esm-app-shell/dist/8711659b05d659a3.js 9.36 kB 0 B
packages/shell/esm-app-shell/dist/8c7c69fc0e32ca48.js 2.6 kB 0 B
packages/shell/esm-app-shell/dist/9306486d6a162aea.js 1.59 kB 0 B
packages/shell/esm-app-shell/dist/9e544f6471561cb4.js 912 B 0 B
packages/shell/esm-app-shell/dist/a05840be5ec988e7.js 1 kB 0 B
packages/shell/esm-app-shell/dist/a0e789646c4db6de.js 15.1 kB 0 B
packages/shell/esm-app-shell/dist/aa1885e087e9167f.js 167 kB 0 B
packages/shell/esm-app-shell/dist/b83e4961d0a5a387.js 934 B 0 B
packages/shell/esm-app-shell/dist/b88532bde74b513a.js 9.41 kB 0 B
packages/shell/esm-app-shell/dist/d7b53090c51a6e8e.js 1.19 kB 0 B
packages/shell/esm-app-shell/dist/dc69812e79e05b45.js 3.08 kB 0 B
packages/shell/esm-app-shell/dist/f3254390a777963b.js 3.23 kB 0 B
packages/shell/esm-app-shell/dist/f74be95a974424f5.js 3.38 kB 0 B
packages/shell/esm-app-shell/dist/openmrs.a98136cc16281713.js 21.4 kB 0 B
packages/shell/esm-app-shell/dist/service-worker.js 46.4 kB 0 B
packages/tooling/openmrs/dist/cli.js 2.96 kB 0 B
packages/tooling/openmrs/dist/commands/assemble.js 3.31 kB 0 B
packages/tooling/openmrs/dist/commands/build.js 1.32 kB 0 B
packages/tooling/openmrs/dist/commands/debug.js 543 B 0 B
packages/tooling/openmrs/dist/commands/develop.js 2.71 kB 0 B
packages/tooling/openmrs/dist/commands/index.js 437 B 0 B
packages/tooling/openmrs/dist/commands/start.js 850 B 0 B
packages/tooling/openmrs/dist/index.js 517 B 0 B
packages/tooling/openmrs/dist/runner.js 640 B 0 B
packages/tooling/openmrs/dist/utils/config.js 726 B 0 B
packages/tooling/openmrs/dist/utils/debugger.js 575 B 0 B
packages/tooling/openmrs/dist/utils/dependencies.js 643 B 0 B
packages/tooling/openmrs/dist/utils/helpers.js 397 B 0 B
packages/tooling/openmrs/dist/utils/importmap.js 3.07 kB 0 B
packages/tooling/openmrs/dist/utils/index.js 443 B 0 B
packages/tooling/openmrs/dist/utils/logger.js 368 B 0 B
packages/tooling/openmrs/dist/utils/npmConfig.js 831 B 0 B
packages/tooling/openmrs/dist/utils/untar.js 725 B 0 B
packages/tooling/openmrs/dist/utils/variables.js 192 B 0 B
packages/tooling/openmrs/dist/utils/webpack.js 278 B 0 B
packages/tooling/webpack-config/dist/index.js 3.61 kB 0 B

compressed-size-action

@denniskigen denniskigen marked this pull request as draft August 27, 2024 13:03
@denniskigen
Copy link
Member Author

denniskigen commented Aug 27, 2024

Ok. This is not as straightforward as I first thought. Frontend modules that reuse the PatientPhoto component from the style guide all load their config schemas by default. We used externalModuleName in the useConfig hook invocation to ensure they loaded the style guide config schema too. This is so we get access to the configurable patientPhotoConceptUuid which is required for image uploads in the registration form. Absent this, this value will be undefined and image uploads will not work. Broadly. there's two solutions here:

  • Maintain the externalModuleName option in the useConfig hook so that the usePatientPhoto hook knows to obtain the patientPhotoConceptUuid property from the styleguide config. The benefit of this approach is that there's one source of truth for patientPhotoConceptUuid and that the concerns are nicely centralized in one place.
  • Redeclare the patientPhotoConceptUuid in the config schemas of all the frontend modules that leverage the PatientPhoto component. This would get things working without externalModuleName, but the disadvantage is that it wouldn't be entirely obvious why we have this config property defined as it won't be used directly in the frontend module where it is defined.

Also, typing that gave me a sense of deja vu, which probably means this was all discussed somewhere in the past. Let me see whether I can look it up.

The other bit of context here is that the goal is to fix the failing tests in Patient Management. A less convoluted path to getting that done would be to update the useConfig stub in the framework mock to handle externalModuleName correctly. If it makes more sense to do that instead of this whole rigamarole, please let me know so I can worry about that instead.

@brandones
Copy link
Collaborator

Maintain the externalModuleName option in the useConfig hook so that the usePatientPhoto hook knows to obtain the patientPhotoConceptUuid property from the styleguide config. The benefit of this approach is that there's one source of truth for patientPhotoConceptUuid and that the concerns are nicely centralized in one place.

Yeah, this is why we did it this way, and how I suggest we keep doing it

@ibacher
Copy link
Member

ibacher commented Aug 27, 2024

The issue with doing away with the externalModuleName is that useConfig() defaults to the context-provided module, which will be whatever extension mounts the styleguide component. So effectively, this won't pick up the actual component (at least not without wrapping it in something like the openmrsComponentDecorator).

We probably should just fix the stub.

@denniskigen
Copy link
Member Author

Closing as discussed in favour of updating the stub. Thanks, guys.

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.

3 participants