From f956f76f8f0b91607d1792b83bb646242120557e Mon Sep 17 00:00:00 2001 From: soupette Date: Fri, 25 Sep 2020 09:07:32 +0200 Subject: [PATCH] Fixes #8040 Signed-off-by: soupette --- .../containers/DataManagerProvider/index.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) 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 => {