UNPKG

dataverse-react

Version:

⚛️ hooks and components for Dataverse React development

32 lines (31 loc) 1.83 kB
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; };