strapi-plugin-content-manager
Version:
A powerful UI to easily manage your data.
74 lines (54 loc) • 1.98 kB
JavaScript
const { isNil, mapValues } = require('lodash/fp');
const { contentTypes: contentTypesUtils } = require('strapi-utils');
const { getService } = require('../utils');
const storeUtils = require('./utils/store');
const createConfigurationService = require('./configuration');
const configurationService = createConfigurationService({
storeUtils,
prefix: 'content_types',
getModels() {
const { toContentManagerModel } = getService('data-mapper');
return mapValues(toContentManagerModel, strapi.contentTypes);
},
});
const service = {
findAllContentTypes() {
const { toContentManagerModel } = getService('data-mapper');
return Object.values(strapi.contentTypes).map(toContentManagerModel);
},
findContentType(uid) {
const { toContentManagerModel } = getService('data-mapper');
const contentType = strapi.contentTypes[uid];
return isNil(contentType) ? contentType : toContentManagerModel(contentType);
},
findDisplayedContentTypes() {
return this.findAllContentTypes().filter(({ isDisplayed }) => isDisplayed === true);
},
findContentTypesByKind(kind) {
if (!kind) {
return this.findAllContentTypes();
}
return this.findAllContentTypes().filter(contentTypesUtils.isKind(kind));
},
// configuration
async findConfiguration(contentType) {
const configuration = await configurationService.getConfiguration(contentType.uid);
return {
uid: contentType.uid,
...configuration,
};
},
async updateConfiguration(contentType, newConfiguration) {
await configurationService.setConfiguration(contentType.uid, newConfiguration);
return this.findConfiguration(contentType);
},
findComponentsConfigurations(contentType) {
// delegate to componentService
return getService('components').findComponentsConfigurations(contentType);
},
syncConfigurations() {
return configurationService.syncConfigurations();
},
};
module.exports = service;
;