@mindful-web/marko-web-identity-x 1.87.0 → 1.87.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.0/components/access.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.1/components/access.marko",
6
6
  marko_component = require("./access.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_objectPath_module = require("@mindful-web/object-path"),
@@ -53,7 +53,7 @@ marko_template._ = marko_renderer(render, {
53
53
  }, marko_component);
54
54
 
55
55
  marko_template.meta = {
56
- id: "/@mindful-web/marko-web-identity-x$1.87.0/components/access.marko",
56
+ id: "/@mindful-web/marko-web-identity-x$1.87.1/components/access.marko",
57
57
  component: "./access.marko",
58
58
  tags: [
59
59
  "@mindful-web/marko-core/components/resolve.marko"
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.0/components/comment-stream.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.1/components/comment-stream.marko",
6
6
  marko_component = require("./comment-stream.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_objectPath_module = require("@mindful-web/object-path"),
@@ -91,7 +91,7 @@ marko_template._ = marko_renderer(render, {
91
91
  }, marko_component);
92
92
 
93
93
  marko_template.meta = {
94
- id: "/@mindful-web/marko-web-identity-x$1.87.0/components/comment-stream.marko",
94
+ id: "/@mindful-web/marko-web-identity-x$1.87.1/components/comment-stream.marko",
95
95
  component: "./comment-stream.marko",
96
96
  tags: [
97
97
  "@mindful-web/marko-web/components/browser-component.marko",
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.0/components/context.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.1/components/context.marko",
6
6
  marko_component = require("./context.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  marko_dynamicTag = require("marko/dist/runtime/helpers/dynamic-tag"),
@@ -49,7 +49,7 @@ marko_template._ = marko_renderer(render, {
49
49
  }, marko_component);
50
50
 
51
51
  marko_template.meta = {
52
- id: "/@mindful-web/marko-web-identity-x$1.87.0/components/context.marko",
52
+ id: "/@mindful-web/marko-web-identity-x$1.87.1/components/context.marko",
53
53
  component: "./context.marko",
54
54
  tags: [
55
55
  "@mindful-web/marko-core/components/resolve.marko"
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.0/components/form-access.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.1/components/form-access.marko",
6
6
  marko_component = require("./form-access.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_defaultValue = require("@mindful-web/marko-core/utils/default-value"),
@@ -179,7 +179,7 @@ marko_template._ = marko_renderer(render, {
179
179
  }, marko_component);
180
180
 
181
181
  marko_template.meta = {
182
- id: "/@mindful-web/marko-web-identity-x$1.87.0/components/form-access.marko",
182
+ id: "/@mindful-web/marko-web-identity-x$1.87.1/components/form-access.marko",
183
183
  component: "./form-access.marko",
184
184
  tags: [
185
185
  "@mindful-web/marko-web/components/browser-component.marko",
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.0/components/form-authenticate.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.1/components/form-authenticate.marko",
6
6
  marko_component = require("./form-authenticate.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_objectPath_module = require("@mindful-web/object-path"),
@@ -81,7 +81,7 @@ marko_template._ = marko_renderer(render, {
81
81
  }, marko_component);
82
82
 
83
83
  marko_template.meta = {
84
- id: "/@mindful-web/marko-web-identity-x$1.87.0/components/form-authenticate.marko",
84
+ id: "/@mindful-web/marko-web-identity-x$1.87.1/components/form-authenticate.marko",
85
85
  component: "./form-authenticate.marko",
86
86
  tags: [
87
87
  "@mindful-web/marko-web/components/browser-component.marko",
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.0/components/form-change-email.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.1/components/form-change-email.marko",
6
6
  marko_component = require("./form-change-email.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_objectPath_module = require("@mindful-web/object-path"),
@@ -59,7 +59,7 @@ marko_template._ = marko_renderer(render, {
59
59
  }, marko_component);
60
60
 
61
61
  marko_template.meta = {
62
- id: "/@mindful-web/marko-web-identity-x$1.87.0/components/form-change-email.marko",
62
+ id: "/@mindful-web/marko-web-identity-x$1.87.1/components/form-change-email.marko",
63
63
  component: "./form-change-email.marko",
64
64
  tags: [
65
65
  "@mindful-web/marko-web/components/browser-component.marko",
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.0/components/form-login.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.1/components/form-login.marko",
6
6
  marko_component = require("./form-login.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_objectPath_module = require("@mindful-web/object-path"),
@@ -92,7 +92,7 @@ marko_template._ = marko_renderer(render, {
92
92
  }, marko_component);
93
93
 
94
94
  marko_template.meta = {
95
- id: "/@mindful-web/marko-web-identity-x$1.87.0/components/form-login.marko",
95
+ id: "/@mindful-web/marko-web-identity-x$1.87.1/components/form-login.marko",
96
96
  component: "./form-login.marko",
97
97
  tags: [
98
98
  "@mindful-web/marko-web/components/browser-component.marko",
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.0/components/form-logout.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.1/components/form-logout.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  module_defaultValue = require("@mindful-web/marko-core/utils/default-value"),
8
8
  defaultValue = module_defaultValue.default || module_defaultValue,
@@ -29,7 +29,7 @@ marko_template._ = marko_renderer(render, {
29
29
  });
30
30
 
31
31
  marko_template.meta = {
32
- id: "/@mindful-web/marko-web-identity-x$1.87.0/components/form-logout.marko",
32
+ id: "/@mindful-web/marko-web-identity-x$1.87.1/components/form-logout.marko",
33
33
  tags: [
34
34
  "@mindful-web/marko-web/components/browser-component.marko"
35
35
  ]
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.0/components/form-profile.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.1/components/form-profile.marko",
6
6
  marko_component = require("./form-profile.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_objectPath_module = require("@mindful-web/object-path"),
@@ -84,7 +84,7 @@ marko_template._ = marko_renderer(render, {
84
84
  }, marko_component);
85
85
 
86
86
  marko_template.meta = {
87
- id: "/@mindful-web/marko-web-identity-x$1.87.0/components/form-profile.marko",
87
+ id: "/@mindful-web/marko-web-identity-x$1.87.1/components/form-profile.marko",
88
88
  component: "./form-profile.marko",
89
89
  tags: [
90
90
  "@mindful-web/marko-web/components/browser-component.marko",
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.0/components/form-register.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.1/components/form-register.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  marko_assign = require("marko/dist/runtime/helpers/assign"),
8
8
  marko_web_identity_x_form_login_template = require("./form-login.marko"),
@@ -25,7 +25,7 @@ marko_template._ = marko_renderer(render, {
25
25
  });
26
26
 
27
27
  marko_template.meta = {
28
- id: "/@mindful-web/marko-web-identity-x$1.87.0/components/form-register.marko",
28
+ id: "/@mindful-web/marko-web-identity-x$1.87.1/components/form-register.marko",
29
29
  tags: [
30
30
  "./form-login.marko"
31
31
  ]
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.0/components/google-init.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.1/components/google-init.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  marko_attr = require("marko/dist/runtime/html/helpers/attr"),
8
8
  marko_str = require("marko/dist/runtime/helpers/to-string");
@@ -239,5 +239,5 @@ marko_template._ = marko_renderer(render, {
239
239
  });
240
240
 
241
241
  marko_template.meta = {
242
- id: "/@mindful-web/marko-web-identity-x$1.87.0/components/google-init.marko"
242
+ id: "/@mindful-web/marko-web-identity-x$1.87.1/components/google-init.marko"
243
243
  };
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.0/components/google-sign-in-button.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.1/components/google-sign-in-button.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  helpers_escape_xml = require("marko/dist/runtime/html/helpers/escape-xml"),
8
8
  marko_escapeXml = helpers_escape_xml.x,
@@ -40,5 +40,5 @@ marko_template._ = marko_renderer(render, {
40
40
  });
41
41
 
42
42
  marko_template.meta = {
43
- id: "/@mindful-web/marko-web-identity-x$1.87.0/components/google-sign-in-button.marko"
43
+ id: "/@mindful-web/marko-web-identity-x$1.87.1/components/google-sign-in-button.marko"
44
44
  };
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.0/components/identify.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.1/components/identify.marko",
6
6
  marko_component = require("./identify.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_objectPath_module = require("@mindful-web/object-path"),
@@ -50,7 +50,7 @@ marko_template._ = marko_renderer(render, {
50
50
  }, marko_component);
51
51
 
52
52
  marko_template.meta = {
53
- id: "/@mindful-web/marko-web-identity-x$1.87.0/components/identify.marko",
53
+ id: "/@mindful-web/marko-web-identity-x$1.87.1/components/identify.marko",
54
54
  component: "./identify.marko",
55
55
  tags: [
56
56
  "@mindful-web/marko-web-gtm/components/push.marko",
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.0/components/non-auth-identify.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.1/components/non-auth-identify.marko",
6
6
  marko_component = require("./non-auth-identify.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  marko_dynamicTag = require("marko/dist/runtime/helpers/dynamic-tag"),
@@ -45,7 +45,7 @@ marko_template._ = marko_renderer(render, {
45
45
  }, marko_component);
46
46
 
47
47
  marko_template.meta = {
48
- id: "/@mindful-web/marko-web-identity-x$1.87.0/components/non-auth-identify.marko",
48
+ id: "/@mindful-web/marko-web-identity-x$1.87.1/components/non-auth-identify.marko",
49
49
  component: "./non-auth-identify.marko",
50
50
  tags: [
51
51
  "@mindful-web/marko-core/components/resolve.marko"
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.0/components/progressive-profile-form.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.1/components/progressive-profile-form.marko",
6
6
  marko_component = require("./progressive-profile-form.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_defaultValue = require("@mindful-web/marko-core/utils/default-value"),
@@ -137,7 +137,7 @@ marko_template._ = marko_renderer(render, {
137
137
  }, marko_component);
138
138
 
139
139
  marko_template.meta = {
140
- id: "/@mindful-web/marko-web-identity-x$1.87.0/components/progressive-profile-form.marko",
140
+ id: "/@mindful-web/marko-web-identity-x$1.87.1/components/progressive-profile-form.marko",
141
141
  component: "./progressive-profile-form.marko",
142
142
  tags: [
143
143
  "@mindful-web/marko-web/components/browser-component.marko",
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.0/components/subscribe.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.87.1/components/subscribe.marko",
6
6
  marko_component = require("./subscribe.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_objectPath_module = require("@mindful-web/object-path"),
@@ -73,7 +73,7 @@ marko_template._ = marko_renderer(render, {
73
73
  }, marko_component);
74
74
 
75
75
  marko_template.meta = {
76
- id: "/@mindful-web/marko-web-identity-x$1.87.0/components/subscribe.marko",
76
+ id: "/@mindful-web/marko-web-identity-x$1.87.1/components/subscribe.marko",
77
77
  component: "./subscribe.marko",
78
78
  tags: [
79
79
  "@mindful-web/marko-web/components/browser-component.marko",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindful-web/marko-web-identity-x",
3
- "version": "1.87.0",
3
+ "version": "1.87.1",
4
4
  "description": "Marko Wrapper for IdentityX",
5
5
  "repository": "https://github.com/parameter1/mindful-web/tree/main/packages/marko-web-identity-x",
6
6
  "author": "Josh Worden <josh@parameter1.com>",
@@ -43,5 +43,5 @@
43
43
  "chai": "^4.3.7",
44
44
  "mocha": "^6.2.3"
45
45
  },
46
- "gitHead": "ff4b26653f19375680d94b56997484a7dab24f05"
46
+ "gitHead": "c9fef30dc3d3dbf2c538e3850fae61f629b8791d"
47
47
  }
package/routes/profile.js CHANGED
@@ -3,6 +3,7 @@ const { asyncRoute } = require('@mindful-web/utils');
3
3
  const { getAsArray, getAsObject } = require('@mindful-web/object-path');
4
4
  const userFragment = require('../api/fragments/active-user');
5
5
  const callHooksFor = require('../utils/call-hooks-for');
6
+ const overlaySubmittedBooleanAnswers = require('../utils/overlay-submitted-boolean-answers');
6
7
 
7
8
  const mutation = gql`
8
9
  mutation UpdateUserProfile($input: UpdateOwnAppUserMutationInput!) {
@@ -119,6 +120,10 @@ module.exports = asyncRoute(async (req, res) => {
119
120
  // syncs (Omeda rapid-identify) scope their answer payload to what the form displayed — stored
120
121
  // answers for fields this form never rendered must not be rebroadcast as writes.
121
122
  const submittedFieldIds = [];
123
+ // The boolean values this request submitted, by field id — overlaid onto the refreshed user
124
+ // before the hooks fire (see overlaySubmittedBooleanAnswers for the one-save-behind race this
125
+ // guards against).
126
+ const submittedBooleanValues = new Map();
122
127
 
123
128
  if (customBooleanFieldAnswers.length) {
124
129
  // only update custom questions when there some :)
@@ -133,6 +138,9 @@ module.exports = asyncRoute(async (req, res) => {
133
138
  : () => true,
134
139
  );
135
140
  submittedFieldIds.push(...customBooleanFieldsInput.map(({ fieldId }) => fieldId));
141
+ customBooleanFieldsInput.forEach(({ fieldId, value }) => {
142
+ submittedBooleanValues.set(fieldId, value);
143
+ });
136
144
  await identityX.client.mutate({
137
145
  mutation: customBooleanFieldsMutation,
138
146
  variables: { input: { answers: customBooleanFieldsInput } },
@@ -184,7 +192,11 @@ module.exports = asyncRoute(async (req, res) => {
184
192
  additionalEventData,
185
193
  ...(additionalEventData || {}),
186
194
  req,
187
- user,
195
+ // The refreshed user can carry PRE-save channel checkbox answers (they resolve from the
196
+ // member doc's embedded subscription copy, which materializes asynchronously) — so the
197
+ // values this request submitted are overlaid, ensuring provider hooks push what the user
198
+ // just said rather than unsubscribing them with their own stale state.
199
+ user: overlaySubmittedBooleanAnswers(user, submittedBooleanValues),
188
200
  submittedFieldIds,
189
201
  });
190
202
  const entity = await identityX.generateEntityId({ userId: user.id });
@@ -0,0 +1,52 @@
1
+ const { describe, it } = require('mocha');
2
+ const { expect } = require('chai');
3
+ const overlay = require('../../utils/overlay-submitted-boolean-answers');
4
+
5
+ const answer = ({ id, value, hasAnswered = true }) => ({
6
+ id: `ans-${id}`,
7
+ hasAnswered,
8
+ answer: value,
9
+ value,
10
+ field: { id, active: true },
11
+ });
12
+
13
+ describe('utils/overlay-submitted-boolean-answers', () => {
14
+ it('replaces a stale answer with the submitted value (the one-save-behind race)', () => {
15
+ // The member checked the box; the refreshed user still carries the pre-save `false`.
16
+ const user = {
17
+ email: 'x@y.com',
18
+ customBooleanFieldAnswers: [answer({ id: 'chan-mag', value: false })],
19
+ };
20
+ const out = overlay(user, new Map([['chan-mag', true]]));
21
+ expect(out.customBooleanFieldAnswers[0])
22
+ .to.include({ answer: true, value: true, hasAnswered: true });
23
+ });
24
+
25
+ it('answers a previously-unanswered field the request submitted', () => {
26
+ const unanswered = { field: { id: 'chan-new', active: true } };
27
+ const user = { customBooleanFieldAnswers: [unanswered] };
28
+ const out = overlay(user, new Map([['chan-new', false]]));
29
+ expect(out.customBooleanFieldAnswers[0])
30
+ .to.include({ answer: false, value: false, hasAnswered: true });
31
+ });
32
+
33
+ it('leaves answers for fields the request did not submit untouched', () => {
34
+ const untouched = answer({ id: 'other', value: true });
35
+ const user = { customBooleanFieldAnswers: [untouched, answer({ id: 'chan-mag', value: false })] };
36
+ const out = overlay(user, new Map([['chan-mag', true]]));
37
+ expect(out.customBooleanFieldAnswers[0]).to.equal(untouched);
38
+ });
39
+
40
+ it('returns the same user when nothing was submitted', () => {
41
+ const user = { customBooleanFieldAnswers: [answer({ id: 'a', value: true })] };
42
+ expect(overlay(user, new Map())).to.equal(user);
43
+ expect(overlay(user, undefined)).to.equal(user);
44
+ expect(overlay(null, new Map([['a', true]]))).to.equal(null);
45
+ });
46
+
47
+ it('does not mutate the original user', () => {
48
+ const user = { customBooleanFieldAnswers: [answer({ id: 'chan-mag', value: false })] };
49
+ overlay(user, new Map([['chan-mag', true]]));
50
+ expect(user.customBooleanFieldAnswers[0].answer).to.equal(false);
51
+ });
52
+ });
@@ -0,0 +1,37 @@
1
+ const { getAsArray } = require('@mindful-web/object-path');
2
+
3
+ /**
4
+ * Returns a copy of the user whose `customBooleanFieldAnswers` reflect the values THIS request
5
+ * submitted, overriding whatever the refreshed user carries for those fields.
6
+ *
7
+ * Why this exists (the one-save-behind race, proven live 2026-08-25 on athleticbusiness):
8
+ * channel checkbox writes land in the audience `subscriptions` COLLECTION, but the boolean
9
+ * answers on a fetched user resolve from the member document's EMBEDDED subscription copy,
10
+ * which only catches up via an async materialization queue. So the user returned by the
11
+ * profile route's final mutation can still carry the PRE-save checkbox state — idx stored
12
+ * `true` while the provider hook pushed `Receive: 0` to Omeda one second later. Overlaying the
13
+ * submitted values means provider syncs push what the user just said, not what the
14
+ * materializer has caught up to.
15
+ *
16
+ * @param {object} user The (possibly stale) user returned after the save.
17
+ * @param {Map<string, boolean>} submittedValues field id -> submitted boolean value.
18
+ * @returns {object} The user, with submitted boolean answers overlaid. Same reference when
19
+ * nothing was submitted.
20
+ */
21
+ module.exports = (user, submittedValues) => {
22
+ if (!user || !submittedValues || !submittedValues.size) return user;
23
+ return {
24
+ ...user,
25
+ customBooleanFieldAnswers: getAsArray(user, 'customBooleanFieldAnswers').map((ans) => {
26
+ const fieldId = ans && ans.field && ans.field.id;
27
+ if (!fieldId || !submittedValues.has(fieldId)) return ans;
28
+ const value = Boolean(submittedValues.get(fieldId));
29
+ return {
30
+ ...ans,
31
+ answer: value,
32
+ value,
33
+ hasAnswered: true,
34
+ };
35
+ }),
36
+ };
37
+ };