diff --git a/packages/strapi-plugin-content-type-builder/admin/src/containers/DataManagerProvider/index.js b/packages/strapi-plugin-content-type-builder/admin/src/containers/DataManagerProvider/index.js index 7105ec35cc..86914ff73d 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/containers/DataManagerProvider/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/containers/DataManagerProvider/index.js @@ -1,4 +1,4 @@ -import React, { memo, useEffect, useReducer, useState, useRef } from 'react'; +import React, { memo, useEffect, useMemo, useReducer, useState, useRef } from 'react'; import PropTypes from 'prop-types'; import { get, groupBy, set, size } from 'lodash'; import { @@ -382,16 +382,22 @@ const DataManagerProvider = ({ allIcons, children }) => { }); }; - const shouldRedirect = () => { + const shouldRedirect = useMemo(() => { const dataSet = isInContentTypeView ? contentTypes : components; return !Object.keys(dataSet).includes(currentUid) && !isLoading; - }; + }, [components, contentTypes, currentUid, isInContentTypeView, isLoading]); - if (shouldRedirect()) { - const firstCTUid = Object.keys(contentTypes).sort()[0]; + const redirectEndpoint = useMemo(() => { + const allowedEndpoints = Object.keys(contentTypes) + .filter(uid => get(contentTypes, [uid, 'schema', 'editable'], true)) + .sort(); - return ; + return get(allowedEndpoints, '0', ''); + }, [contentTypes]); + + if (shouldRedirect) { + return ; } const submitData = async additionalContentTypeData => {