61 lines
1.4 KiB
JavaScript

'use strict';
const _ = require('lodash');
const { isSortable } = require('./attributes');
const getDefaultMainField = schema =>
Object.keys(schema.attributes).find(
key => schema.attributes[key].type === 'string'
) || 'id';
/**
* Retunrs a configuration default settings
*/
async function createDefaultSettings(schema) {
const generalSettings = await strapi.plugins[
'content-manager'
].services.generalsettings.getGeneralSettings();
let defaultField = getDefaultMainField(schema);
return {
...generalSettings,
mainField: defaultField,
defaultSortBy: defaultField,
defaultSortOrder: 'ASC',
..._.pick(_.get(schema, ['config', 'settings'], {}), [
'searchable',
'filterable',
'bulkable',
'pageSize',
'mainField',
'defaultSortBy',
'defaultSortOrder',
]),
};
}
/** Synchronisation functions */
async function syncSettings(configuration, schema) {
if (_.isEmpty(configuration.settings)) return createDefaultSettings(schema);
let defaultField = getDefaultMainField(schema);
const { mainField = defaultField, defaultSortBy = defaultField } =
configuration.settings || {};
return {
...configuration.settings,
mainField: isSortable(schema, mainField) ? mainField : defaultField,
defaultSortBy: isSortable(schema, defaultSortBy)
? defaultSortBy
: defaultField,
};
}
module.exports = {
createDefaultSettings,
syncSettings,
};