node_modules ignore

This commit is contained in:
2025-05-08 23:43:47 +02:00
parent e19d52f172
commit 4574544c9f
65041 changed files with 10593536 additions and 0 deletions

View File

@@ -0,0 +1,166 @@
'use strict';
var React = require('react');
var strapiAdmin = require('@strapi/admin/strapi-admin');
var designSystem = require('@strapi/design-system');
var qs = require('qs');
var reactIntl = require('react-intl');
var collections = require('../constants/collections.js');
var hooks$1 = require('../constants/hooks.js');
var app = require('../modules/app.js');
var hooks = require('../modules/hooks.js');
var contentTypes = require('../services/contentTypes.js');
var init = require('../services/init.js');
var translations = require('../utils/translations.js');
const { MUTATE_COLLECTION_TYPES_LINKS, MUTATE_SINGLE_TYPES_LINKS } = hooks$1.HOOKS;
const useContentManagerInitData = ()=>{
const { toggleNotification } = strapiAdmin.useNotification();
const dispatch = hooks.useTypedDispatch();
const runHookWaterfall = strapiAdmin.useStrapiApp('useContentManagerInitData', (state)=>state.runHookWaterfall);
const { notifyStatus } = designSystem.useNotifyAT();
const { formatMessage } = reactIntl.useIntl();
const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler(translations.getTranslation);
const checkUserHasPermissions = strapiAdmin.useAuth('useContentManagerInitData', (state)=>state.checkUserHasPermissions);
const state = hooks.useTypedSelector((state)=>state['content-manager'].app);
const initialDataQuery = init.useGetInitialDataQuery(undefined, {
/**
* TODO: remove this when the CTB has been refactored to use redux-toolkit-query
* and it can invalidate the cache on mutation
*/ refetchOnMountOrArgChange: true
});
React.useEffect(()=>{
if (initialDataQuery.data) {
notifyStatus(formatMessage({
id: translations.getTranslation('App.schemas.data-loaded'),
defaultMessage: 'The schemas have been successfully loaded.'
}));
}
}, [
formatMessage,
initialDataQuery.data,
notifyStatus
]);
React.useEffect(()=>{
if (initialDataQuery.error) {
toggleNotification({
type: 'danger',
message: formatAPIError(initialDataQuery.error)
});
}
}, [
formatAPIError,
initialDataQuery.error,
toggleNotification
]);
const contentTypeSettingsQuery = contentTypes.useGetAllContentTypeSettingsQuery();
React.useEffect(()=>{
if (contentTypeSettingsQuery.error) {
toggleNotification({
type: 'danger',
message: formatAPIError(contentTypeSettingsQuery.error)
});
}
}, [
formatAPIError,
contentTypeSettingsQuery.error,
toggleNotification
]);
const formatData = async (components, contentTypes, fieldSizes, contentTypeConfigurations)=>{
/**
* We group these by the two types we support. We do with an object because we can use default
* values of arrays to make sure we always have an array to manipulate further on if, for example,
* a user has not made any single types.
*
* This means we have to manually add new content types to this hook if we add a new type but
* the safety is worth it.
*/ const { collectionType: collectionTypeLinks, singleType: singleTypeLinks } = contentTypes.reduce((acc, model)=>{
acc[model.kind].push(model);
return acc;
}, {
collectionType: [],
singleType: []
});
const collectionTypeSectionLinks = generateLinks(collectionTypeLinks, 'collectionTypes', contentTypeConfigurations);
const singleTypeSectionLinks = generateLinks(singleTypeLinks, 'singleTypes');
// Collection Types verifications
const collectionTypeLinksPermissions = await Promise.all(collectionTypeSectionLinks.map(({ permissions })=>checkUserHasPermissions(permissions)));
const authorizedCollectionTypeLinks = collectionTypeSectionLinks.filter((_, index)=>collectionTypeLinksPermissions[index].length > 0);
// Single Types verifications
const singleTypeLinksPermissions = await Promise.all(singleTypeSectionLinks.map(({ permissions })=>checkUserHasPermissions(permissions)));
const authorizedSingleTypeLinks = singleTypeSectionLinks.filter((_, index)=>singleTypeLinksPermissions[index].length > 0);
const { ctLinks } = runHookWaterfall(MUTATE_COLLECTION_TYPES_LINKS, {
ctLinks: authorizedCollectionTypeLinks,
models: contentTypes
});
const { stLinks } = runHookWaterfall(MUTATE_SINGLE_TYPES_LINKS, {
stLinks: authorizedSingleTypeLinks,
models: contentTypes
});
dispatch(app.setInitialData({
authorizedCollectionTypeLinks: ctLinks,
authorizedSingleTypeLinks: stLinks,
components,
contentTypeSchemas: contentTypes,
fieldSizes
}));
};
React.useEffect(()=>{
if (initialDataQuery.data && contentTypeSettingsQuery.data) {
formatData(initialDataQuery.data.components, initialDataQuery.data.contentTypes, initialDataQuery.data.fieldSizes, contentTypeSettingsQuery.data);
}
}, [
initialDataQuery.data,
contentTypeSettingsQuery.data
]);
return {
...state
};
};
const generateLinks = (links, type, configurations = [])=>{
return links.filter((link)=>link.isDisplayed).map((link)=>{
const collectionTypesPermissions = [
{
action: 'plugin::content-manager.explorer.create',
subject: link.uid
},
{
action: 'plugin::content-manager.explorer.read',
subject: link.uid
}
];
const singleTypesPermissions = [
{
action: 'plugin::content-manager.explorer.read',
subject: link.uid
}
];
const permissions = type === 'collectionTypes' ? collectionTypesPermissions : singleTypesPermissions;
const currentContentTypeConfig = configurations.find(({ uid })=>uid === link.uid);
let search = null;
if (currentContentTypeConfig) {
const searchParams = {
page: 1,
pageSize: currentContentTypeConfig.settings.pageSize,
sort: `${currentContentTypeConfig.settings.defaultSortBy}:${currentContentTypeConfig.settings.defaultSortOrder}`
};
search = qs.stringify(searchParams, {
encode: false
});
}
return {
permissions,
search,
kind: link.kind,
title: link.info.displayName,
to: `/content-manager/${link.kind === 'collectionType' ? collections.COLLECTION_TYPES : collections.SINGLE_TYPES}/${link.uid}`,
uid: link.uid,
// Used for the list item key in the helper plugin
name: link.uid,
isDisplayed: link.isDisplayed
};
});
};
exports.useContentManagerInitData = useContentManagerInitData;
//# sourceMappingURL=useContentManagerInitData.js.map