dataverse-react
Version:
⚛️ hooks and components for Dataverse React development
32 lines (31 loc) • 1.83 kB
JavaScript
import { retrieveMultiple, WebApiConfig } from 'dataverse-webapi';
import React from 'react';
export const useTableMetadata = (utils, tableName) => {
const [metadata, setMetadata] = React.useState();
const config = new WebApiConfig('9.1');
React.useEffect(() => {
const getMetadata = async () => {
const results = await Promise.all([
retrieveMultiple(config, `EntityDefinitions(LogicalName='${tableName}')/Attributes`),
retrieveMultiple(config, `EntityDefinitions(LogicalName='${tableName}')/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?$select=LogicalName,DefaultFormValue&$expand=OptionSet`),
retrieveMultiple(config, `EntityDefinitions(LogicalName='${tableName}')/Attributes/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=LogicalName,DefaultValue&$expand=OptionSet`),
retrieveMultiple(config, `EntityDefinitions(LogicalName='${tableName}')/Attributes/Microsoft.Dynamics.CRM.StateAttributeMetadata?$select=LogicalName,DefaultFormValue&$expand=OptionSet`),
retrieveMultiple(config, `EntityDefinitions(LogicalName='${tableName}')/Attributes/Microsoft.Dynamics.CRM.StatusAttributeMetadata?$select=LogicalName,DefaultFormValue&$expand=OptionSet`),
utils.getEntityMetadata(tableName)
]);
const [attributes, optionSets, booleans, states, statuses, table] = results;
setMetadata({
table: table,
columns: attributes.value,
choices: optionSets.value,
booleans: booleans.value,
states: states.value,
statuses: statuses.value
});
};
if (tableName) {
getMetadata();
}
}, [tableName]);
return metadata;
};