mirror of
https://github.com/strapi/strapi.git
synced 2025-11-19 11:41:49 +00:00
fix: multiple locale related issues
This commit is contained in:
parent
5f649c2558
commit
4bff2c01cc
@ -587,27 +587,29 @@ const PublishAction: DocumentActionComponent = ({
|
|||||||
}, [documentId, modified, formValues, setLocalCountOfDraftRelations]);
|
}, [documentId, modified, formValues, setLocalCountOfDraftRelations]);
|
||||||
|
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
if (documentId) {
|
if (!document || !document.documentId) {
|
||||||
const fetchDraftRelationsCount = async () => {
|
return;
|
||||||
const { data, error } = await countDraftRelations({
|
|
||||||
collectionType,
|
|
||||||
model,
|
|
||||||
documentId,
|
|
||||||
params,
|
|
||||||
});
|
|
||||||
|
|
||||||
if (error) {
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (data) {
|
|
||||||
setServerCountOfDraftRelations(data.data);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
fetchDraftRelationsCount();
|
|
||||||
}
|
}
|
||||||
}, [documentId, countDraftRelations, collectionType, model, params]);
|
|
||||||
|
const fetchDraftRelationsCount = async () => {
|
||||||
|
const { data, error } = await countDraftRelations({
|
||||||
|
collectionType,
|
||||||
|
model,
|
||||||
|
documentId,
|
||||||
|
params,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data) {
|
||||||
|
setServerCountOfDraftRelations(data.data);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
fetchDraftRelationsCount();
|
||||||
|
}, [document, documentId, countDraftRelations, collectionType, model, params]);
|
||||||
|
|
||||||
const isDocumentPublished =
|
const isDocumentPublished =
|
||||||
(document?.[PUBLISHED_AT_ATTRIBUTE_NAME] ||
|
(document?.[PUBLISHED_AT_ATTRIBUTE_NAME] ||
|
||||||
|
|||||||
@ -209,7 +209,7 @@ export default {
|
|||||||
permissionChecker,
|
permissionChecker,
|
||||||
model,
|
model,
|
||||||
// @ts-expect-error TODO: fix
|
// @ts-expect-error TODO: fix
|
||||||
{ id, locale, publishedAt: null },
|
{ documentId: id, locale, publishedAt: null },
|
||||||
{ availableLocales: true, availableStatus: false }
|
{ availableLocales: true, availableStatus: false }
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -106,8 +106,14 @@ const LocalePickerAction = ({
|
|||||||
}: LocalePickerActionProps) => {
|
}: LocalePickerActionProps) => {
|
||||||
const { formatMessage } = useIntl();
|
const { formatMessage } = useIntl();
|
||||||
const [{ query }, setQuery] = useQueryParams<I18nBaseQuery>();
|
const [{ query }, setQuery] = useQueryParams<I18nBaseQuery>();
|
||||||
|
const currentDesiredLocale = query.plugins?.i18n?.locale;
|
||||||
const { hasI18n, canCreate, canRead } = useI18n();
|
const { hasI18n, canCreate, canRead } = useI18n();
|
||||||
const { schema } = useDocument({ model, collectionType, documentId });
|
const { schema } = useDocument({
|
||||||
|
model,
|
||||||
|
collectionType,
|
||||||
|
documentId,
|
||||||
|
params: { locale: currentDesiredLocale },
|
||||||
|
});
|
||||||
|
|
||||||
const handleSelect = React.useCallback(
|
const handleSelect = React.useCallback(
|
||||||
(value: string) => {
|
(value: string) => {
|
||||||
@ -131,7 +137,6 @@ const LocalePickerAction = ({
|
|||||||
* Handle the case where the current locale query param doesn't exist
|
* Handle the case where the current locale query param doesn't exist
|
||||||
* in the list of available locales, so we redirect to the default locale.
|
* in the list of available locales, so we redirect to the default locale.
|
||||||
*/
|
*/
|
||||||
const currentDesiredLocale = query.plugins?.i18n?.locale;
|
|
||||||
const doesLocaleExist = locales.find((loc) => loc.code === currentDesiredLocale);
|
const doesLocaleExist = locales.find((loc) => loc.code === currentDesiredLocale);
|
||||||
const defaultLocale = locales.find((locale) => locale.isDefault);
|
const defaultLocale = locales.find((locale) => locale.isDefault);
|
||||||
if (!doesLocaleExist && defaultLocale?.code) {
|
if (!doesLocaleExist && defaultLocale?.code) {
|
||||||
@ -245,10 +250,17 @@ const FillFromAnotherLocaleAction = ({
|
|||||||
}: FillFromAnotherLocaleActionProps) => {
|
}: FillFromAnotherLocaleActionProps) => {
|
||||||
const [isDialogOpen, setIsDialogOpen] = React.useState<boolean>(false);
|
const [isDialogOpen, setIsDialogOpen] = React.useState<boolean>(false);
|
||||||
const { formatMessage } = useIntl();
|
const { formatMessage } = useIntl();
|
||||||
|
const [{ query }] = useQueryParams<I18nBaseQuery>();
|
||||||
|
const currentDesiredLocale = query.plugins?.i18n?.locale;
|
||||||
const [localeSelected, setLocaleSelected] = React.useState<string | null>(null);
|
const [localeSelected, setLocaleSelected] = React.useState<string | null>(null);
|
||||||
const setValues = useForm('FillFromAnotherLocale', (state) => state.setValues);
|
const setValues = useForm('FillFromAnotherLocale', (state) => state.setValues);
|
||||||
const { getDocument } = useDocumentActions();
|
const { getDocument } = useDocumentActions();
|
||||||
const { schema } = useDocument({ model, documentId, collectionType });
|
const { schema } = useDocument({
|
||||||
|
model,
|
||||||
|
documentId,
|
||||||
|
collectionType,
|
||||||
|
params: { locale: currentDesiredLocale },
|
||||||
|
});
|
||||||
|
|
||||||
const availableLocales = locales.filter((locale) =>
|
const availableLocales = locales.filter((locale) =>
|
||||||
meta?.availableLocales.some((l) => l.locale === locale.code)
|
meta?.availableLocales.some((l) => l.locale === locale.code)
|
||||||
@ -503,7 +515,7 @@ const BulkLocalePublishAction: DocumentActionComponent = ({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
skip: !hasI18n,
|
skip: !hasI18n || !baseLocale,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -701,7 +713,7 @@ const BulkLocalePublishAction: DocumentActionComponent = ({
|
|||||||
defaultMessage: 'Publish Multiple Locales',
|
defaultMessage: 'Publish Multiple Locales',
|
||||||
}),
|
}),
|
||||||
icon: <ListPlus />,
|
icon: <ListPlus />,
|
||||||
disabled: isPublishedTab || canPublish.length === 0,
|
disabled: isPublishedTab || canPublish.length === 0 || !baseLocale,
|
||||||
position: ['panel'],
|
position: ['panel'],
|
||||||
variant: 'secondary',
|
variant: 'secondary',
|
||||||
dialog: {
|
dialog: {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user