@localazy/strapi-plugin 0.2.12 → 1.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/_chunks/App-BSFfgZKU.mjs +5278 -0
- package/dist/_chunks/App-D1QaIMHX.js +5278 -0
- package/dist/_chunks/ContentTransferSetup-DHXJIxAp.js +1552 -0
- package/dist/_chunks/ContentTransferSetup-DtjcF_jM.mjs +1550 -0
- package/dist/_chunks/GlobalSettings-BON3kjHK.js +228 -0
- package/dist/_chunks/GlobalSettings-BcdibqNS.mjs +228 -0
- package/dist/_chunks/LanguagesSelector-BeijBEjg.js +47 -0
- package/dist/_chunks/LanguagesSelector-fyAIUp7M.mjs +48 -0
- package/dist/_chunks/en-BTf8goGM.mjs +8 -0
- package/dist/_chunks/en-CRtsEFtl.js +8 -0
- package/dist/_chunks/fr-C8Qw4iPZ.js +4 -0
- package/dist/_chunks/fr-hkSxFuzl.mjs +4 -0
- package/dist/_chunks/has-model-changed-BMCQX2Dd.js +316 -0
- package/dist/_chunks/has-model-changed-Dvtzpc9v.mjs +317 -0
- package/dist/_chunks/index-BQw2qi2G.js +2679 -0
- package/dist/_chunks/index-CN3Gyh5F.mjs +2678 -0
- package/dist/_chunks/isEqual-B-YVnzrp.js +205 -0
- package/dist/_chunks/isEqual-CEyT97-3.mjs +206 -0
- package/dist/_chunks/set-DUdH3vE5.js +54557 -0
- package/dist/_chunks/set-DulHAQhq.mjs +54542 -0
- package/dist/admin/index.js +4 -0
- package/dist/admin/index.mjs +5 -0
- package/dist/admin/src/components/Initializer.d.ts +5 -0
- package/dist/admin/src/config/development/index.d.ts +15 -0
- package/dist/admin/src/config/example/index.example.d.ts +15 -0
- package/dist/admin/src/config/index.d.ts +15 -0
- package/dist/admin/src/config/local/index.d.ts +15 -0
- package/dist/admin/src/config/production/index.d.ts +15 -0
- package/dist/admin/src/i18n.d.ts +2 -0
- package/dist/admin/src/index.d.ts +10 -0
- package/dist/admin/src/modules/@common/api/strapi-api-base.d.ts +6 -0
- package/dist/admin/src/modules/@common/components/Icons/House.d.ts +2 -0
- package/dist/admin/src/modules/@common/components/Icons/Localazy.d.ts +2 -0
- package/dist/admin/src/modules/@common/components/LanguagesSelector.d.ts +11 -0
- package/dist/admin/src/modules/@common/components/PluginPageLoader.d.ts +2 -0
- package/dist/admin/src/modules/@common/components/SideNav.d.ts +2 -0
- package/dist/admin/src/modules/@common/components/TransferReport.d.ts +5 -0
- package/dist/admin/src/modules/@common/functions/flatten-deep.d.ts +2 -0
- package/dist/admin/src/modules/@common/locale/en.d.ts +14 -0
- package/dist/admin/src/modules/@common/models/supported-content-type-fields.d.ts +2 -0
- package/dist/admin/src/modules/@common/models/supported-custom-field-plugins.d.ts +2 -0
- package/dist/admin/src/modules/@common/services/i18n-service.d.ts +3 -0
- package/dist/admin/src/modules/@common/services/plugin.service.d.ts +3 -0
- package/dist/admin/src/modules/@common/services/product-analytics-service.d.ts +14 -0
- package/dist/admin/src/modules/@common/services/project-service.d.ts +4 -0
- package/dist/admin/src/modules/@common/services/user-service.d.ts +5 -0
- package/dist/admin/src/modules/@common/utils/are-locales-compatible.d.ts +2 -0
- package/dist/admin/src/modules/@common/utils/format-number.d.ts +2 -0
- package/dist/admin/src/modules/@common/utils/get-default-locale.d.ts +2 -0
- package/dist/admin/src/modules/@common/utils/history.d.ts +2 -0
- package/dist/admin/src/modules/@common/utils/is-plugin-route.d.ts +2 -0
- package/dist/admin/src/modules/@common/utils/iso-locales-utils.d.ts +3 -0
- package/dist/admin/src/modules/@common/utils/redirect-to-plugin-route.d.ts +13 -0
- package/dist/admin/src/modules/@common/utils/sort-by-model-name.d.ts +2 -0
- package/dist/admin/src/modules/@common/utils/use-header-subtitle.d.ts +2 -0
- package/dist/admin/src/modules/@common/utils/use-header-title.d.ts +2 -0
- package/dist/admin/src/modules/@common/utils/use-nav.d.ts +11 -0
- package/dist/admin/src/modules/alerts/constants/channels.d.ts +1 -0
- package/dist/admin/src/modules/alerts/constants/events.d.ts +4 -0
- package/dist/admin/src/modules/alerts/services/alerts-service.d.ts +8 -0
- package/dist/admin/src/modules/localazy-download/locale/en.d.ts +24 -0
- package/dist/admin/src/modules/localazy-download/services/download-alerts-service.d.ts +5 -0
- package/dist/admin/src/modules/localazy-download/services/localazy-download-service.d.ts +3 -0
- package/dist/admin/src/modules/localazy-upload/components/ReadDocsButton.d.ts +3 -0
- package/dist/admin/src/modules/localazy-upload/locale/en.d.ts +19 -0
- package/dist/admin/src/modules/localazy-upload/services/localazy-upload-service.d.ts +3 -0
- package/dist/admin/src/modules/localazy-upload/services/upload-alerts-service.d.ts +5 -0
- package/dist/admin/src/modules/login/components/FetchIdentity.d.ts +3 -0
- package/dist/admin/src/modules/login/components/LoginButton.d.ts +12 -0
- package/dist/admin/src/modules/login/components/LogoutButton.d.ts +6 -0
- package/dist/admin/src/modules/login/locale/en.d.ts +8 -0
- package/dist/admin/src/modules/login/services/localazy-login-service.d.ts +4 -0
- package/dist/admin/src/modules/overview/components/OverviewItem.d.ts +7 -0
- package/dist/admin/src/modules/overview/components/OverviewItemLink.d.ts +7 -0
- package/dist/admin/src/modules/overview/components/PrerequisitiesInfo.d.ts +3 -0
- package/dist/admin/src/modules/overview/locale/en.d.ts +14 -0
- package/dist/admin/src/modules/plugin-settings/components/ContentTransferSetupEmpty.d.ts +2 -0
- package/dist/admin/src/modules/plugin-settings/components/Tree.d.ts +8 -0
- package/dist/admin/src/modules/plugin-settings/components/TreeItem.d.ts +10 -0
- package/dist/admin/src/modules/plugin-settings/functions/build-content-transfer-setup-schema.d.ts +2 -0
- package/dist/admin/src/modules/plugin-settings/functions/get-content-transfer-setup-keys-sets.d.ts +8 -0
- package/dist/admin/src/modules/plugin-settings/functions/has-model-changed.d.ts +6 -0
- package/dist/admin/src/modules/plugin-settings/locale/en.d.ts +49 -0
- package/dist/admin/src/modules/plugin-settings/services/plugin-settings-service.d.ts +6 -0
- package/dist/admin/src/modules/plugin-settings/services/strapi-model-service.d.ts +4 -0
- package/dist/admin/src/modules/plugin-settings/services/strapi-users-service.d.ts +3 -0
- package/dist/admin/src/modules/plugin-settings/utils/array-of-models-to-object.d.ts +2 -0
- package/dist/admin/src/modules/plugin-settings/utils/find-model-value-by-key.d.ts +2 -0
- package/dist/admin/src/modules/plugin-settings/utils/get-filtered-models-schemas.d.ts +7 -0
- package/dist/admin/src/modules/plugin-settings/utils/get-models-tree.d.ts +5 -0
- package/dist/admin/src/modules/strapi/utils/get-default-theme.d.ts +3 -0
- package/dist/admin/src/modules/user/model/localazy-identity.d.ts +15 -0
- package/dist/admin/src/modules/user/services/localazy-user-service.d.ts +6 -0
- package/dist/admin/src/pages/App.d.ts +3 -0
- package/dist/admin/src/pages/ContentTransferSetup.d.ts +4 -0
- package/dist/admin/src/pages/Download.d.ts +7 -0
- package/dist/admin/src/pages/GlobalSettings.d.ts +4 -0
- package/dist/admin/src/pages/HomePage.d.ts +2 -0
- package/dist/admin/src/pages/Login.d.ts +8 -0
- package/dist/admin/src/pages/Overview.d.ts +8 -0
- package/dist/admin/src/pages/Upload.d.ts +7 -0
- package/dist/admin/src/pluginId.d.ts +2 -0
- package/dist/admin/src/plugins/generic-connector-client.d.ts +3 -0
- package/dist/admin/src/state/localazy-identity.d.ts +13 -0
- package/dist/admin/src/utils/getTranslation.d.ts +2 -0
- package/dist/server/index.js +26000 -0
- package/dist/server/index.mjs +25989 -0
- package/dist/server/src/bootstrap.d.ts +5 -0
- package/dist/server/src/config/core/config.d.ts +1 -0
- package/dist/server/src/config/development/index.d.ts +15 -0
- package/dist/server/src/config/example/index.example.d.ts +15 -0
- package/dist/server/src/config/index.d.ts +18 -0
- package/dist/server/src/config/local/index.d.ts +15 -0
- package/dist/server/src/config/production/index.d.ts +15 -0
- package/dist/server/src/constants/channels.d.ts +3 -0
- package/dist/server/src/constants/events.d.ts +6 -0
- package/dist/server/src/content-types/index.d.ts +2 -0
- package/dist/server/src/controllers/index.d.ts +43 -0
- package/dist/server/src/controllers/localazy-auth-controller.d.ts +8 -0
- package/dist/server/src/controllers/localazy-project-controller.d.ts +7 -0
- package/dist/server/src/controllers/localazy-transfer-controller.d.ts +8 -0
- package/dist/server/src/controllers/localazy-user-controller.d.ts +9 -0
- package/dist/server/src/controllers/plugin-settings-controller.d.ts +10 -0
- package/dist/server/src/controllers/strapi-controller.d.ts +10 -0
- package/dist/server/src/core/index.d.ts +71 -0
- package/dist/server/src/db/model/content-transfer-setup.d.ts +4 -0
- package/dist/server/src/db/model/localazy-user.d.ts +17 -0
- package/dist/server/src/db/model/plugin-settings.d.ts +5 -0
- package/dist/server/src/db/model/utils/get-strapi-store.d.ts +26 -0
- package/dist/server/src/destroy.d.ts +5 -0
- package/dist/server/src/functions/should-set-downloaded-property.d.ts +12 -0
- package/dist/server/src/index.d.ts +189 -0
- package/dist/server/src/lifecycles/deep-populate-hook.d.ts +20 -0
- package/dist/server/src/lifecycles/deprecate-event-entry-in-localazy-hook.d.ts +4 -0
- package/dist/server/src/lifecycles/upload-event-entry-to-localazy-hook.d.ts +12 -0
- package/dist/server/src/middlewares/index.d.ts +2 -0
- package/dist/server/src/models/plugin/content-transfer-setup.d.ts +13 -0
- package/dist/server/src/models/strapi/locale.d.ts +8 -0
- package/dist/server/src/policies/index.d.ts +2 -0
- package/dist/server/src/register.d.ts +5 -0
- package/dist/server/src/routes/index.d.ts +25 -0
- package/dist/server/src/routes/localazy-auth-routes.d.ts +9 -0
- package/dist/server/src/routes/localazy-project-routes.d.ts +9 -0
- package/dist/server/src/routes/localazy-transfer-routes.d.ts +9 -0
- package/dist/server/src/routes/localazy-user-routes.d.ts +9 -0
- package/dist/server/src/routes/plugin-settings-routes.d.ts +9 -0
- package/dist/server/src/routes/strapi-routes.d.ts +9 -0
- package/dist/server/src/services/helpers/job-notification-service.d.ts +14 -0
- package/dist/server/src/services/helpers/plugin-settings-service-helper.d.ts +16 -0
- package/dist/server/src/services/index.d.ts +92 -0
- package/dist/server/src/services/localazy-pubapi-service.d.ts +12 -0
- package/dist/server/src/services/localazy-transfer-download-service.d.ts +11 -0
- package/dist/server/src/services/localazy-transfer-upload-service.d.ts +11 -0
- package/dist/server/src/services/localazy-upload-service.d.ts +28 -0
- package/dist/server/src/services/localazy-user-service.d.ts +11 -0
- package/dist/server/src/services/plugin-settings-service.d.ts +16 -0
- package/dist/server/src/services/strapi-i18n-service.d.ts +19 -0
- package/dist/server/src/services/strapi-localazy-i18n-service.d.ts +9 -0
- package/dist/server/src/services/strapi-service.d.ts +10 -0
- package/dist/server/src/utils/delay.d.ts +1 -0
- package/dist/server/src/utils/drop-property-deep.d.ts +1 -0
- package/dist/server/src/utils/flatten-object.d.ts +2 -0
- package/dist/server/src/utils/generate-random-id.d.ts +2 -0
- package/dist/server/src/utils/get-full-populate-localazy-download-object.d.ts +17 -0
- package/dist/server/src/utils/get-full-populate-localazy-upload-object.d.ts +9 -0
- package/dist/server/src/utils/get-full-populate-object.d.ts +17 -0
- package/dist/server/src/utils/get-main-keys-of-nested-array-objects.d.ts +2 -0
- package/dist/server/src/utils/get-picked-flatten-keys-for-hook-entry.d.ts +5 -0
- package/dist/server/src/utils/intl-display-name.d.ts +1 -0
- package/dist/server/src/utils/is-generally-applicable-content-type.d.ts +2 -0
- package/dist/server/src/utils/is-localazy-applicable-content-type.d.ts +2 -0
- package/dist/server/src/utils/iso-locales-utils.d.ts +3 -0
- package/dist/server/src/utils/localazy-api-client-factory.d.ts +3 -0
- package/dist/server/src/utils/localazy-generic-connector-client-factory.d.ts +3 -0
- package/dist/server/src/utils/model-utils.d.ts +7 -0
- package/dist/server/src/utils/omit-deep.d.ts +2 -0
- package/dist/server/src/utils/parsed-localazy-entry-to-create-entry.d.ts +7 -0
- package/dist/server/src/utils/parsed-localazy-entry-to-update-entry.d.ts +1 -0
- package/dist/server/src/utils/pick-entries.d.ts +2 -0
- package/dist/server/src/utils/populate-create-update-entry-with-base-entry.d.ts +1 -0
- package/dist/server/src/utils/request-initiator-helper.d.ts +9 -0
- package/dist/server/src/utils/reset-array-keys-deep.d.ts +1 -0
- package/dist/server/src/utils/transfer-setup-utils.d.ts +7 -0
- package/install/index.mjs +88 -34
- package/install/vite.config.example.js +40 -0
- package/install/vite.config.example.ts +41 -0
- package/install/{webpack.example.js → webpack.config.example.js} +2 -2
- package/install/webpack.config.example.ts +30 -0
- package/package.json +93 -55
- package/.babelrc +0 -7
- package/.eslintrc +0 -13
- package/.github/workflows/qa.yml +0 -25
- package/.github/workflows/release.yml +0 -46
- package/.nvmrc +0 -1
- package/.strapi-updater.json +0 -4
- package/CHANGELOG.md +0 -60
- package/LICENSE +0 -21
- package/admin/src/components/Initializer/index.js +0 -26
- package/admin/src/components/PluginIcon/index.js +0 -14
- package/admin/src/config/development/index.js +0 -14
- package/admin/src/config/example/index.js +0 -14
- package/admin/src/config/index.js +0 -19
- package/admin/src/config/local/index.js +0 -14
- package/admin/src/config/production/index.js +0 -15
- package/admin/src/i18n.js +0 -41
- package/admin/src/index.js +0 -138
- package/admin/src/modules/@common/components/Icons/Localazy/index.js +0 -12
- package/admin/src/modules/@common/components/LanguagesSelector/index.js +0 -67
- package/admin/src/modules/@common/components/PluginPageLoader/index.js +0 -20
- package/admin/src/modules/@common/components/SideNav/index.js +0 -46
- package/admin/src/modules/@common/components/TransferReport/index.js +0 -53
- package/admin/src/modules/@common/locale/en.js +0 -14
- package/admin/src/modules/@common/models/supported-content-type-fields.js +0 -9
- package/admin/src/modules/@common/models/supported-custom-field-plugins.js +0 -6
- package/admin/src/modules/@common/services/i18n-service.js +0 -15
- package/admin/src/modules/@common/services/plugin.service.js +0 -16
- package/admin/src/modules/@common/services/product-analytics-service.js +0 -86
- package/admin/src/modules/@common/services/project-service.js +0 -15
- package/admin/src/modules/@common/services/user-service.js +0 -38
- package/admin/src/modules/@common/utils/__tests__/iso-locales-utils.test.js +0 -102
- package/admin/src/modules/@common/utils/are-locales-compatible.js +0 -42
- package/admin/src/modules/@common/utils/format-number.js +0 -1
- package/admin/src/modules/@common/utils/functions/flatten-deep.js +0 -23
- package/admin/src/modules/@common/utils/get-default-locale.js +0 -32
- package/admin/src/modules/@common/utils/get-header-subtitle.js +0 -21
- package/admin/src/modules/@common/utils/get-header-title.js +0 -24
- package/admin/src/modules/@common/utils/get-nav.js +0 -35
- package/admin/src/modules/@common/utils/history.js +0 -6
- package/admin/src/modules/@common/utils/is-plugin-route.js +0 -15
- package/admin/src/modules/@common/utils/iso-locales-utils.js +0 -58
- package/admin/src/modules/@common/utils/redirect-to-plugin-route.js +0 -22
- package/admin/src/modules/@common/utils/sort-by-model-name.js +0 -10
- package/admin/src/modules/alerts/constants/channels.js +0 -1
- package/admin/src/modules/alerts/constants/events.js +0 -4
- package/admin/src/modules/alerts/services/alerts-service.js +0 -41
- package/admin/src/modules/localazy-download/locale/en.js +0 -25
- package/admin/src/modules/localazy-download/services/download-alerts-service.js +0 -12
- package/admin/src/modules/localazy-download/services/localazy-download-service.js +0 -16
- package/admin/src/modules/localazy-upload/components/ReadDocsButton.js +0 -20
- package/admin/src/modules/localazy-upload/locale/en.js +0 -20
- package/admin/src/modules/localazy-upload/services/localazy-upload-service.js +0 -16
- package/admin/src/modules/localazy-upload/services/upload-alerts-service.js +0 -12
- package/admin/src/modules/login/components/LoginButton/index.js +0 -55
- package/admin/src/modules/login/components/LogoutButton/index.js +0 -49
- package/admin/src/modules/login/locale/en.js +0 -7
- package/admin/src/modules/login/services/localazy-login-service.js +0 -29
- package/admin/src/modules/plugin-settings/components/ContentTransferSetup/index.js +0 -308
- package/admin/src/modules/plugin-settings/components/ContentTransferSetupEmpty/index.js +0 -86
- package/admin/src/modules/plugin-settings/components/GlobalSettings/index.js +0 -269
- package/admin/src/modules/plugin-settings/components/Tree/index.js +0 -145
- package/admin/src/modules/plugin-settings/components/TreeItem/index.js +0 -48
- package/admin/src/modules/plugin-settings/functions/build-content-transfer-setup-schema.js +0 -57
- package/admin/src/modules/plugin-settings/functions/get-content-transfer-setup-keys-sets.js +0 -85
- package/admin/src/modules/plugin-settings/functions/has-model-changed.js +0 -75
- package/admin/src/modules/plugin-settings/locale/en.js +0 -61
- package/admin/src/modules/plugin-settings/services/plugin-settings-service.js +0 -55
- package/admin/src/modules/plugin-settings/services/strapi-model-service.js +0 -26
- package/admin/src/modules/plugin-settings/services/strapi-users-service.js +0 -26
- package/admin/src/modules/plugin-settings/utils/__tests__/get-models-tree.test.js +0 -135
- package/admin/src/modules/plugin-settings/utils/array-of-models-to-object.js +0 -6
- package/admin/src/modules/plugin-settings/utils/find-model-value-by-key.js +0 -8
- package/admin/src/modules/plugin-settings/utils/get-filtered-models-schemas.js +0 -31
- package/admin/src/modules/plugin-settings/utils/get-models-tree.js +0 -94
- package/admin/src/modules/settings/components/OverviewItem/index.js +0 -44
- package/admin/src/modules/settings/components/OverviewItemLink/index.js +0 -34
- package/admin/src/modules/settings/components/PrerequisitiesInfo/index.js +0 -28
- package/admin/src/modules/settings/locale/en.js +0 -13
- package/admin/src/modules/user/model/localazy-identity.js +0 -14
- package/admin/src/modules/user/services/localazy-user-service.js +0 -38
- package/admin/src/pages/App/index.js +0 -154
- package/admin/src/pages/Download/index.js +0 -280
- package/admin/src/pages/Index/index.js +0 -8
- package/admin/src/pages/Login/index.js +0 -109
- package/admin/src/pages/PluginSettings/index.js +0 -56
- package/admin/src/pages/Settings/index.js +0 -132
- package/admin/src/pages/Upload/index.js +0 -241
- package/admin/src/pluginId.js +0 -5
- package/admin/src/plugins/generic-connector-client.js +0 -9
- package/admin/src/state/localazy-identity.js +0 -29
- package/admin/src/tests/fixtures/all-models.js +0 -877
- package/admin/src/tests/fixtures/restaurant-model.js +0 -230
- package/admin/src/translations/en.json +0 -4
- package/admin/src/translations/fr.json +0 -1
- package/admin/src/utils/createAxiosInstance.js +0 -54
- package/admin/src/utils/getTrad.js +0 -5
- package/jest.config.js +0 -0
- package/server/bootstrap.js +0 -63
- package/server/config/development/index.js +0 -16
- package/server/config/example/index.js +0 -16
- package/server/config/index.js +0 -20
- package/server/config/local/index.js +0 -16
- package/server/config/production/index.js +0 -17
- package/server/config/schema.graphql.js +0 -21
- package/server/constants/channels.js +0 -3
- package/server/constants/events.js +0 -6
- package/server/content-types/index.js +0 -3
- package/server/controllers/index.js +0 -17
- package/server/controllers/localazy-auth-controller.js +0 -22
- package/server/controllers/localazy-project-controller.js +0 -21
- package/server/controllers/localazy-transfer-controller.js +0 -62
- package/server/controllers/localazy-user-controller.js +0 -24
- package/server/controllers/plugin-settings-controller.js +0 -31
- package/server/controllers/strapi-controller.js +0 -27
- package/server/db/model/content-transfer-setup.js +0 -13
- package/server/db/model/localazy-user.js +0 -23
- package/server/db/model/plugin-settings.js +0 -13
- package/server/db/model/utils/get-strapi-store.js +0 -9
- package/server/destroy.js +0 -5
- package/server/functions/should-set-downloaded-property.js +0 -94
- package/server/index.js +0 -25
- package/server/lifecycles/deep-populate-hook.js +0 -12
- package/server/lifecycles/deprecate-event-entry-in-localazy-hook.js +0 -73
- package/server/lifecycles/upload-event-entry-to-localazy-hook.js +0 -36
- package/server/middlewares/index.js +0 -7
- package/server/middlewares/verify-webhook.js +0 -77
- package/server/models/supported-content-type-fields.js +0 -9
- package/server/models/supported-custom-field-plugins.js +0 -6
- package/server/policies/index.js +0 -3
- package/server/register.js +0 -5
- package/server/routes/index.js +0 -28
- package/server/routes/localazy-auth.js +0 -22
- package/server/routes/localazy-project.js +0 -14
- package/server/routes/localazy-public-transfer.js +0 -20
- package/server/routes/localazy-transfer.js +0 -22
- package/server/routes/localazy-user.js +0 -30
- package/server/routes/plugin-settings.js +0 -38
- package/server/routes/strapi.js +0 -38
- package/server/services/helpers/job-notification-service.js +0 -30
- package/server/services/helpers/plugin-settings-service-helper.js +0 -52
- package/server/services/index.js +0 -23
- package/server/services/localazy-pubapi-service.js +0 -53
- package/server/services/localazy-transfer-download-service.js +0 -445
- package/server/services/localazy-transfer-upload-service.js +0 -178
- package/server/services/localazy-upload-service.js +0 -52
- package/server/services/localazy-user-service.js +0 -29
- package/server/services/plugin-settings-service.js +0 -53
- package/server/services/strapi-i18n-service.js +0 -151
- package/server/services/strapi-localazy-i18n-service.js +0 -130
- package/server/services/strapi-service.js +0 -26
- package/server/tests/fixtures/all-models.js +0 -869
- package/server/tests/fixtures/parsed-localazy-entry-to-create-entry-cookbook.js +0 -5761
- package/server/tests/fixtures/parsed-localazy-entry-to-create-entry-lesson-dz.js +0 -402
- package/server/tests/fixtures/parsed-localazy-entry-to-create-entry-page-dz.js +0 -658
- package/server/tests/fixtures/parsed-localazy-entry-to-create-entry-restaurant-simple-menu.js +0 -536
- package/server/tests/fixtures/parsed-localazy-entry-to-update-entry.js +0 -35157
- package/server/tests/fixtures/populate-create-update-entry-with-base-entry-cookbook-empty-recipes.js +0 -202
- package/server/tests/fixtures/populate-create-update-entry-with-base-entry-cookbook.js +0 -2700
- package/server/tests/fixtures/populate-create-update-entry-with-base-entry-lesson-dz.js +0 -309
- package/server/tests/fixtures/populate-create-update-entry-with-base-entry-restaurant-simple-flat-simple.js +0 -47
- package/server/tests/fixtures/populate-create-update-entry-with-base-entry-restaurant-simple-flat-with-media.js +0 -169
- package/server/tests/fixtures/populate-create-update-entry-with-base-entry-restaurant-simple-menu-empty.js +0 -3003
- package/server/tests/fixtures/populate-create-update-entry-with-base-entry-restaurant-simple-menu-with-media.js +0 -2057
- package/server/tests/fixtures/populate-create-update-entry-with-base-entry-sample-json-dz.js +0 -884
- package/server/tests/fixtures/populate-create-update-entry-with-base-entry-sample-json.js +0 -46
- package/server/tests/fixtures/strapi-plugin-all-models.js +0 -7000
- package/server/utils/__tests__/build-populate.test.js +0 -85
- package/server/utils/__tests__/flatten-object.test.js +0 -171
- package/server/utils/__tests__/get-models-tree.test.js +0 -170
- package/server/utils/__tests__/iso-locales-utils.test.js +0 -104
- package/server/utils/__tests__/parsed-localazy-entry-to-create-entry.test.js +0 -258
- package/server/utils/__tests__/parsed-localazy-entry-to-update-entry.test.js +0 -456
- package/server/utils/__tests__/pick-entries.test.js +0 -963
- package/server/utils/__tests__/populate-create-update-entry-with-base-entry.test.js +0 -1176
- package/server/utils/build-populate.js +0 -48
- package/server/utils/delay.js +0 -6
- package/server/utils/flatten-object.js +0 -61
- package/server/utils/generate-random-id.js +0 -3
- package/server/utils/get-full-populate-object.js +0 -66
- package/server/utils/get-main-keys-of-nested-array-objects.js +0 -5
- package/server/utils/get-models-tree.js +0 -47
- package/server/utils/get-picked-flatten-keys-for-hook-entry.js +0 -270
- package/server/utils/intl-display-name.js +0 -4
- package/server/utils/is-generally-applicable-content-type.js +0 -33
- package/server/utils/is-localazy-applicable-content-type.js +0 -36
- package/server/utils/iso-locales-utils.js +0 -60
- package/server/utils/localazy-api-client-factory.js +0 -22
- package/server/utils/localazy-generic-connector-client-factory.js +0 -15
- package/server/utils/model-utils.js +0 -43
- package/server/utils/objectivise-entry.js +0 -41
- package/server/utils/omit-deep.js +0 -24
- package/server/utils/parsed-localazy-entry-to-create-entry.js +0 -194
- package/server/utils/parsed-localazy-entry-to-update-entry.js +0 -83
- package/server/utils/pick-deep.js +0 -22
- package/server/utils/pick-entries.js +0 -37
- package/server/utils/populate-create-update-entry-with-base-entry.js +0 -264
- package/server/utils/request-initiator-helper.js +0 -36
- package/server/utils/reset-array-keys-deep.js +0 -19
- package/server/utils/transfer-setup-utils.js +0 -93
- package/strapi-admin.js +0 -14
- package/strapi-server.js +0 -5
- package/test/helpers/mocks.js +0 -9
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
import React, { useEffect, useState } from "react";
|
|
2
|
-
import { useTranslation } from "react-i18next";
|
|
3
|
-
import cloneDeep from "lodash-es/cloneDeep";
|
|
4
|
-
import { HeaderLayout } from "@strapi/design-system/Layout";
|
|
5
|
-
import Check from "@strapi/icons/Check";
|
|
6
|
-
import { Box } from "@strapi/design-system/Box";
|
|
7
|
-
import { Button } from "@strapi/design-system/Button";
|
|
8
|
-
import { ToggleInput } from '@strapi/design-system/ToggleInput';
|
|
9
|
-
import { Select, Option } from '@strapi/design-system/Select';
|
|
10
|
-
import { Alert } from "@strapi/design-system/Alert";
|
|
11
|
-
import { Redirect } from "react-router-dom";
|
|
12
|
-
import { Flex } from "@strapi/design-system/Flex";
|
|
13
|
-
import { Divider } from "@strapi/design-system/Divider";
|
|
14
|
-
import { Typography } from "@strapi/design-system/Typography";
|
|
15
|
-
import isEqual from "lodash-es/isEqual";
|
|
16
|
-
import set from "lodash-es/set";
|
|
17
|
-
import LanguagesSelector from "../../../@common/components/LanguagesSelector";
|
|
18
|
-
import PluginSettingsService from "../../services/plugin-settings-service";
|
|
19
|
-
import StrapiUsersService from "../../services/strapi-users-service";
|
|
20
|
-
import { getLocalazyIdentity } from "../../../../state/localazy-identity";
|
|
21
|
-
import ProjectService from "../../../@common/services/project-service";
|
|
22
|
-
import pluginId from "../../../../pluginId";
|
|
23
|
-
|
|
24
|
-
import "../../../../i18n";
|
|
25
|
-
|
|
26
|
-
function GlobalSettings() {
|
|
27
|
-
/**
|
|
28
|
-
* Translation function
|
|
29
|
-
*/
|
|
30
|
-
const { t } = useTranslation();
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Is user logged in
|
|
34
|
-
*/
|
|
35
|
-
const [localazyIdentity] = getLocalazyIdentity();
|
|
36
|
-
const hasLocalazyIdentity = () => !!localazyIdentity.accessToken;
|
|
37
|
-
const [isLoggedIn, setIsLoggedIn] = useState(false);
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Project Languages without default language
|
|
41
|
-
*/
|
|
42
|
-
const [projectLanguages, setProjectLanguages] = useState([]);
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Component state
|
|
46
|
-
*/
|
|
47
|
-
const [isLoading, setIsLoading] = useState(true);
|
|
48
|
-
const [showSavedAlert, setShowSavedAlert] = useState(false);
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Admin Panel Users
|
|
52
|
-
*/
|
|
53
|
-
const [users, setUsers] = useState([]);
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Global Settings form model
|
|
57
|
-
*/
|
|
58
|
-
const [originalFormModel, setOriginalFormModel] = useState([]);
|
|
59
|
-
const [formModel, setFormModel] = useState([]);
|
|
60
|
-
const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);
|
|
61
|
-
|
|
62
|
-
const onCancelClick = () => {
|
|
63
|
-
setFormModel(cloneDeep(originalFormModel));
|
|
64
|
-
setHasUnsavedChanges(false);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Save the Global Settings
|
|
69
|
-
*/
|
|
70
|
-
const saveGlobalSettings = async (data) => {
|
|
71
|
-
try {
|
|
72
|
-
await PluginSettingsService.updatePluginSettings(data);
|
|
73
|
-
setOriginalFormModel(cloneDeep(data));
|
|
74
|
-
setHasUnsavedChanges(false);
|
|
75
|
-
setShowSavedAlert(true);
|
|
76
|
-
} catch (e) {
|
|
77
|
-
throw e.data;
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Patch Form Model
|
|
83
|
-
*/
|
|
84
|
-
const patchFormModel = (key, value) => {
|
|
85
|
-
const newFormModel = cloneDeep(formModel);
|
|
86
|
-
set(newFormModel, key, value);
|
|
87
|
-
setFormModel(newFormModel);
|
|
88
|
-
setHasUnsavedChanges(!isEqual(originalFormModel, newFormModel));
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
useEffect(() => {
|
|
92
|
-
async function fetchData() {
|
|
93
|
-
setIsLoading(true);
|
|
94
|
-
setIsLoggedIn(hasLocalazyIdentity());
|
|
95
|
-
|
|
96
|
-
if (!hasLocalazyIdentity()) {
|
|
97
|
-
setIsLoading(false);
|
|
98
|
-
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
const project = await ProjectService.getConnectedProject();
|
|
103
|
-
const projectLanguagesWithoutDefaultLanguage =
|
|
104
|
-
project?.languages?.filter(language => language.id !== project.sourceLanguage) || [];
|
|
105
|
-
setProjectLanguages(projectLanguagesWithoutDefaultLanguage);
|
|
106
|
-
|
|
107
|
-
const globalSettings = await PluginSettingsService.getPluginSettings();
|
|
108
|
-
|
|
109
|
-
setFormModel(globalSettings);
|
|
110
|
-
setOriginalFormModel(cloneDeep(globalSettings));
|
|
111
|
-
|
|
112
|
-
const users = await StrapiUsersService.getAdminPanelUsers();
|
|
113
|
-
setUsers(users);
|
|
114
|
-
|
|
115
|
-
setIsLoading(false);
|
|
116
|
-
}
|
|
117
|
-
fetchData();
|
|
118
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
119
|
-
}, []);
|
|
120
|
-
|
|
121
|
-
return (
|
|
122
|
-
<>
|
|
123
|
-
{!isLoading && !isLoggedIn && <Redirect to={`/plugins/${pluginId}/login`} />}
|
|
124
|
-
|
|
125
|
-
<HeaderLayout
|
|
126
|
-
title={t("plugin_settings.global_settings")}
|
|
127
|
-
subtitle={t("plugin_settings.global_settings_description")}
|
|
128
|
-
primaryAction={
|
|
129
|
-
<Flex gap={2}>
|
|
130
|
-
<Button
|
|
131
|
-
variant="secondary"
|
|
132
|
-
disabled={!hasUnsavedChanges}
|
|
133
|
-
onClick={onCancelClick}
|
|
134
|
-
>
|
|
135
|
-
{t("plugin_settings.cancel")}
|
|
136
|
-
</Button>
|
|
137
|
-
<Button
|
|
138
|
-
startIcon={<Check />}
|
|
139
|
-
disabled={!hasUnsavedChanges}
|
|
140
|
-
onClick={() => { saveGlobalSettings(formModel) }}
|
|
141
|
-
>
|
|
142
|
-
{t("plugin_settings.save")}
|
|
143
|
-
</Button>
|
|
144
|
-
</Flex>
|
|
145
|
-
}
|
|
146
|
-
as="h2"
|
|
147
|
-
/>
|
|
148
|
-
<Box marginRight={10} marginLeft={10}>
|
|
149
|
-
{!isLoading && showSavedAlert && (
|
|
150
|
-
<Box marginBottom={8}>
|
|
151
|
-
<Alert
|
|
152
|
-
onClose={() => showSavedAlert(false)}
|
|
153
|
-
closeLabel={t("plugin_settings.close")}
|
|
154
|
-
title={t("plugin_settings.content_transfer_setup_saved")}
|
|
155
|
-
variant="success"
|
|
156
|
-
>
|
|
157
|
-
{t("plugin_settings.global_settings_saved_successfully")}
|
|
158
|
-
</Alert>
|
|
159
|
-
</Box>
|
|
160
|
-
)}
|
|
161
|
-
{!isLoading && (
|
|
162
|
-
<Box
|
|
163
|
-
background="neutral0"
|
|
164
|
-
padding={7}
|
|
165
|
-
paddingTop={6}
|
|
166
|
-
shadow="tableShadow"
|
|
167
|
-
hasRadius
|
|
168
|
-
>
|
|
169
|
-
{/* Upload Settings */}
|
|
170
|
-
<Typography
|
|
171
|
-
variant="delta"
|
|
172
|
-
textColor="neutral800"
|
|
173
|
-
>
|
|
174
|
-
{t("plugin_settings.upload_settings")}
|
|
175
|
-
</Typography>
|
|
176
|
-
{/* Allow automated upload to Localazy */}
|
|
177
|
-
<br /><br />
|
|
178
|
-
<ToggleInput
|
|
179
|
-
label={t("plugin_settings.allow_automated_upload_to_localazy")}
|
|
180
|
-
hint={t("plugin_settings.allow_automated_upload_to_localazy_info")}
|
|
181
|
-
offLabel={t("plugin_settings.off")}
|
|
182
|
-
onLabel={t("plugin_settings.on")}
|
|
183
|
-
checked={typeof formModel?.upload?.allowAutomated === "boolean" ? formModel.upload.allowAutomated : false}
|
|
184
|
-
onChange={e => patchFormModel("upload.allowAutomated", e.target.checked)} />
|
|
185
|
-
{/* Automated upload triggers */}
|
|
186
|
-
<br /><br />
|
|
187
|
-
<Select
|
|
188
|
-
label={t("plugin_settings.automated_upload_triggers")}
|
|
189
|
-
hint={t("plugin_settings.automated_upload_triggers_info")}
|
|
190
|
-
clearLabel={t("plugin_settings.clear")}
|
|
191
|
-
placeholder={t("plugin_settings.automated_upload_triggers_placeholder")}
|
|
192
|
-
onClear={() => patchFormModel("upload.automatedTriggers", [])}
|
|
193
|
-
value={formModel?.upload?.automatedTriggers || []}
|
|
194
|
-
onChange={(values) => patchFormModel("upload.automatedTriggers", values)}
|
|
195
|
-
disabled={typeof formModel?.upload?.allowAutomated === "boolean" ? !formModel.upload.allowAutomated : true}
|
|
196
|
-
multi
|
|
197
|
-
withTags
|
|
198
|
-
>
|
|
199
|
-
<Option value="created">{t("plugin_settings.creating_new_data_entry")}</Option>
|
|
200
|
-
<Option value="updated">{t("plugin_settings.editing_data_entry")}</Option>
|
|
201
|
-
</Select>
|
|
202
|
-
{/* Deprecate source keys on deletion */}
|
|
203
|
-
<br /><br />
|
|
204
|
-
<ToggleInput
|
|
205
|
-
label={t("plugin_settings.deprecate_source_keys_on_delete")}
|
|
206
|
-
hint={t("plugin_settings.deprecate_source_keys_on_delete_info")}
|
|
207
|
-
offLabel={t("plugin_settings.off")}
|
|
208
|
-
onLabel={t("plugin_settings.on")}
|
|
209
|
-
checked={typeof formModel?.upload?.allowDeprecate === "boolean" ? formModel.upload.allowDeprecate : false}
|
|
210
|
-
onChange={e => patchFormModel("upload.allowDeprecate", e.target.checked)} />
|
|
211
|
-
<br /><br />
|
|
212
|
-
<Divider />
|
|
213
|
-
{/* Download Settings */}
|
|
214
|
-
<br /><br />
|
|
215
|
-
<Typography
|
|
216
|
-
variant="delta"
|
|
217
|
-
textColor="neutral800"
|
|
218
|
-
>
|
|
219
|
-
{t("plugin_settings.download_settings")}
|
|
220
|
-
</Typography>
|
|
221
|
-
{/* Processing of download webhook */}
|
|
222
|
-
<br /><br />
|
|
223
|
-
<ToggleInput
|
|
224
|
-
label={t("plugin_settings.processing_of_download_webhook")}
|
|
225
|
-
hint={t("plugin_settings.processing_of_download_webhook_info")}
|
|
226
|
-
offLabel={t("plugin_settings.off")}
|
|
227
|
-
onLabel={t("plugin_settings.on")}
|
|
228
|
-
// eslint-disable-next-line max-len
|
|
229
|
-
checked={typeof formModel?.download?.processDownloadWebhook === "boolean" ? formModel.download.processDownloadWebhook : true}
|
|
230
|
-
onChange={e => patchFormModel("download.processDownloadWebhook", e.target.checked)} />
|
|
231
|
-
{/* Webhook actions author */}
|
|
232
|
-
<br /><br />
|
|
233
|
-
<Select
|
|
234
|
-
label={t("plugin_settings.webhook_author")}
|
|
235
|
-
hint={t("plugin_settings.webhook_author_info")}
|
|
236
|
-
clearLabel={t("plugin_settings.clear")}
|
|
237
|
-
placeholder={t("plugin_settings.webhook_author_placeholder")}
|
|
238
|
-
onClear={() => patchFormModel("download.webhookAuthorId", null)}
|
|
239
|
-
value={formModel?.download?.webhookAuthorId || null}
|
|
240
|
-
onChange={(value) => patchFormModel("download.webhookAuthorId", value)}
|
|
241
|
-
>
|
|
242
|
-
{users.map(user => (
|
|
243
|
-
<Option
|
|
244
|
-
key={user.id}
|
|
245
|
-
value={user.id}
|
|
246
|
-
>
|
|
247
|
-
{`${user.firstname} ${user.lastname} (${user.email})`}
|
|
248
|
-
</Option>
|
|
249
|
-
))}
|
|
250
|
-
</Select>
|
|
251
|
-
{/* Webhook languages selector */}
|
|
252
|
-
<br /><br />
|
|
253
|
-
<LanguagesSelector
|
|
254
|
-
preselectedLanguages={formModel?.download?.webhookLanguages || []}
|
|
255
|
-
projectLanguages={projectLanguages}
|
|
256
|
-
onChange={(languages) => patchFormModel("download.webhookLanguages", languages)}
|
|
257
|
-
label={t("plugin_settings.webhook_languages")}
|
|
258
|
-
hint={t("plugin_settings.webhook_languages_info")}
|
|
259
|
-
placeholder={t("plugin_settings.webhook_languages_placeholder")}
|
|
260
|
-
/>
|
|
261
|
-
|
|
262
|
-
</Box>
|
|
263
|
-
)}
|
|
264
|
-
</Box>
|
|
265
|
-
</>
|
|
266
|
-
);
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
export default GlobalSettings;
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import React, { useState, useEffect } from "react";
|
|
2
|
-
import PropTypes from "prop-types";
|
|
3
|
-
import { Box } from "@strapi/design-system/Box";
|
|
4
|
-
import { Flex } from "@strapi/design-system/Flex";
|
|
5
|
-
import { Switch } from '@strapi/design-system/Switch';
|
|
6
|
-
import { Checkbox } from '@strapi/design-system/Checkbox';
|
|
7
|
-
import DynamicZone from '@strapi/icons/DynamicZone';
|
|
8
|
-
import { Accordion, AccordionToggle, AccordionContent } from '@strapi/design-system/Accordion';
|
|
9
|
-
import TreeItem from "../TreeItem";
|
|
10
|
-
import flattenObject from "../../../@common/utils/functions/flatten-deep";
|
|
11
|
-
|
|
12
|
-
function Tree(props) {
|
|
13
|
-
const [isExpanded, setIsExpanded] = useState(false);
|
|
14
|
-
const onTreeItemClick = (key, currentValue) => {
|
|
15
|
-
props.onTreeItemClick(key, currentValue);
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
useEffect(() => {
|
|
19
|
-
setIsExpanded(props.initiallyExpanded);
|
|
20
|
-
}, [props.initiallyExpanded]);
|
|
21
|
-
|
|
22
|
-
const createTree = (name, branch, path = "") => {
|
|
23
|
-
const isBranchObject = typeof branch === "object" && branch !== null;
|
|
24
|
-
|
|
25
|
-
if (isBranchObject) {
|
|
26
|
-
return (
|
|
27
|
-
<>
|
|
28
|
-
{Object.entries(branch).map(([key, value]) => {
|
|
29
|
-
const isSubbranchObject = typeof value === "object" && value !== null;
|
|
30
|
-
let flattened = flattenObject(value)
|
|
31
|
-
flattened = Object.fromEntries(Object.entries(flattened).filter(([key]) => !key.includes("__component__")));
|
|
32
|
-
const flattenedKeys = Object.keys(flattened).map((k) => `${path}.${key}.${k}`);
|
|
33
|
-
|
|
34
|
-
const hasTruthyValue = Object
|
|
35
|
-
.values(flattened)
|
|
36
|
-
.some(v => v);
|
|
37
|
-
const hasFalsyValue = Object
|
|
38
|
-
.values(flattened)
|
|
39
|
-
.some(v => !v && v !== null);
|
|
40
|
-
const hasAllNullValue = Object
|
|
41
|
-
.values(flattened)
|
|
42
|
-
.every(v => v === null);
|
|
43
|
-
|
|
44
|
-
const RESERVED_KEYS_TO_SKIP = ["__model__", "__component__"];
|
|
45
|
-
|
|
46
|
-
if (RESERVED_KEYS_TO_SKIP.includes(key)) {
|
|
47
|
-
return false;
|
|
48
|
-
}
|
|
49
|
-
const passedKey = `${path}.${key}`;
|
|
50
|
-
|
|
51
|
-
return (
|
|
52
|
-
<Box
|
|
53
|
-
key={passedKey}
|
|
54
|
-
marginTop={6}
|
|
55
|
-
marginBottom={6}
|
|
56
|
-
marginLeft={6}
|
|
57
|
-
>
|
|
58
|
-
{isSubbranchObject && (
|
|
59
|
-
<Checkbox
|
|
60
|
-
disabled={hasAllNullValue}
|
|
61
|
-
checked={hasTruthyValue && !hasFalsyValue}
|
|
62
|
-
indeterminate={hasTruthyValue && hasFalsyValue}
|
|
63
|
-
onChange={() => onTreeItemClick(flattenedKeys, hasTruthyValue && !hasFalsyValue)}
|
|
64
|
-
>
|
|
65
|
-
<Flex alignItems="center">
|
|
66
|
-
{!!value?.__component__ && (<Flex alignItems="center" marginRight={2}><DynamicZone width="1rem" height="1rem" /></Flex>)}
|
|
67
|
-
{value?.__component__ || key || "-"}
|
|
68
|
-
</Flex>
|
|
69
|
-
</Checkbox>)
|
|
70
|
-
}
|
|
71
|
-
<TreeItem
|
|
72
|
-
onTreeItemClick={onTreeItemClick}
|
|
73
|
-
passedKey={passedKey}
|
|
74
|
-
>
|
|
75
|
-
{createTree(key, value, passedKey)}
|
|
76
|
-
</TreeItem>
|
|
77
|
-
</Box>
|
|
78
|
-
);
|
|
79
|
-
})}
|
|
80
|
-
</>
|
|
81
|
-
);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
return (
|
|
85
|
-
<TreeItem
|
|
86
|
-
onTreeItemClick={onTreeItemClick}
|
|
87
|
-
key={path}
|
|
88
|
-
passedKey={path}
|
|
89
|
-
label={name}
|
|
90
|
-
value={branch}
|
|
91
|
-
/>
|
|
92
|
-
);
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
return (
|
|
96
|
-
<Box>
|
|
97
|
-
{Object.entries(props.objects).map(([key, value]) => {
|
|
98
|
-
return (
|
|
99
|
-
value.__model__ !== undefined && (
|
|
100
|
-
<Box borderColor="neutral200" hasRadius>
|
|
101
|
-
<Accordion
|
|
102
|
-
size="S"
|
|
103
|
-
expanded={isExpanded}
|
|
104
|
-
onToggle={() => { setIsExpanded(!isExpanded) }}
|
|
105
|
-
>
|
|
106
|
-
<AccordionToggle
|
|
107
|
-
variant="secondary"
|
|
108
|
-
title={key}
|
|
109
|
-
togglePosition="left"
|
|
110
|
-
action={
|
|
111
|
-
<Switch
|
|
112
|
-
label={`switch_tree_${key}`}
|
|
113
|
-
onChange={() =>
|
|
114
|
-
onTreeItemClick([`${key}.__model__`], value.__model__)
|
|
115
|
-
}
|
|
116
|
-
selected={!!value.__model__}
|
|
117
|
-
/>}
|
|
118
|
-
/>
|
|
119
|
-
|
|
120
|
-
<AccordionContent>
|
|
121
|
-
{createTree(key, value, key)}
|
|
122
|
-
</AccordionContent>
|
|
123
|
-
</Accordion>
|
|
124
|
-
</Box>
|
|
125
|
-
)
|
|
126
|
-
|
|
127
|
-
)
|
|
128
|
-
|
|
129
|
-
}
|
|
130
|
-
)}
|
|
131
|
-
</Box>
|
|
132
|
-
);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
Tree.propTypes = {
|
|
136
|
-
objects: PropTypes.object.isRequired,
|
|
137
|
-
onTreeItemClick: PropTypes.func.isRequired,
|
|
138
|
-
initiallyExpanded: PropTypes.bool,
|
|
139
|
-
};
|
|
140
|
-
|
|
141
|
-
Tree.defaultProps = {
|
|
142
|
-
initiallyExpanded: false,
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
export default Tree;
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import PropTypes from "prop-types";
|
|
3
|
-
import { Checkbox } from '@strapi/design-system/Checkbox';
|
|
4
|
-
|
|
5
|
-
function TreeItem(props) {
|
|
6
|
-
const onChange = (key, currentValue) => {
|
|
7
|
-
props.onTreeItemClick(key, currentValue);
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
return (
|
|
11
|
-
<>
|
|
12
|
-
{typeof props.value === "boolean" && (
|
|
13
|
-
<Checkbox
|
|
14
|
-
checked={props.value}
|
|
15
|
-
onChange={() => onChange([props.passedKey], props.value)}
|
|
16
|
-
>
|
|
17
|
-
{props.label || "-"}
|
|
18
|
-
</Checkbox>
|
|
19
|
-
)}
|
|
20
|
-
{props.value === null && (
|
|
21
|
-
<Checkbox
|
|
22
|
-
checked={false}
|
|
23
|
-
disabled
|
|
24
|
-
>
|
|
25
|
-
{props.label || "-"}
|
|
26
|
-
</Checkbox>
|
|
27
|
-
)}
|
|
28
|
-
{props.children && <div key={props.passedKey}>{props.children}</div>}
|
|
29
|
-
</>
|
|
30
|
-
);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
TreeItem.propTypes = {
|
|
34
|
-
label: PropTypes.string,
|
|
35
|
-
value: PropTypes.any,
|
|
36
|
-
children: PropTypes.any,
|
|
37
|
-
passedKey: PropTypes.string,
|
|
38
|
-
onTreeItemClick: PropTypes.func.isRequired,
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
TreeItem.defaultProps = {
|
|
42
|
-
label: undefined,
|
|
43
|
-
value: undefined,
|
|
44
|
-
children: undefined,
|
|
45
|
-
passedKey: "",
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
export default TreeItem;
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import set from "lodash-es/set";
|
|
2
|
-
import get from "lodash-es/get";
|
|
3
|
-
import findModelValueByKey from "../utils/find-model-value-by-key";
|
|
4
|
-
import getContentTransferSetupKeysSets from "./get-content-transfer-setup-keys-sets";
|
|
5
|
-
|
|
6
|
-
export default (
|
|
7
|
-
localizableTree = [],
|
|
8
|
-
storedSetupSchema = [],
|
|
9
|
-
allModelsTree = []
|
|
10
|
-
) => {
|
|
11
|
-
const {
|
|
12
|
-
oLocalizableTree,
|
|
13
|
-
oStoredSetupSchema,
|
|
14
|
-
newKeys,
|
|
15
|
-
filteredStoredSetupSchemaKeys
|
|
16
|
-
} = getContentTransferSetupKeysSets(
|
|
17
|
-
localizableTree,
|
|
18
|
-
storedSetupSchema,
|
|
19
|
-
);
|
|
20
|
-
|
|
21
|
-
const destinationObject = {};
|
|
22
|
-
filteredStoredSetupSchemaKeys.forEach((key) => {
|
|
23
|
-
const localizableTreeValueToSet = get(oStoredSetupSchema, key);
|
|
24
|
-
const allModelsTreeValueToSet = findModelValueByKey(allModelsTree, key);
|
|
25
|
-
|
|
26
|
-
if (allModelsTreeValueToSet === null) {
|
|
27
|
-
set(destinationObject, key, null);
|
|
28
|
-
} else if (localizableTreeValueToSet !== null) {
|
|
29
|
-
set(destinationObject, key, localizableTreeValueToSet);
|
|
30
|
-
} else {
|
|
31
|
-
// check for newly activated localizable fields & update model accordingly
|
|
32
|
-
const newValueToSet = findModelValueByKey(allModelsTree, key);
|
|
33
|
-
set(destinationObject, key, newValueToSet);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
newKeys.forEach((key) => {
|
|
37
|
-
set(destinationObject, key, get(oLocalizableTree, key));
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
const destinationArray = [];
|
|
41
|
-
const sortedDestinationObjectKeys = Object.keys(destinationObject).sort(
|
|
42
|
-
(a, b) => {
|
|
43
|
-
if (a < b) return -1;
|
|
44
|
-
|
|
45
|
-
if (a > b) return 1;
|
|
46
|
-
|
|
47
|
-
return 0;
|
|
48
|
-
}
|
|
49
|
-
);
|
|
50
|
-
|
|
51
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
52
|
-
for (const key of sortedDestinationObjectKeys) {
|
|
53
|
-
destinationArray.push(destinationObject[key]);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return destinationArray;
|
|
57
|
-
};
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import get from "lodash-es/get";
|
|
2
|
-
import uniq from "lodash-es/uniq";
|
|
3
|
-
import deepKeys from "@david-vaclavek/deep-keys";
|
|
4
|
-
import sortByModelName from "../../@common/utils/sort-by-model-name";
|
|
5
|
-
import arrayOfModelsToObject from "../utils/array-of-models-to-object";
|
|
6
|
-
|
|
7
|
-
export default (
|
|
8
|
-
localizableTree = [],
|
|
9
|
-
storedSetupSchema = [],
|
|
10
|
-
) => {
|
|
11
|
-
localizableTree = arrayOfModelsToObject(
|
|
12
|
-
localizableTree.sort(sortByModelName)
|
|
13
|
-
);
|
|
14
|
-
storedSetupSchema = arrayOfModelsToObject(
|
|
15
|
-
storedSetupSchema.sort(sortByModelName)
|
|
16
|
-
);
|
|
17
|
-
|
|
18
|
-
const currentModelsSchemaKeys = deepKeys(localizableTree);
|
|
19
|
-
const storedSetupSchemaKeys = deepKeys(storedSetupSchema);
|
|
20
|
-
|
|
21
|
-
// components order may have changed; this would prevent properties from mixing up
|
|
22
|
-
const regex = /\.\d+\.__component__/;
|
|
23
|
-
let currentModelsSchemaComponentKeys = currentModelsSchemaKeys.filter((key) => key.match(regex)).map((key) => key.replace(regex, ''));
|
|
24
|
-
let storedSetupSchemaComponentKeys = storedSetupSchemaKeys.filter((key) => key.match(regex)).map((key) => key.replace(regex, ''));
|
|
25
|
-
currentModelsSchemaComponentKeys = uniq(currentModelsSchemaComponentKeys);
|
|
26
|
-
storedSetupSchemaComponentKeys = uniq(storedSetupSchemaComponentKeys);
|
|
27
|
-
|
|
28
|
-
const currentModelsSchemaComponentKeysComponentProp = currentModelsSchemaKeys.filter((key) => key.includes('__component__') && currentModelsSchemaComponentKeys.some((k) => key.includes(k)));
|
|
29
|
-
const storedSetupSchemaComponentKeysComponentProp = storedSetupSchemaKeys.filter((key) => key.includes('__component__') && storedSetupSchemaComponentKeys.some((k) => key.includes(k)));
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Is in the "stored setup schema" but not in the "current model"
|
|
33
|
-
*/
|
|
34
|
-
let removedKeys = [];
|
|
35
|
-
removedKeys.push(...storedSetupSchemaComponentKeysComponentProp.map((key) => {
|
|
36
|
-
const storedComponentName = get(storedSetupSchema, key);
|
|
37
|
-
const currentComponentName = get(localizableTree, key);
|
|
38
|
-
|
|
39
|
-
// this must return an array of keys
|
|
40
|
-
if (storedComponentName !== currentComponentName) {
|
|
41
|
-
const part = key.split('.').slice(0, -1).join('.');
|
|
42
|
-
|
|
43
|
-
return storedSetupSchemaKeys.filter((k) => k.includes(part));
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return [];
|
|
47
|
-
}).reduce((acc, val) => acc.concat(val), []));
|
|
48
|
-
removedKeys.push(...storedSetupSchemaKeys.filter((key) => !currentModelsSchemaKeys.includes(key)));
|
|
49
|
-
removedKeys = uniq(removedKeys);
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Is in the "current model" but not in the "stored setup schema"
|
|
53
|
-
*/
|
|
54
|
-
let newKeys = [];
|
|
55
|
-
newKeys.push(...currentModelsSchemaComponentKeysComponentProp.map((key) => {
|
|
56
|
-
const storedComponentName = get(storedSetupSchema, key);
|
|
57
|
-
const currentComponentName = get(localizableTree, key);
|
|
58
|
-
|
|
59
|
-
// this must return an array of keys
|
|
60
|
-
if (storedComponentName !== currentComponentName) {
|
|
61
|
-
const part = key.split('.').slice(0, -1).join('.');
|
|
62
|
-
|
|
63
|
-
return currentModelsSchemaKeys.filter((k) => k.includes(part));
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
return [];
|
|
67
|
-
}).reduce((acc, val) => acc.concat(val), []));
|
|
68
|
-
newKeys.push(...currentModelsSchemaKeys.filter((key) => !storedSetupSchemaKeys.includes(key)));
|
|
69
|
-
newKeys = uniq(newKeys);
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Filter out the removed keys
|
|
73
|
-
*/
|
|
74
|
-
const filteredStoredSetupSchemaKeys = storedSetupSchemaKeys.filter(
|
|
75
|
-
(key) => !removedKeys.includes(key)
|
|
76
|
-
);
|
|
77
|
-
|
|
78
|
-
return {
|
|
79
|
-
oLocalizableTree: localizableTree,
|
|
80
|
-
oStoredSetupSchema: storedSetupSchema,
|
|
81
|
-
removedKeys,
|
|
82
|
-
newKeys,
|
|
83
|
-
filteredStoredSetupSchemaKeys,
|
|
84
|
-
}
|
|
85
|
-
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import get from "lodash-es/get";
|
|
2
|
-
import PluginSettingsService from "../services/plugin-settings-service";
|
|
3
|
-
import StrapiModelService from "../services/strapi-model-service";
|
|
4
|
-
import getModelsTree from "../utils/get-models-tree";
|
|
5
|
-
import findModelValueByKey from "../utils/find-model-value-by-key";
|
|
6
|
-
import getContentTransferSetupKeysSets from "./get-content-transfer-setup-keys-sets";
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Pass parameters optionally so we don't have to fetch them again
|
|
10
|
-
* Returns whether the content transfer setup has changed
|
|
11
|
-
*/
|
|
12
|
-
export default async (
|
|
13
|
-
localizableTree = null,
|
|
14
|
-
storedSetupSchema = null,
|
|
15
|
-
allModelsTree = null
|
|
16
|
-
) => {
|
|
17
|
-
let models;
|
|
18
|
-
|
|
19
|
-
if (!localizableTree || !allModelsTree) {
|
|
20
|
-
models = await StrapiModelService.getModels();
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
if (!localizableTree) {
|
|
24
|
-
const localizableModels = await StrapiModelService.getLocalizableModels();
|
|
25
|
-
localizableTree = getModelsTree(models, localizableModels);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
if (!storedSetupSchema) {
|
|
29
|
-
storedSetupSchema = (await PluginSettingsService.getContentTransferSetup())
|
|
30
|
-
.setup;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
if (!allModelsTree) {
|
|
34
|
-
allModelsTree = getModelsTree(models, models);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
const {
|
|
38
|
-
oStoredSetupSchema,
|
|
39
|
-
removedKeys,
|
|
40
|
-
newKeys,
|
|
41
|
-
filteredStoredSetupSchemaKeys
|
|
42
|
-
} = getContentTransferSetupKeysSets(
|
|
43
|
-
localizableTree,
|
|
44
|
-
storedSetupSchema,
|
|
45
|
-
);
|
|
46
|
-
|
|
47
|
-
if (newKeys.length || removedKeys.length) {
|
|
48
|
-
return true;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Check if the values are different (type might have changed; boolean to null or vice versa)
|
|
53
|
-
*/
|
|
54
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
55
|
-
for (const key of filteredStoredSetupSchemaKeys) {
|
|
56
|
-
const localizableTreeValueToSet = get(oStoredSetupSchema, key);
|
|
57
|
-
const allModelsTreeValueToSet = findModelValueByKey(allModelsTree, key);
|
|
58
|
-
|
|
59
|
-
if (
|
|
60
|
-
typeof localizableTreeValueToSet === "boolean" &&
|
|
61
|
-
allModelsTreeValueToSet === null
|
|
62
|
-
) {
|
|
63
|
-
return true;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
if (
|
|
67
|
-
localizableTreeValueToSet === null &&
|
|
68
|
-
typeof allModelsTreeValueToSet === "boolean"
|
|
69
|
-
) {
|
|
70
|
-
return true;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
return false;
|
|
75
|
-
};
|