49 lines
905 B
JavaScript
49 lines
905 B
JavaScript
import { useContext, useState, useEffect } from '@wordpress/element'
|
|
import { ConditionsDataContext } from '../ConditionsManager'
|
|
|
|
const useConditionsData = (condition = null) => {
|
|
const { isAdvancedMode, remoteConditions, allLanguages } = useContext(
|
|
ConditionsDataContext
|
|
)
|
|
|
|
let rulesToUse = remoteConditions
|
|
|
|
const allRules = rulesToUse
|
|
.reduce(
|
|
(current, { rules, title }) => [
|
|
...current,
|
|
...rules.map((r) => ({
|
|
...r,
|
|
group: title,
|
|
})),
|
|
],
|
|
[]
|
|
)
|
|
.reduce(
|
|
(current, { title, id, sub_ids = [], ...rest }) => [
|
|
...current,
|
|
{
|
|
key:
|
|
condition &&
|
|
sub_ids.length > 0 &&
|
|
sub_ids.find((i) => i.id === condition.rule)
|
|
? condition.rule
|
|
: id,
|
|
value: title,
|
|
sub_ids,
|
|
...rest,
|
|
},
|
|
],
|
|
[]
|
|
)
|
|
|
|
return {
|
|
isAdvancedMode,
|
|
allRules,
|
|
rulesToUse,
|
|
allLanguages,
|
|
}
|
|
}
|
|
|
|
export default useConditionsData
|