diff --git a/lib/graphql/resolvers.js b/lib/graphql/resolvers.js index 4b7d41a4..d574565b 100644 --- a/lib/graphql/resolvers.js +++ b/lib/graphql/resolvers.js @@ -1,4 +1,3 @@ -const { GraphQLJSONObject } = require('graphql-type-json') const _ = require('lodash/fp') const nmd = require('nano-markdown') @@ -296,7 +295,6 @@ const terms = (parent, { currentConfigVersion, currentHash }, { deviceId, settin module.exports = { - JSONObject: GraphQLJSONObject, Query: { configs, terms, diff --git a/lib/graphql/types.js b/lib/graphql/types.js index 1a59fea2..49fb64bb 100644 --- a/lib/graphql/types.js +++ b/lib/graphql/types.js @@ -1,7 +1,5 @@ const { gql } = require('apollo-server-express') module.exports = gql` -scalar JSONObject - type Coin { cryptoCode: String! display: String! @@ -51,6 +49,21 @@ type SpeedtestFile { size: Int! } +# True if automatic, False otherwise +type TriggersAutomation { + sanctions: Boolean! + idCardPhoto: Boolean! + idCardData: Boolean! + facephoto: Boolean! + usSsn: Boolean! + custom: [CustomTriggersAutomation] +} + +type CustomTriggersAutomation { + id: ID! + type: String! +} + type CustomScreen { text: String! title: String! @@ -122,7 +135,7 @@ type StaticConfig { speedtestFiles: [SpeedtestFile!]! urlsToPing: [String!]! - triggersAutomation: JSONObject! + triggersAutomation: TriggersAutomation! triggers: [Trigger!]! } diff --git a/lib/new-config-manager.js b/lib/new-config-manager.js index 8428d6a6..978f1bed 100644 --- a/lib/new-config-manager.js +++ b/lib/new-config-manager.js @@ -1,4 +1,5 @@ const _ = require('lodash/fp') +const { validate } = require('uuid') const namespaces = { ADVANCED: 'advanced', @@ -126,17 +127,23 @@ const getTriggersAutomation = (customInfoRequests, config) => { idCardPhoto: defaultAutomation, idCardData: defaultAutomation, facephoto: defaultAutomation, - usSsn: defaultAutomation + usSsn: defaultAutomation, + custom: [] } _.forEach(it => { - requirements[it.id] = defaultAutomation + requirements.custom.push({ id: it.id, type: defaultAutomation }) }, infoRequests) const overrides = _.get('triggersConfig_overrides')(config) const requirementsOverrides = _.reduce((acc, override) => { - return _.assign(acc, { [override.requirement]: override.automation }) + return _.assign( + acc, + !validate(override.requirement) + ? { [override.requirement]: override.automation } + : { custom: [...acc.custom ?? [], { id: override.requirement, type: override.automation }] } + ) }, {}, overrides) return _.assign(requirements, requirementsOverrides)