@beinformed/ui 1.14.5 → 1.16.0

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.
Files changed (66) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/esm/hooks/index.js +1 -0
  3. package/esm/hooks/index.js.map +1 -1
  4. package/esm/hooks/useAllFormsOnModel.js +110 -0
  5. package/esm/hooks/useAllFormsOnModel.js.map +1 -0
  6. package/esm/hooks/useAuthentication.js +4 -1
  7. package/esm/hooks/useAuthentication.js.map +1 -1
  8. package/esm/models/attributes/AttributeContent.js +4 -4
  9. package/esm/models/attributes/AttributeContent.js.map +1 -1
  10. package/esm/redux/actions/FormAttributeSet.js +4 -0
  11. package/esm/redux/actions/FormAttributeSet.js.map +1 -1
  12. package/esm/redux/actions/SignIn.js +9 -0
  13. package/esm/redux/actions/SignIn.js.map +1 -1
  14. package/esm/redux/reducers/AuthReducer.js +5 -0
  15. package/esm/redux/reducers/AuthReducer.js.map +1 -1
  16. package/esm/utils/helpers/checkResource.js +43 -0
  17. package/esm/utils/helpers/checkResource.js.map +1 -0
  18. package/esm/utils/index.js +1 -1
  19. package/esm/utils/index.js.map +1 -1
  20. package/lib/hooks/index.js +13 -0
  21. package/lib/hooks/index.js.flow +1 -0
  22. package/lib/hooks/index.js.map +1 -1
  23. package/lib/hooks/useAllFormsOnModel.js +131 -0
  24. package/lib/hooks/useAllFormsOnModel.js.flow +92 -0
  25. package/lib/hooks/useAllFormsOnModel.js.map +1 -0
  26. package/lib/hooks/useAuthentication.js +3 -0
  27. package/lib/hooks/useAuthentication.js.flow +7 -5
  28. package/lib/hooks/useAuthentication.js.map +1 -1
  29. package/lib/models/attributes/AttributeContent.js +4 -4
  30. package/lib/models/attributes/AttributeContent.js.flow +3 -3
  31. package/lib/models/attributes/AttributeContent.js.map +1 -1
  32. package/lib/redux/actions/FormAttributeSet.js +4 -0
  33. package/lib/redux/actions/FormAttributeSet.js.flow +7 -2
  34. package/lib/redux/actions/FormAttributeSet.js.map +1 -1
  35. package/lib/redux/actions/SignIn.js +14 -2
  36. package/lib/redux/actions/SignIn.js.flow +8 -0
  37. package/lib/redux/actions/SignIn.js.map +1 -1
  38. package/lib/redux/reducers/AuthReducer.js +5 -0
  39. package/lib/redux/reducers/AuthReducer.js.flow +3 -0
  40. package/lib/redux/reducers/AuthReducer.js.map +1 -1
  41. package/lib/redux/reducers/__tests__/AuthReducer.spec.js.flow +52 -13
  42. package/lib/redux/types.js.flow +6 -1
  43. package/lib/utils/helpers/__tests__/checkResource.spec.js.flow +56 -0
  44. package/lib/utils/helpers/checkResource.js +57 -0
  45. package/{src/utils/helpers/checkResourceExists.js → lib/utils/helpers/checkResource.js.flow} +19 -0
  46. package/lib/utils/helpers/checkResource.js.map +1 -0
  47. package/lib/utils/index.js +4 -4
  48. package/lib/utils/index.js.flow +1 -1
  49. package/lib/utils/index.js.map +1 -1
  50. package/package.json +9 -9
  51. package/src/hooks/index.js +1 -0
  52. package/src/hooks/useAllFormsOnModel.js +92 -0
  53. package/src/hooks/useAuthentication.js +7 -5
  54. package/src/models/attributes/AttributeContent.js +3 -3
  55. package/src/redux/actions/FormAttributeSet.js +7 -2
  56. package/src/redux/actions/SignIn.js +8 -0
  57. package/src/redux/reducers/AuthReducer.js +3 -0
  58. package/src/redux/reducers/__tests__/AuthReducer.spec.js +52 -13
  59. package/src/redux/types.js +6 -1
  60. package/src/utils/helpers/__tests__/checkResource.spec.js +56 -0
  61. package/{lib/utils/helpers/checkResourceExists.js.flow → src/utils/helpers/checkResource.js} +19 -0
  62. package/src/utils/index.js +1 -1
  63. package/esm/utils/helpers/checkResourceExists.js +0 -23
  64. package/esm/utils/helpers/checkResourceExists.js.map +0 -1
  65. package/lib/utils/helpers/checkResourceExists.js +0 -34
  66. package/lib/utils/helpers/checkResourceExists.js.map +0 -1
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useRetrieveFormsOnModel = void 0;
9
+
10
+ var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
11
+
12
+ var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
13
+
14
+ var _assign = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/assign"));
15
+
16
+ var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
17
+
18
+ var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
19
+
20
+ var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
21
+
22
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/toConsumableArray"));
23
+
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
25
+
26
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
27
+
28
+ var _react = require("react");
29
+
30
+ var _useModularUIRequest = require("./useModularUIRequest");
31
+
32
+ var _constants = require("../constants");
33
+
34
+ var _ListModel = _interopRequireDefault(require("../models/list/ListModel"));
35
+
36
+ var _FormModel = _interopRequireDefault(require("../models/form/FormModel"));
37
+
38
+ /**
39
+ * Retrieve all forms configured on a model with actions
40
+ * @param model
41
+ * @returns Object - { actionName: FormModel }
42
+ */
43
+ var useRetrieveFormsOnModel = function useRetrieveFormsOnModel(model) {
44
+ var modularui = (0, _useModularUIRequest.useModularUIRequest)();
45
+
46
+ var _useState = (0, _react.useState)(null),
47
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
48
+ forms = _useState2[0],
49
+ setForms = _useState2[1];
50
+
51
+ var _useState3 = (0, _react.useState)(0),
52
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
53
+ requestCount = _useState4[0],
54
+ setRequestCount = _useState4[1];
55
+
56
+ var _useState5 = (0, _react.useState)(0),
57
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
58
+ responseCount = _useState6[0],
59
+ setResponseCount = _useState6[1];
60
+
61
+ (0, _react.useEffect)(function () {
62
+ var _context;
63
+
64
+ var requests = (0, _map.default)(_context = getActions(model)).call(_context, function (action) {
65
+ var href = action.selfhref.addParameter("commit", "false");
66
+ return modularui(href, {
67
+ method: _constants.HTTP_METHODS.POST
68
+ }).fetch().then(function (form) {
69
+ if (form instanceof _FormModel.default) {
70
+ form.tokens = [];
71
+ }
72
+
73
+ return (0, _defineProperty2.default)({}, action.name, form);
74
+ });
75
+ });
76
+ setRequestCount(requests.length);
77
+
78
+ _promise.default.all(requests).then(function (responses) {
79
+ var _context2;
80
+
81
+ // put response array in object
82
+ var actionForms = _assign.default.apply(Object, (0, _concat.default)(_context2 = [{}]).call(_context2, (0, _toConsumableArray2.default)(responses)));
83
+
84
+ setForms(actionForms);
85
+ setResponseCount(responses.length);
86
+ });
87
+ }, [model, modularui]);
88
+
89
+ if (responseCount === requestCount) {
90
+ return forms;
91
+ }
92
+
93
+ return null;
94
+ };
95
+
96
+ exports.useRetrieveFormsOnModel = useRetrieveFormsOnModel;
97
+
98
+ var getActions = function getActions(model) {
99
+ var _context3;
100
+
101
+ if (!model.actionCollection) {
102
+ return [];
103
+ }
104
+
105
+ var createActions = (0, _filter.default)(_context3 = model.actionCollection.getActionsByType("create")).call(_context3, function (action) {
106
+ return !action.isDisabled;
107
+ });
108
+ var allActions = (0, _toConsumableArray2.default)(createActions);
109
+
110
+ if (model instanceof _ListModel.default) {
111
+ model.listItemCollection.forEach(function (listItem) {
112
+ var _context4;
113
+
114
+ var updateActions = (0, _filter.default)(_context4 = listItem.actionCollection.getActionsByType("update")).call(_context4, function (action) {
115
+ return !action.isDisabled;
116
+ });
117
+ allActions.push.apply(allActions, (0, _toConsumableArray2.default)(updateActions));
118
+ });
119
+ }
120
+
121
+ var actions = [];
122
+ var unique = [];
123
+ allActions.forEach(function (action) {
124
+ if (!(0, _includes.default)(unique).call(unique, action.name)) {
125
+ unique.push(action.name);
126
+ actions.push(action);
127
+ }
128
+ });
129
+ return actions;
130
+ };
131
+ //# sourceMappingURL=useAllFormsOnModel.js.map
@@ -0,0 +1,92 @@
1
+ // @flow
2
+ import { useState, useEffect } from "react";
3
+
4
+ import { useModularUIRequest } from "./useModularUIRequest";
5
+
6
+ import { HTTP_METHODS } from "../constants";
7
+
8
+ import ListModel from "../models/list/ListModel";
9
+ import FormModel from "../models/form/FormModel";
10
+
11
+ import type DetailModel from "../models/detail/DetailModel";
12
+ import type TabModel from "../models/tab/TabModel";
13
+ import type ActionModel from "../models/actions/ActionModel";
14
+
15
+ /**
16
+ * Retrieve all forms configured on a model with actions
17
+ * @param model
18
+ * @returns Object - { actionName: FormModel }
19
+ */
20
+ export const useRetrieveFormsOnModel = (
21
+ model: ListModel | DetailModel | TabModel
22
+ ): null | { [actionName: string]: FormModel } => {
23
+ const modularui = useModularUIRequest();
24
+ const [forms, setForms] = useState(null);
25
+ const [requestCount, setRequestCount] = useState(0);
26
+ const [responseCount, setResponseCount] = useState(0);
27
+
28
+ useEffect(() => {
29
+ const requests = getActions(model).map((action) => {
30
+ const href = action.selfhref.addParameter("commit", "false");
31
+
32
+ return modularui(href, { method: HTTP_METHODS.POST })
33
+ .fetch()
34
+ .then((form) => {
35
+ if (form instanceof FormModel) {
36
+ form.tokens = [];
37
+ }
38
+ return { [action.name]: form };
39
+ });
40
+ });
41
+
42
+ setRequestCount(requests.length);
43
+
44
+ Promise.all(requests).then((responses) => {
45
+ // put response array in object
46
+ const actionForms = Object.assign({}, ...responses);
47
+ setForms(actionForms);
48
+ setResponseCount(responses.length);
49
+ });
50
+ }, [model, modularui]);
51
+
52
+ if (responseCount === requestCount) {
53
+ return forms;
54
+ }
55
+
56
+ return null;
57
+ };
58
+
59
+ const getActions = (
60
+ model: ListModel | DetailModel | TabModel
61
+ ): Array<ActionModel> => {
62
+ if (!model.actionCollection) {
63
+ return [];
64
+ }
65
+
66
+ const createActions = model.actionCollection
67
+ .getActionsByType("create")
68
+ .filter((action) => !action.isDisabled);
69
+
70
+ const allActions = [...createActions];
71
+
72
+ if (model instanceof ListModel) {
73
+ model.listItemCollection.forEach((listItem) => {
74
+ const updateActions = listItem.actionCollection
75
+ .getActionsByType("update")
76
+ .filter((action) => !action.isDisabled);
77
+
78
+ allActions.push(...updateActions);
79
+ });
80
+ }
81
+
82
+ const actions = [];
83
+ const unique = [];
84
+ allActions.forEach((action) => {
85
+ if (!unique.includes(action.name)) {
86
+ unique.push(action.name);
87
+ actions.push(action);
88
+ }
89
+ });
90
+
91
+ return actions;
92
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useAllFormsOnModel.js"],"names":["useRetrieveFormsOnModel","model","modularui","forms","setForms","requestCount","setRequestCount","responseCount","setResponseCount","requests","getActions","action","href","selfhref","addParameter","method","HTTP_METHODS","POST","fetch","then","form","FormModel","tokens","name","length","all","responses","actionForms","Object","actionCollection","createActions","getActionsByType","isDisabled","allActions","ListModel","listItemCollection","forEach","listItem","updateActions","push","actions","unique"],"mappings":"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","sourcesContent":["// @flow\nimport { useState, useEffect } from \"react\";\n\nimport { useModularUIRequest } from \"./useModularUIRequest\";\n\nimport { HTTP_METHODS } from \"../constants\";\n\nimport ListModel from \"../models/list/ListModel\";\nimport FormModel from \"../models/form/FormModel\";\n\nimport type DetailModel from \"../models/detail/DetailModel\";\nimport type TabModel from \"../models/tab/TabModel\";\nimport type ActionModel from \"../models/actions/ActionModel\";\n\n/**\n * Retrieve all forms configured on a model with actions\n * @param model\n * @returns Object - { actionName: FormModel }\n */\nexport const useRetrieveFormsOnModel = (\n model: ListModel | DetailModel | TabModel\n): null | { [actionName: string]: FormModel } => {\n const modularui = useModularUIRequest();\n const [forms, setForms] = useState(null);\n const [requestCount, setRequestCount] = useState(0);\n const [responseCount, setResponseCount] = useState(0);\n\n useEffect(() => {\n const requests = getActions(model).map((action) => {\n const href = action.selfhref.addParameter(\"commit\", \"false\");\n\n return modularui(href, { method: HTTP_METHODS.POST })\n .fetch()\n .then((form) => {\n if (form instanceof FormModel) {\n form.tokens = [];\n }\n return { [action.name]: form };\n });\n });\n\n setRequestCount(requests.length);\n\n Promise.all(requests).then((responses) => {\n // put response array in object\n const actionForms = Object.assign({}, ...responses);\n setForms(actionForms);\n setResponseCount(responses.length);\n });\n }, [model, modularui]);\n\n if (responseCount === requestCount) {\n return forms;\n }\n\n return null;\n};\n\nconst getActions = (\n model: ListModel | DetailModel | TabModel\n): Array<ActionModel> => {\n if (!model.actionCollection) {\n return [];\n }\n\n const createActions = model.actionCollection\n .getActionsByType(\"create\")\n .filter((action) => !action.isDisabled);\n\n const allActions = [...createActions];\n\n if (model instanceof ListModel) {\n model.listItemCollection.forEach((listItem) => {\n const updateActions = listItem.actionCollection\n .getActionsByType(\"update\")\n .filter((action) => !action.isDisabled);\n\n allActions.push(...updateActions);\n });\n }\n\n const actions = [];\n const unique = [];\n allActions.forEach((action) => {\n if (!unique.includes(action.name)) {\n unique.push(action.name);\n actions.push(action);\n }\n });\n\n return actions;\n};\n"],"file":"useAllFormsOnModel.js"}
@@ -45,6 +45,9 @@ var useLogin = function useLogin() {
45
45
  return {
46
46
  isAuthenticated: getIsAuthenticated(auth.isAuthenticated, application),
47
47
  errorMessage: auth.error,
48
+ resetErrors: function resetErrors() {
49
+ return dispatch((0, _actions.resetAuthErrors)());
50
+ },
48
51
  login: function login(username, password) {
49
52
  return dispatch((0, _actions.login)(username, password));
50
53
  }
@@ -1,13 +1,15 @@
1
1
  // @flow
2
2
  import { useSelector, useDispatch } from "react-redux";
3
3
  import { getApplication } from "../redux/_modularui/selectors";
4
- import { login, logout } from "../redux/actions";
4
+ import { login, logout, resetAuthErrors } from "../redux/actions";
5
5
  import UserServicesModel from "../models/user/UserServicesModel";
6
6
  import { useState, useEffect } from "react";
7
7
 
8
+ import type { ResetAuthErrorsAction } from "../redux/types";
8
9
  type LoginHook = {
9
10
  isAuthenticated: boolean,
10
11
  errorMessage: ?string,
12
+ resetErrors: () => ResetAuthErrorsAction,
11
13
  login: (username: string, password: string) => void,
12
14
  };
13
15
  type LogoutHook = {
@@ -39,6 +41,7 @@ export const useLogin = (): LoginHook => {
39
41
  return {
40
42
  isAuthenticated: getIsAuthenticated(auth.isAuthenticated, application),
41
43
  errorMessage: auth.error,
44
+ resetErrors: () => dispatch(resetAuthErrors()),
42
45
  login: (username: string, password: string) =>
43
46
  dispatch(login(username, password)),
44
47
  };
@@ -66,12 +69,11 @@ export const useLogout = (): LogoutHook => {
66
69
 
67
70
  return {
68
71
  isAuthenticated,
69
- logout: () => {
70
- return dispatch(logout()).then(() => {
72
+ logout: () =>
73
+ dispatch(logout()).then(() => {
71
74
  if (!cancel) {
72
75
  setIsAuthenticated(false);
73
76
  }
74
- });
75
- },
77
+ }),
76
78
  };
77
79
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useAuthentication.js"],"names":["getIsAuthenticated","isAuthenticated","application","userServicesModel","userServices","UserServicesModel","isLoggedIn","useLogin","dispatch","getApplication","auth","state","errorMessage","error","login","username","password","useLogout","cancel","setCancel","setIsAuthenticated","logout","then"],"mappings":";;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AAYA,IAAMA,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,eAAD,EAAkBC,WAAlB,EAAkC;AAC3D,MAAI,CAACA,WAAL,EAAkB;AAChB,WAAO,KAAP;AACD;;AAED,MAAMC,iBAAiB,GAAGD,WAAW,CAACE,YAAtC;;AACA,MAAID,iBAAiB,YAAYE,0BAAjC,EAAoD;AAClD,WAAOJ,eAAe,IAAIE,iBAAiB,CAACG,UAA5C;AACD;;AAED,SAAO,KAAP;AACD,CAXD;AAaA;AACA;;;AACO,IAAMC,QAAQ,GAAG,SAAXA,QAAW,GAAiB;AACvC,MAAMC,QAAQ,GAAG,8BAAjB;AAEA,MAAMN,WAAW,GAAG,6BAAYO,yBAAZ,CAApB;AACA,MAAMC,IAAI,GAAG,6BAAY,UAACC,KAAD;AAAA,WAAWA,KAAK,CAACD,IAAjB;AAAA,GAAZ,CAAb;AAEA,SAAO;AACLT,IAAAA,eAAe,EAAED,kBAAkB,CAACU,IAAI,CAACT,eAAN,EAAuBC,WAAvB,CAD9B;AAELU,IAAAA,YAAY,EAAEF,IAAI,CAACG,KAFd;AAGLC,IAAAA,KAAK,EAAE,eAACC,QAAD,EAAmBC,QAAnB;AAAA,aACLR,QAAQ,CAAC,oBAAMO,QAAN,EAAgBC,QAAhB,CAAD,CADH;AAAA;AAHF,GAAP;AAMD,CAZM;AAcP;AACA;;;;;AACO,IAAMC,SAAS,GAAG,SAAZA,SAAY,GAAkB;AACzC,MAAMT,QAAQ,GAAG,8BAAjB;AACA,MAAMN,WAAW,GAAG,6BAAYO,yBAAZ,CAApB;AACA,MAAMC,IAAI,GAAG,6BAAY,UAACC,KAAD;AAAA;;AAAA,WAAW,gBAAAA,KAAK,CAACD,IAAN,4DAAYT,eAAZ,KAA+B,KAA1C;AAAA,GAAZ,CAAb;;AAEA,kBAA4B,qBAAS,KAAT,CAA5B;AAAA;AAAA,MAAOiB,MAAP;AAAA,MAAeC,SAAf;;AACA,mBAA8C,qBAAS;AAAA,WACrDnB,kBAAkB,CAACU,IAAD,EAAOR,WAAP,CADmC;AAAA,GAAT,CAA9C;AAAA;AAAA,MAAOD,eAAP;AAAA,MAAwBmB,kBAAxB,iBANyC,CAUzC;AACA;;;AACA,wBAAU,YAAM;AACd,WAAO,YAAM;AACXD,MAAAA,SAAS,CAAC,IAAD,CAAT;AACD,KAFD;AAGD,GAJD,EAIG,EAJH;AAMA,SAAO;AACLlB,IAAAA,eAAe,EAAfA,eADK;AAELoB,IAAAA,MAAM,EAAE,kBAAM;AACZ,aAAOb,QAAQ,CAAC,sBAAD,CAAR,CAAmBc,IAAnB,CAAwB,YAAM;AACnC,YAAI,CAACJ,MAAL,EAAa;AACXE,UAAAA,kBAAkB,CAAC,KAAD,CAAlB;AACD;AACF,OAJM,CAAP;AAKD;AARI,GAAP;AAUD,CA5BM","sourcesContent":["// @flow\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { getApplication } from \"../redux/_modularui/selectors\";\nimport { login, logout } from \"../redux/actions\";\nimport UserServicesModel from \"../models/user/UserServicesModel\";\nimport { useState, useEffect } from \"react\";\n\ntype LoginHook = {\n isAuthenticated: boolean,\n errorMessage: ?string,\n login: (username: string, password: string) => void,\n};\ntype LogoutHook = {\n isAuthenticated: boolean,\n logout: () => void,\n};\n\nconst getIsAuthenticated = (isAuthenticated, application) => {\n if (!application) {\n return false;\n }\n\n const userServicesModel = application.userServices;\n if (userServicesModel instanceof UserServicesModel) {\n return isAuthenticated && userServicesModel.isLoggedIn;\n }\n\n return false;\n};\n\n/**\n */\nexport const useLogin = (): LoginHook => {\n const dispatch = useDispatch();\n\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth);\n\n return {\n isAuthenticated: getIsAuthenticated(auth.isAuthenticated, application),\n errorMessage: auth.error,\n login: (username: string, password: string) =>\n dispatch(login(username, password)),\n };\n};\n\n/**\n */\nexport const useLogout = (): LogoutHook => {\n const dispatch = useDispatch();\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth?.isAuthenticated || false);\n\n const [cancel, setCancel] = useState(false);\n const [isAuthenticated, setIsAuthenticated] = useState(() =>\n getIsAuthenticated(auth, application)\n );\n\n // set cancel to true when the component this hook is used on, has been unmounted\n // prevents state changes after unmount\n useEffect(() => {\n return () => {\n setCancel(true);\n };\n }, []);\n\n return {\n isAuthenticated,\n logout: () => {\n return dispatch(logout()).then(() => {\n if (!cancel) {\n setIsAuthenticated(false);\n }\n });\n },\n };\n};\n"],"file":"useAuthentication.js"}
1
+ {"version":3,"sources":["../../src/hooks/useAuthentication.js"],"names":["getIsAuthenticated","isAuthenticated","application","userServicesModel","userServices","UserServicesModel","isLoggedIn","useLogin","dispatch","getApplication","auth","state","errorMessage","error","resetErrors","login","username","password","useLogout","cancel","setCancel","setIsAuthenticated","logout","then"],"mappings":";;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AAcA,IAAMA,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,eAAD,EAAkBC,WAAlB,EAAkC;AAC3D,MAAI,CAACA,WAAL,EAAkB;AAChB,WAAO,KAAP;AACD;;AAED,MAAMC,iBAAiB,GAAGD,WAAW,CAACE,YAAtC;;AACA,MAAID,iBAAiB,YAAYE,0BAAjC,EAAoD;AAClD,WAAOJ,eAAe,IAAIE,iBAAiB,CAACG,UAA5C;AACD;;AAED,SAAO,KAAP;AACD,CAXD;AAaA;AACA;;;AACO,IAAMC,QAAQ,GAAG,SAAXA,QAAW,GAAiB;AACvC,MAAMC,QAAQ,GAAG,8BAAjB;AAEA,MAAMN,WAAW,GAAG,6BAAYO,yBAAZ,CAApB;AACA,MAAMC,IAAI,GAAG,6BAAY,UAACC,KAAD;AAAA,WAAWA,KAAK,CAACD,IAAjB;AAAA,GAAZ,CAAb;AAEA,SAAO;AACLT,IAAAA,eAAe,EAAED,kBAAkB,CAACU,IAAI,CAACT,eAAN,EAAuBC,WAAvB,CAD9B;AAELU,IAAAA,YAAY,EAAEF,IAAI,CAACG,KAFd;AAGLC,IAAAA,WAAW,EAAE;AAAA,aAAMN,QAAQ,CAAC,+BAAD,CAAd;AAAA,KAHR;AAILO,IAAAA,KAAK,EAAE,eAACC,QAAD,EAAmBC,QAAnB;AAAA,aACLT,QAAQ,CAAC,oBAAMQ,QAAN,EAAgBC,QAAhB,CAAD,CADH;AAAA;AAJF,GAAP;AAOD,CAbM;AAeP;AACA;;;;;AACO,IAAMC,SAAS,GAAG,SAAZA,SAAY,GAAkB;AACzC,MAAMV,QAAQ,GAAG,8BAAjB;AACA,MAAMN,WAAW,GAAG,6BAAYO,yBAAZ,CAApB;AACA,MAAMC,IAAI,GAAG,6BAAY,UAACC,KAAD;AAAA;;AAAA,WAAW,gBAAAA,KAAK,CAACD,IAAN,4DAAYT,eAAZ,KAA+B,KAA1C;AAAA,GAAZ,CAAb;;AAEA,kBAA4B,qBAAS,KAAT,CAA5B;AAAA;AAAA,MAAOkB,MAAP;AAAA,MAAeC,SAAf;;AACA,mBAA8C,qBAAS;AAAA,WACrDpB,kBAAkB,CAACU,IAAD,EAAOR,WAAP,CADmC;AAAA,GAAT,CAA9C;AAAA;AAAA,MAAOD,eAAP;AAAA,MAAwBoB,kBAAxB,iBANyC,CAUzC;AACA;;;AACA,wBAAU,YAAM;AACd,WAAO,YAAM;AACXD,MAAAA,SAAS,CAAC,IAAD,CAAT;AACD,KAFD;AAGD,GAJD,EAIG,EAJH;AAMA,SAAO;AACLnB,IAAAA,eAAe,EAAfA,eADK;AAELqB,IAAAA,MAAM,EAAE;AAAA,aACNd,QAAQ,CAAC,sBAAD,CAAR,CAAmBe,IAAnB,CAAwB,YAAM;AAC5B,YAAI,CAACJ,MAAL,EAAa;AACXE,UAAAA,kBAAkB,CAAC,KAAD,CAAlB;AACD;AACF,OAJD,CADM;AAAA;AAFH,GAAP;AASD,CA3BM","sourcesContent":["// @flow\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { getApplication } from \"../redux/_modularui/selectors\";\nimport { login, logout, resetAuthErrors } from \"../redux/actions\";\nimport UserServicesModel from \"../models/user/UserServicesModel\";\nimport { useState, useEffect } from \"react\";\n\nimport type { ResetAuthErrorsAction } from \"../redux/types\";\ntype LoginHook = {\n isAuthenticated: boolean,\n errorMessage: ?string,\n resetErrors: () => ResetAuthErrorsAction,\n login: (username: string, password: string) => void,\n};\ntype LogoutHook = {\n isAuthenticated: boolean,\n logout: () => void,\n};\n\nconst getIsAuthenticated = (isAuthenticated, application) => {\n if (!application) {\n return false;\n }\n\n const userServicesModel = application.userServices;\n if (userServicesModel instanceof UserServicesModel) {\n return isAuthenticated && userServicesModel.isLoggedIn;\n }\n\n return false;\n};\n\n/**\n */\nexport const useLogin = (): LoginHook => {\n const dispatch = useDispatch();\n\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth);\n\n return {\n isAuthenticated: getIsAuthenticated(auth.isAuthenticated, application),\n errorMessage: auth.error,\n resetErrors: () => dispatch(resetAuthErrors()),\n login: (username: string, password: string) =>\n dispatch(login(username, password)),\n };\n};\n\n/**\n */\nexport const useLogout = (): LogoutHook => {\n const dispatch = useDispatch();\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth?.isAuthenticated || false);\n\n const [cancel, setCancel] = useState(false);\n const [isAuthenticated, setIsAuthenticated] = useState(() =>\n getIsAuthenticated(auth, application)\n );\n\n // set cancel to true when the component this hook is used on, has been unmounted\n // prevents state changes after unmount\n useEffect(() => {\n return () => {\n setCancel(true);\n };\n }, []);\n\n return {\n isAuthenticated,\n logout: () =>\n dispatch(logout()).then(() => {\n if (!cancel) {\n setIsAuthenticated(false);\n }\n }),\n };\n};\n"],"file":"useAuthentication.js"}
@@ -120,7 +120,7 @@ var AttributeContent = /*#__PURE__*/function () {
120
120
 
121
121
  return (_this$_content$elemen = this._content.elements) === null || _this$_content$elemen === void 0 ? void 0 : (0, _map.default)(_this$_content$elemen).call(_this$_content$elemen, function (element) {
122
122
  if ("propertyElement" in element) {
123
- // $FlowIssue[prop-missing]
123
+ // $FlowIssue[incompatible-use]
124
124
  var _element$propertyElem = element.propertyElement,
125
125
  label = _element$propertyElem.label,
126
126
  layouthint = _element$propertyElem.layouthint,
@@ -135,8 +135,8 @@ var AttributeContent = /*#__PURE__*/function () {
135
135
  }
136
136
 
137
137
  if ("textFragmentElement" in element) {
138
- var _element$textFragment = // $FlowIssue[prop-missing]
139
- element.textFragmentElement,
138
+ // $FlowIssue[incompatible-use]
139
+ var _element$textFragment = element.textFragmentElement,
140
140
  _label = _element$textFragment.label,
141
141
  _layouthint = _element$textFragment.layouthint,
142
142
  textfragments = _element$textFragment.textfragments;
@@ -154,7 +154,7 @@ var AttributeContent = /*#__PURE__*/function () {
154
154
  }
155
155
 
156
156
  if ("contentElement" in element) {
157
- // $FlowIssue[prop-missing]
157
+ // $FlowIssue[incompatible-use]
158
158
  var _element$contentEleme = element.contentElement,
159
159
  _label2 = _element$contentEleme.label,
160
160
  _layouthint2 = _element$contentEleme.layouthint,
@@ -62,7 +62,7 @@ class AttributeContent {
62
62
  if (this._content?.elements) {
63
63
  return this._content.elements?.map((element) => {
64
64
  if ("propertyElement" in element) {
65
- // $FlowIssue[prop-missing]
65
+ // $FlowIssue[incompatible-use]
66
66
  const { label, layouthint, properties } = element.propertyElement;
67
67
 
68
68
  return {
@@ -75,8 +75,8 @@ class AttributeContent {
75
75
  }
76
76
 
77
77
  if ("textFragmentElement" in element) {
78
+ // $FlowIssue[incompatible-use]
78
79
  const { label, layouthint, textfragments } =
79
- // $FlowIssue[prop-missing]
80
80
  element.textFragmentElement;
81
81
  return {
82
82
  textFragmentElement: {
@@ -91,7 +91,7 @@ class AttributeContent {
91
91
  }
92
92
 
93
93
  if ("contentElement" in element) {
94
- // $FlowIssue[prop-missing]
94
+ // $FlowIssue[incompatible-use]
95
95
  const { label, layouthint, sections } = element.contentElement;
96
96
  return {
97
97
  contentElement: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/models/attributes/AttributeContent.js"],"names":["AttributeContent","content","_content","headerLabel","headerDescription","label","header","description","message","elements","element","propertyElement","layouthint","properties","LayoutHintCollection","textFragmentElement","textfragments","textfragment","text","contentElement","sections","section","SectionModel","elementName","collectionName","getContentElements","labels","getContentElementCollections","getContentElementCollectionByLabels","types","type","referredSections","push","getReferredSections"],"mappings":"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","sourcesContent":["// @flow\nimport { retrieveText } from \"../../utils/helpers/text\";\nimport { hasAllContentInData } from \"../../constants/Settings\";\nimport SectionModel from \"../content/SectionModel\";\n\nimport LayoutHintCollection from \"../layouthint/LayoutHintCollection\";\nimport { isPlainObject } from \"../../utils\";\n\nimport type {\n ContentData,\n ContentElementMapped,\n PropertyData,\n PropertyElementMapped,\n TextFragmentData,\n TextFragmentElementMapped,\n ContentAll,\n} from \"../types\";\nimport type SubSectionModel from \"../content/SubSectionModel\";\n\nclass AttributeContent {\n _content: ?ContentData;\n\n constructor(content: ?ContentData) {\n this._content = content;\n }\n\n /**\n */\n get fromData(): boolean {\n return hasAllContentInData();\n }\n\n /**\n */\n get header(): {\n label: ?string,\n description: ?string,\n } {\n let headerLabel = null;\n let headerDescription = null;\n\n const label = this._content?.header?.label;\n if (label) {\n headerLabel = label;\n }\n\n const description = this._content?.header?.description;\n if (description) {\n if (isPlainObject(description) && \"message\" in description) {\n headerDescription = description.message;\n } else if (typeof description === \"string\") {\n headerDescription = description;\n }\n }\n\n return { label: headerLabel, description: headerDescription };\n }\n\n /**\n */\n get elements(): ContentAll {\n if (this._content?.elements) {\n return this._content.elements?.map((element) => {\n if (\"propertyElement\" in element) {\n // $FlowIssue[prop-missing]\n const { label, layouthint, properties } = element.propertyElement;\n\n return {\n propertyElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n properties,\n },\n };\n }\n\n if (\"textFragmentElement\" in element) {\n const { label, layouthint, textfragments } =\n // $FlowIssue[prop-missing]\n element.textFragmentElement;\n return {\n textFragmentElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n textfragments: textfragments.map((textfragment) => ({\n ...textfragment,\n text: retrieveText(textfragment.text),\n })),\n },\n };\n }\n\n if (\"contentElement\" in element) {\n // $FlowIssue[prop-missing]\n const { label, layouthint, sections } = element.contentElement;\n return {\n contentElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n sections: sections.map(\n (section) => new SectionModel(section, null)\n ),\n },\n };\n }\n\n // $FlowIssue\n return element;\n });\n }\n\n return [];\n }\n\n /**\n */\n get label(): ?string {\n return this._content?.label;\n }\n\n /**\n */\n getContentElements<T>(elementName: string): Array<T> {\n // $FlowIssue incompatible-return\n return this.elements.filter((element) => elementName in element);\n }\n\n /**\n */\n getContentElementCollections<T>(\n elementName: string,\n collectionName: string\n ): Array<T> {\n return this.getContentElements(elementName)\n .map((element) => element[elementName][collectionName])\n .flat();\n }\n\n /**\n */\n getContentElementCollectionByLabels<T, U>(\n elementName: string,\n collectionName: string,\n labels: Array<string>\n ): Array<U> {\n return (\n this.getContentElements<T>(elementName)\n // $FlowIssue incompatible-use\n .filter((element) => labels.includes(element[elementName].label))\n // $FlowIssue incompatible-use\n .map((element) => element[elementName][collectionName])\n .flat()\n );\n }\n\n /**\n */\n get properties(): Array<PropertyData> {\n return this.getContentElementCollections<PropertyData>(\n \"propertyElement\",\n \"properties\"\n );\n }\n\n /**\n * Get concept properties by property element label\n */\n getConceptPropertiesByLabels(labels: Array<string>): Array<PropertyData> {\n return this.getContentElementCollectionByLabels<\n PropertyElementMapped,\n PropertyData\n >(\"propertyElement\", \"properties\", labels);\n }\n\n /**\n */\n get textfragments(): Array<TextFragmentData> {\n return this.getContentElementCollections<TextFragmentData>(\n \"textFragmentElement\",\n \"textfragments\"\n );\n }\n\n /**\n * Get concept text fragments by text fragment element label\n */\n getTextFragmentsByLabels(labels: Array<string>): Array<TextFragmentData> {\n return this.getContentElementCollectionByLabels<\n TextFragmentElementMapped,\n TextFragmentData\n >(\"textFragmentElement\", \"textfragments\", labels);\n }\n\n /**\n */\n get sections(): Array<SectionModel> {\n return this.getContentElementCollections<SectionModel>(\n \"contentElement\",\n \"sections\"\n );\n }\n\n /**\n */\n getSectionsByType(types: Array<string>): Array<SectionModel> {\n return this.sections.filter((section) => types.includes(section.type));\n }\n\n /**\n * Get concept text fragments by text fragment element label\n */\n getSectionsByLabels(labels: Array<string>): Array<SectionModel> {\n return this.getContentElementCollectionByLabels<\n ContentElementMapped,\n SectionModel\n >(\"contentElement\", \"sections\", labels);\n }\n\n /**\n */\n getReferredSections(): Array<SectionModel | SubSectionModel> {\n const referredSections = [];\n\n for (const section of this.sections) {\n referredSections.push(...section.getReferredSections());\n }\n\n return referredSections;\n }\n}\n\nexport default AttributeContent;\n"],"file":"AttributeContent.js"}
1
+ {"version":3,"sources":["../../../src/models/attributes/AttributeContent.js"],"names":["AttributeContent","content","_content","headerLabel","headerDescription","label","header","description","message","elements","element","propertyElement","layouthint","properties","LayoutHintCollection","textFragmentElement","textfragments","textfragment","text","contentElement","sections","section","SectionModel","elementName","collectionName","getContentElements","labels","getContentElementCollections","getContentElementCollectionByLabels","types","type","referredSections","push","getReferredSections"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;AAEA;;AACA;;;;;;;;;;;;IAaMA,gB;AAGJ,4BAAYC,OAAZ,EAAmC;AAAA;AAAA;AACjC,SAAKC,QAAL,GAAgBD,OAAhB;AACD;AAED;AACF;;;;;SACE,eAAwB;AACtB,aAAO,oCAAP;AACD;AAED;AACF;;;;SACE,eAGE;AAAA;;AACA,UAAIE,WAAW,GAAG,IAAlB;AACA,UAAIC,iBAAiB,GAAG,IAAxB;AAEA,UAAMC,KAAK,qBAAG,KAAKH,QAAR,4EAAG,eAAeI,MAAlB,0DAAG,sBAAuBD,KAArC;;AACA,UAAIA,KAAJ,EAAW;AACTF,QAAAA,WAAW,GAAGE,KAAd;AACD;;AAED,UAAME,WAAW,sBAAG,KAAKL,QAAR,6EAAG,gBAAeI,MAAlB,0DAAG,sBAAuBC,WAA3C;;AACA,UAAIA,WAAJ,EAAiB;AACf,YAAI,0BAAcA,WAAd,KAA8B,aAAaA,WAA/C,EAA4D;AAC1DH,UAAAA,iBAAiB,GAAGG,WAAW,CAACC,OAAhC;AACD,SAFD,MAEO,IAAI,OAAOD,WAAP,KAAuB,QAA3B,EAAqC;AAC1CH,UAAAA,iBAAiB,GAAGG,WAApB;AACD;AACF;;AAED,aAAO;AAAEF,QAAAA,KAAK,EAAEF,WAAT;AAAsBI,QAAAA,WAAW,EAAEH;AAAnC,OAAP;AACD;AAED;AACF;;;;SACE,eAA2B;AAAA;;AACzB,6BAAI,KAAKF,QAAT,4CAAI,gBAAeO,QAAnB,EAA6B;AAAA;;AAC3B,wCAAO,KAAKP,QAAL,CAAcO,QAArB,0DAAO,qEAA4B,UAACC,OAAD,EAAa;AAC9C,cAAI,qBAAqBA,OAAzB,EAAkC;AAChC;AACA,wCAA0CA,OAAO,CAACC,eAAlD;AAAA,gBAAQN,KAAR,yBAAQA,KAAR;AAAA,gBAAeO,UAAf,yBAAeA,UAAf;AAAA,gBAA2BC,UAA3B,yBAA2BA,UAA3B;AAEA,mBAAO;AACLF,cAAAA,eAAe,EAAE;AACfN,gBAAAA,KAAK,EAALA,KADe;AAEfO,gBAAAA,UAAU,EAAE,IAAIE,6BAAJ,CAAyBF,UAAzB,CAFG;AAGfC,gBAAAA,UAAU,EAAVA;AAHe;AADZ,aAAP;AAOD;;AAED,cAAI,yBAAyBH,OAA7B,EAAsC;AACpC;AACA,wCACEA,OAAO,CAACK,mBADV;AAAA,gBAAQV,MAAR,yBAAQA,KAAR;AAAA,gBAAeO,WAAf,yBAAeA,UAAf;AAAA,gBAA2BI,aAA3B,yBAA2BA,aAA3B;AAEA,mBAAO;AACLD,cAAAA,mBAAmB,EAAE;AACnBV,gBAAAA,KAAK,EAALA,MADmB;AAEnBO,gBAAAA,UAAU,EAAE,IAAIE,6BAAJ,CAAyBF,WAAzB,CAFO;AAGnBI,gBAAAA,aAAa,EAAE,kBAAAA,aAAa,MAAb,CAAAA,aAAa,EAAK,UAACC,YAAD;AAAA,yDAC5BA,YAD4B;AAE/BC,oBAAAA,IAAI,EAAE,wBAAaD,YAAY,CAACC,IAA1B;AAFyB;AAAA,iBAAL;AAHT;AADhB,aAAP;AAUD;;AAED,cAAI,oBAAoBR,OAAxB,EAAiC;AAC/B;AACA,wCAAwCA,OAAO,CAACS,cAAhD;AAAA,gBAAQd,OAAR,yBAAQA,KAAR;AAAA,gBAAeO,YAAf,yBAAeA,UAAf;AAAA,gBAA2BQ,QAA3B,yBAA2BA,QAA3B;AACA,mBAAO;AACLD,cAAAA,cAAc,EAAE;AACdd,gBAAAA,KAAK,EAALA,OADc;AAEdO,gBAAAA,UAAU,EAAE,IAAIE,6BAAJ,CAAyBF,YAAzB,CAFE;AAGdQ,gBAAAA,QAAQ,EAAE,kBAAAA,QAAQ,MAAR,CAAAA,QAAQ,EAChB,UAACC,OAAD;AAAA,yBAAa,IAAIC,qBAAJ,CAAiBD,OAAjB,EAA0B,IAA1B,CAAb;AAAA,iBADgB;AAHJ;AADX,aAAP;AASD,WA1C6C,CA4C9C;;;AACA,iBAAOX,OAAP;AACD,SA9CM,CAAP;AA+CD;;AAED,aAAO,EAAP;AACD;AAED;AACF;;;;SACE,eAAqB;AAAA;;AACnB,gCAAO,KAAKR,QAAZ,oDAAO,gBAAeG,KAAtB;AACD;AAED;AACF;;;;WACE,4BAAsBkB,WAAtB,EAAqD;AAAA;;AACnD;AACA,aAAO,qCAAKd,QAAL,iBAAqB,UAACC,OAAD;AAAA,eAAaa,WAAW,IAAIb,OAA5B;AAAA,OAArB,CAAP;AACD;AAED;AACF;;;;WACE,sCACEa,WADF,EAEEC,cAFF,EAGY;AAAA;;AACV,aAAO,kEAAKC,kBAAL,CAAwBF,WAAxB,mBACA,UAACb,OAAD;AAAA,eAAaA,OAAO,CAACa,WAAD,CAAP,CAAqBC,cAArB,CAAb;AAAA,OADA,kBAAP;AAGD;AAED;AACF;;;;WACE,6CACED,WADF,EAEEC,cAFF,EAGEE,MAHF,EAIY;AAAA;;AACV,aACE,mGAAKD,kBAAL,CAA2BF,WAA3B,EACE;AADF,wBAEU,UAACb,OAAD;AAAA,eAAa,uBAAAgB,MAAM,MAAN,CAAAA,MAAM,EAAUhB,OAAO,CAACa,WAAD,CAAP,CAAqBlB,KAA/B,CAAnB;AAAA,OAFV,EAGE;AAHF,wBAIO,UAACK,OAAD;AAAA,eAAaA,OAAO,CAACa,WAAD,CAAP,CAAqBC,cAArB,CAAb;AAAA,OAJP,kBADF;AAQD;AAED;AACF;;;;SACE,eAAsC;AACpC,aAAO,KAAKG,4BAAL,CACL,iBADK,EAEL,YAFK,CAAP;AAID;AAED;AACF;AACA;;;;WACE,sCAA6BD,MAA7B,EAAyE;AACvE,aAAO,KAAKE,mCAAL,CAGL,iBAHK,EAGc,YAHd,EAG4BF,MAH5B,CAAP;AAID;AAED;AACF;;;;SACE,eAA6C;AAC3C,aAAO,KAAKC,4BAAL,CACL,qBADK,EAEL,eAFK,CAAP;AAID;AAED;AACF;AACA;;;;WACE,kCAAyBD,MAAzB,EAAyE;AACvE,aAAO,KAAKE,mCAAL,CAGL,qBAHK,EAGkB,eAHlB,EAGmCF,MAHnC,CAAP;AAID;AAED;AACF;;;;SACE,eAAoC;AAClC,aAAO,KAAKC,4BAAL,CACL,gBADK,EAEL,UAFK,CAAP;AAID;AAED;AACF;;;;WACE,2BAAkBE,KAAlB,EAA6D;AAAA;;AAC3D,aAAO,sCAAKT,QAAL,kBAAqB,UAACC,OAAD;AAAA,eAAa,uBAAAQ,KAAK,MAAL,CAAAA,KAAK,EAAUR,OAAO,CAACS,IAAlB,CAAlB;AAAA,OAArB,CAAP;AACD;AAED;AACF;AACA;;;;WACE,6BAAoBJ,MAApB,EAAgE;AAC9D,aAAO,KAAKE,mCAAL,CAGL,gBAHK,EAGa,UAHb,EAGyBF,MAHzB,CAAP;AAID;AAED;AACF;;;;WACE,+BAA6D;AAC3D,UAAMK,gBAAgB,GAAG,EAAzB;;AAD2D,iDAGrC,KAAKX,QAHgC;AAAA;;AAAA;AAG3D,4DAAqC;AAAA,cAA1BC,OAA0B;AACnCU,UAAAA,gBAAgB,CAACC,IAAjB,OAAAD,gBAAgB,mCAASV,OAAO,CAACY,mBAAR,EAAT,EAAhB;AACD;AAL0D;AAAA;AAAA;AAAA;AAAA;;AAO3D,aAAOF,gBAAP;AACD;;;;;eAGY/B,gB","sourcesContent":["// @flow\nimport { retrieveText } from \"../../utils/helpers/text\";\nimport { hasAllContentInData } from \"../../constants/Settings\";\nimport SectionModel from \"../content/SectionModel\";\n\nimport LayoutHintCollection from \"../layouthint/LayoutHintCollection\";\nimport { isPlainObject } from \"../../utils\";\n\nimport type {\n ContentData,\n ContentElementMapped,\n PropertyData,\n PropertyElementMapped,\n TextFragmentData,\n TextFragmentElementMapped,\n ContentAll,\n} from \"../types\";\nimport type SubSectionModel from \"../content/SubSectionModel\";\n\nclass AttributeContent {\n _content: ?ContentData;\n\n constructor(content: ?ContentData) {\n this._content = content;\n }\n\n /**\n */\n get fromData(): boolean {\n return hasAllContentInData();\n }\n\n /**\n */\n get header(): {\n label: ?string,\n description: ?string,\n } {\n let headerLabel = null;\n let headerDescription = null;\n\n const label = this._content?.header?.label;\n if (label) {\n headerLabel = label;\n }\n\n const description = this._content?.header?.description;\n if (description) {\n if (isPlainObject(description) && \"message\" in description) {\n headerDescription = description.message;\n } else if (typeof description === \"string\") {\n headerDescription = description;\n }\n }\n\n return { label: headerLabel, description: headerDescription };\n }\n\n /**\n */\n get elements(): ContentAll {\n if (this._content?.elements) {\n return this._content.elements?.map((element) => {\n if (\"propertyElement\" in element) {\n // $FlowIssue[incompatible-use]\n const { label, layouthint, properties } = element.propertyElement;\n\n return {\n propertyElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n properties,\n },\n };\n }\n\n if (\"textFragmentElement\" in element) {\n // $FlowIssue[incompatible-use]\n const { label, layouthint, textfragments } =\n element.textFragmentElement;\n return {\n textFragmentElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n textfragments: textfragments.map((textfragment) => ({\n ...textfragment,\n text: retrieveText(textfragment.text),\n })),\n },\n };\n }\n\n if (\"contentElement\" in element) {\n // $FlowIssue[incompatible-use]\n const { label, layouthint, sections } = element.contentElement;\n return {\n contentElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n sections: sections.map(\n (section) => new SectionModel(section, null)\n ),\n },\n };\n }\n\n // $FlowIssue\n return element;\n });\n }\n\n return [];\n }\n\n /**\n */\n get label(): ?string {\n return this._content?.label;\n }\n\n /**\n */\n getContentElements<T>(elementName: string): Array<T> {\n // $FlowIssue incompatible-return\n return this.elements.filter((element) => elementName in element);\n }\n\n /**\n */\n getContentElementCollections<T>(\n elementName: string,\n collectionName: string\n ): Array<T> {\n return this.getContentElements(elementName)\n .map((element) => element[elementName][collectionName])\n .flat();\n }\n\n /**\n */\n getContentElementCollectionByLabels<T, U>(\n elementName: string,\n collectionName: string,\n labels: Array<string>\n ): Array<U> {\n return (\n this.getContentElements<T>(elementName)\n // $FlowIssue incompatible-use\n .filter((element) => labels.includes(element[elementName].label))\n // $FlowIssue incompatible-use\n .map((element) => element[elementName][collectionName])\n .flat()\n );\n }\n\n /**\n */\n get properties(): Array<PropertyData> {\n return this.getContentElementCollections<PropertyData>(\n \"propertyElement\",\n \"properties\"\n );\n }\n\n /**\n * Get concept properties by property element label\n */\n getConceptPropertiesByLabels(labels: Array<string>): Array<PropertyData> {\n return this.getContentElementCollectionByLabels<\n PropertyElementMapped,\n PropertyData\n >(\"propertyElement\", \"properties\", labels);\n }\n\n /**\n */\n get textfragments(): Array<TextFragmentData> {\n return this.getContentElementCollections<TextFragmentData>(\n \"textFragmentElement\",\n \"textfragments\"\n );\n }\n\n /**\n * Get concept text fragments by text fragment element label\n */\n getTextFragmentsByLabels(labels: Array<string>): Array<TextFragmentData> {\n return this.getContentElementCollectionByLabels<\n TextFragmentElementMapped,\n TextFragmentData\n >(\"textFragmentElement\", \"textfragments\", labels);\n }\n\n /**\n */\n get sections(): Array<SectionModel> {\n return this.getContentElementCollections<SectionModel>(\n \"contentElement\",\n \"sections\"\n );\n }\n\n /**\n */\n getSectionsByType(types: Array<string>): Array<SectionModel> {\n return this.sections.filter((section) => types.includes(section.type));\n }\n\n /**\n * Get concept text fragments by text fragment element label\n */\n getSectionsByLabels(labels: Array<string>): Array<SectionModel> {\n return this.getContentElementCollectionByLabels<\n ContentElementMapped,\n SectionModel\n >(\"contentElement\", \"sections\", labels);\n }\n\n /**\n */\n getReferredSections(): Array<SectionModel | SubSectionModel> {\n const referredSections = [];\n\n for (const section of this.sections) {\n referredSections.push(...section.getReferredSections());\n }\n\n return referredSections;\n }\n}\n\nexport default AttributeContent;\n"],"file":"AttributeContent.js"}
@@ -28,6 +28,10 @@ var updateFormAttribute = function updateFormAttribute(form, formObject, attribu
28
28
  return function (dispatch) {
29
29
  var newForm = form.clone();
30
30
 
31
+ if (!options.validate) {
32
+ options.validate = true;
33
+ }
34
+
31
35
  if (newForm.currentFormObject && newForm.currentFormObject.equals(formObject)) {
32
36
  newForm.currentFormObject.updateAttribute(attribute, inputvalue);
33
37
  } else {
@@ -25,12 +25,16 @@ export const updateFormAttribute =
25
25
  autosubmit: false,
26
26
  autosave: false,
27
27
  forceUpdate: false,
28
- validate: true
28
+ validate: true,
29
29
  }
30
30
  ): ThunkAction =>
31
31
  (dispatch: Dispatch) => {
32
32
  const newForm = form.clone();
33
33
 
34
+ if (!options.validate) {
35
+ options.validate = true;
36
+ }
37
+
34
38
  if (
35
39
  newForm.currentFormObject &&
36
40
  newForm.currentFormObject.equals(formObject)
@@ -60,7 +64,8 @@ export const updateFormAttribute =
60
64
  }
61
65
 
62
66
  if (
63
- newForm.currentFormObject && options.validate &&
67
+ newForm.currentFormObject &&
68
+ options.validate &&
64
69
  newForm.currentFormObject.hasDynamicValidations &&
65
70
  getSetting("USE_INSTANT_SERVER_VALIDATION")
66
71
  ) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/redux/actions/FormAttributeSet.js"],"names":["updateFormAttribute","form","formObject","attribute","inputvalue","options","autosubmit","autosave","forceUpdate","validate","dispatch","newForm","clone","currentFormObject","equals","updateAttribute","completedFormObjects","forEach","completeObject","isValid","autosubmitAction","isChanged","hasDynamicValidations"],"mappings":";;;;;;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AAOA;AACA;AACA;AACO,IAAMA,mBAAmB,GAC9B,SADWA,mBACX,CACEC,IADF,EAEEC,UAFF,EAGEC,SAHF,EAIEC,UAJF;AAAA,MAKEC,OALF,uEAK+B;AAC3BC,IAAAA,UAAU,EAAE,KADe;AAE3BC,IAAAA,QAAQ,EAAE,KAFiB;AAG3BC,IAAAA,WAAW,EAAE,KAHc;AAI3BC,IAAAA,QAAQ,EAAE;AAJiB,GAL/B;AAAA,SAYA,UAACC,QAAD,EAAwB;AACtB,QAAMC,OAAO,GAAGV,IAAI,CAACW,KAAL,EAAhB;;AAEA,QACED,OAAO,CAACE,iBAAR,IACAF,OAAO,CAACE,iBAAR,CAA0BC,MAA1B,CAAiCZ,UAAjC,CAFF,EAGE;AACAS,MAAAA,OAAO,CAACE,iBAAR,CAA0BE,eAA1B,CAA0CZ,SAA1C,EAAqDC,UAArD;AACD,KALD,MAKO;AACLO,MAAAA,OAAO,CAACK,oBAAR,CAA6BC,OAA7B,CAAqC,UAACC,cAAD,EAAoB;AACvD,YAAIA,cAAc,CAACJ,MAAf,CAAsBZ,UAAtB,CAAJ,EAAuC;AACrCgB,UAAAA,cAAc,CAACH,eAAf,CAA+BZ,SAA/B,EAA0CC,UAA1C;AACD;AACF,OAJD;AAKD;;AAED,QAAIC,OAAO,CAACC,UAAR,IAAsBK,OAAO,CAACQ,OAAlC,EAA2C;AACzC,UAAMC,gBAAgB,GAAG,0CACvBT,OADuB,EAEvBR,SAFuB,EAGvBE,OAAO,CAACG,WAHe,CAAzB;;AAKA,UAAIY,gBAAJ,EAAsB;AACpB,eAAOV,QAAQ,CAACU,gBAAD,CAAf;AACD;AACF;;AAED,QAAIf,OAAO,CAACE,QAAR,IAAoBI,OAAO,CAACQ,OAA5B,IAAuCR,OAAO,CAACU,SAAR,EAA3C,EAAgE;AAC9DX,MAAAA,QAAQ,CAAC,sCAAmBC,OAAnB,CAAD,CAAR;AACD;;AAED,QACEA,OAAO,CAACE,iBAAR,IAA6BR,OAAO,CAACI,QAArC,IACAE,OAAO,CAACE,iBAAR,CAA0BS,qBAD1B,IAEA,0BAAW,+BAAX,CAHF,EAIE;AACAZ,MAAAA,QAAQ,CAAC,yCAAmBC,OAAnB,CAAD,CAAR;AACD;;AAED,WAAOD,QAAQ,CAAC,0BAAYC,OAAZ,CAAD,CAAf;AACD,GApDD;AAAA,CADK","sourcesContent":["// @flow\nimport { updateModel } from \"../_modularui/actions\";\n\nimport { getSetting } from \"../../constants/Settings\";\n\nimport { validateFormObject } from \"./FormValidations\";\nimport { autosaveFormObject } from \"./FormAutosave\";\nimport { autosubmitFormObject } from \"./FormAutosubmit\";\n\nimport type { Dispatch, ThunkAction, UpdateFormOptions } from \"../types\";\nimport type { AttributeType } from \"../../models/types\";\nimport type FormModel from \"../../models/form/FormModel\";\nimport type FormObjectModel from \"../../models/form/FormObjectModel\";\n\n/**\n * Update an attribute on a form\n */\nexport const updateFormAttribute =\n (\n form: FormModel,\n formObject: FormObjectModel,\n attribute: AttributeType,\n inputvalue: string,\n options: UpdateFormOptions = {\n autosubmit: false,\n autosave: false,\n forceUpdate: false,\n validate: true\n }\n ): ThunkAction =>\n (dispatch: Dispatch) => {\n const newForm = form.clone();\n\n if (\n newForm.currentFormObject &&\n newForm.currentFormObject.equals(formObject)\n ) {\n newForm.currentFormObject.updateAttribute(attribute, inputvalue);\n } else {\n newForm.completedFormObjects.forEach((completeObject) => {\n if (completeObject.equals(formObject)) {\n completeObject.updateAttribute(attribute, inputvalue);\n }\n });\n }\n\n if (options.autosubmit && newForm.isValid) {\n const autosubmitAction = autosubmitFormObject(\n newForm,\n attribute,\n options.forceUpdate\n );\n if (autosubmitAction) {\n return dispatch(autosubmitAction);\n }\n }\n\n if (options.autosave && newForm.isValid && newForm.isChanged()) {\n dispatch(autosaveFormObject(newForm));\n }\n\n if (\n newForm.currentFormObject && options.validate &&\n newForm.currentFormObject.hasDynamicValidations &&\n getSetting(\"USE_INSTANT_SERVER_VALIDATION\")\n ) {\n dispatch(validateFormObject(newForm));\n }\n\n return dispatch(updateModel(newForm));\n };\n"],"file":"FormAttributeSet.js"}
1
+ {"version":3,"sources":["../../../src/redux/actions/FormAttributeSet.js"],"names":["updateFormAttribute","form","formObject","attribute","inputvalue","options","autosubmit","autosave","forceUpdate","validate","dispatch","newForm","clone","currentFormObject","equals","updateAttribute","completedFormObjects","forEach","completeObject","isValid","autosubmitAction","isChanged","hasDynamicValidations"],"mappings":";;;;;;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AAOA;AACA;AACA;AACO,IAAMA,mBAAmB,GAC9B,SADWA,mBACX,CACEC,IADF,EAEEC,UAFF,EAGEC,SAHF,EAIEC,UAJF;AAAA,MAKEC,OALF,uEAK+B;AAC3BC,IAAAA,UAAU,EAAE,KADe;AAE3BC,IAAAA,QAAQ,EAAE,KAFiB;AAG3BC,IAAAA,WAAW,EAAE,KAHc;AAI3BC,IAAAA,QAAQ,EAAE;AAJiB,GAL/B;AAAA,SAYA,UAACC,QAAD,EAAwB;AACtB,QAAMC,OAAO,GAAGV,IAAI,CAACW,KAAL,EAAhB;;AAEA,QAAI,CAACP,OAAO,CAACI,QAAb,EAAuB;AACrBJ,MAAAA,OAAO,CAACI,QAAR,GAAmB,IAAnB;AACD;;AAED,QACEE,OAAO,CAACE,iBAAR,IACAF,OAAO,CAACE,iBAAR,CAA0BC,MAA1B,CAAiCZ,UAAjC,CAFF,EAGE;AACAS,MAAAA,OAAO,CAACE,iBAAR,CAA0BE,eAA1B,CAA0CZ,SAA1C,EAAqDC,UAArD;AACD,KALD,MAKO;AACLO,MAAAA,OAAO,CAACK,oBAAR,CAA6BC,OAA7B,CAAqC,UAACC,cAAD,EAAoB;AACvD,YAAIA,cAAc,CAACJ,MAAf,CAAsBZ,UAAtB,CAAJ,EAAuC;AACrCgB,UAAAA,cAAc,CAACH,eAAf,CAA+BZ,SAA/B,EAA0CC,UAA1C;AACD;AACF,OAJD;AAKD;;AAED,QAAIC,OAAO,CAACC,UAAR,IAAsBK,OAAO,CAACQ,OAAlC,EAA2C;AACzC,UAAMC,gBAAgB,GAAG,0CACvBT,OADuB,EAEvBR,SAFuB,EAGvBE,OAAO,CAACG,WAHe,CAAzB;;AAKA,UAAIY,gBAAJ,EAAsB;AACpB,eAAOV,QAAQ,CAACU,gBAAD,CAAf;AACD;AACF;;AAED,QAAIf,OAAO,CAACE,QAAR,IAAoBI,OAAO,CAACQ,OAA5B,IAAuCR,OAAO,CAACU,SAAR,EAA3C,EAAgE;AAC9DX,MAAAA,QAAQ,CAAC,sCAAmBC,OAAnB,CAAD,CAAR;AACD;;AAED,QACEA,OAAO,CAACE,iBAAR,IACAR,OAAO,CAACI,QADR,IAEAE,OAAO,CAACE,iBAAR,CAA0BS,qBAF1B,IAGA,0BAAW,+BAAX,CAJF,EAKE;AACAZ,MAAAA,QAAQ,CAAC,yCAAmBC,OAAnB,CAAD,CAAR;AACD;;AAED,WAAOD,QAAQ,CAAC,0BAAYC,OAAZ,CAAD,CAAf;AACD,GAzDD;AAAA,CADK","sourcesContent":["// @flow\nimport { updateModel } from \"../_modularui/actions\";\n\nimport { getSetting } from \"../../constants/Settings\";\n\nimport { validateFormObject } from \"./FormValidations\";\nimport { autosaveFormObject } from \"./FormAutosave\";\nimport { autosubmitFormObject } from \"./FormAutosubmit\";\n\nimport type { Dispatch, ThunkAction, UpdateFormOptions } from \"../types\";\nimport type { AttributeType } from \"../../models/types\";\nimport type FormModel from \"../../models/form/FormModel\";\nimport type FormObjectModel from \"../../models/form/FormObjectModel\";\n\n/**\n * Update an attribute on a form\n */\nexport const updateFormAttribute =\n (\n form: FormModel,\n formObject: FormObjectModel,\n attribute: AttributeType,\n inputvalue: string,\n options: UpdateFormOptions = {\n autosubmit: false,\n autosave: false,\n forceUpdate: false,\n validate: true,\n }\n ): ThunkAction =>\n (dispatch: Dispatch) => {\n const newForm = form.clone();\n\n if (!options.validate) {\n options.validate = true;\n }\n\n if (\n newForm.currentFormObject &&\n newForm.currentFormObject.equals(formObject)\n ) {\n newForm.currentFormObject.updateAttribute(attribute, inputvalue);\n } else {\n newForm.completedFormObjects.forEach((completeObject) => {\n if (completeObject.equals(formObject)) {\n completeObject.updateAttribute(attribute, inputvalue);\n }\n });\n }\n\n if (options.autosubmit && newForm.isValid) {\n const autosubmitAction = autosubmitFormObject(\n newForm,\n attribute,\n options.forceUpdate\n );\n if (autosubmitAction) {\n return dispatch(autosubmitAction);\n }\n }\n\n if (options.autosave && newForm.isValid && newForm.isChanged()) {\n dispatch(autosaveFormObject(newForm));\n }\n\n if (\n newForm.currentFormObject &&\n options.validate &&\n newForm.currentFormObject.hasDynamicValidations &&\n getSetting(\"USE_INSTANT_SERVER_VALIDATION\")\n ) {\n dispatch(validateFormObject(newForm));\n }\n\n return dispatch(updateModel(newForm));\n };\n"],"file":"FormAttributeSet.js"}
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.loginSuccess = exports.loginFailed = exports.login = exports.changePassword = void 0;
8
+ exports.resetAuthErrors = exports.loginSuccess = exports.loginFailed = exports.login = exports.changePassword = void 0;
9
9
 
10
10
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
11
11
 
@@ -31,12 +31,24 @@ var loginFailed = function loginFailed(errorMessage) {
31
31
  };
32
32
  };
33
33
  /**
34
- * Send login success action
34
+ * Resets any authentication errors
35
35
  */
36
36
 
37
37
 
38
38
  exports.loginFailed = loginFailed;
39
39
 
40
+ var resetAuthErrors = function resetAuthErrors() {
41
+ return {
42
+ type: "AUTHENTICATION_RESET_ERRORS"
43
+ };
44
+ };
45
+ /**
46
+ * Send login success action
47
+ */
48
+
49
+
50
+ exports.resetAuthErrors = resetAuthErrors;
51
+
40
52
  var loginSuccess = function loginSuccess() {
41
53
  return {
42
54
  type: "AUTHENTICATION_SUCCESS"
@@ -10,6 +10,7 @@ import { CHANGEPASSWORD_PATH } from "../../constants/Constants";
10
10
 
11
11
  import type {
12
12
  LoginFailedAction,
13
+ ResetAuthErrorsAction,
13
14
  LoginSuccessAction,
14
15
  ThunkAction,
15
16
  } from "../types";
@@ -22,6 +23,13 @@ export const loginFailed = (errorMessage: string): LoginFailedAction => ({
22
23
  payload: errorMessage,
23
24
  });
24
25
 
26
+ /**
27
+ * Resets any authentication errors
28
+ */
29
+ export const resetAuthErrors = (): ResetAuthErrorsAction => ({
30
+ type: "AUTHENTICATION_RESET_ERRORS",
31
+ });
32
+
25
33
  /**
26
34
  * Send login success action
27
35
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/redux/actions/SignIn.js"],"names":["loginFailed","errorMessage","type","payload","loginSuccess","changePassword","dispatch","getState","isModal","router","location","state","modal","locationFrom","from","CHANGEPASSWORD_PATH","login","username","password","Authenticate","then","Cache","addItem","catch","error","id","dispatchedReloadApplication","resolve"],"mappings":";;;;;;;;;;;AACA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AAQA;AACA;AACA;AACO,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAACC,YAAD;AAAA,SAA8C;AACvEC,IAAAA,IAAI,EAAE,sBADiE;AAEvEC,IAAAA,OAAO,EAAEF;AAF8D,GAA9C;AAAA,CAApB;AAKP;AACA;AACA;;;;;AACO,IAAMG,YAAY,GAAG,SAAfA,YAAe;AAAA,SAA2B;AACrDF,IAAAA,IAAI,EAAE;AAD+C,GAA3B;AAAA,CAArB;AAIP;AACA;AACA;;;;;AACO,IAAMG,cAAc,GAAG,SAAjBA,cAAiB;AAAA,SAAmB,UAACC,QAAD,EAAWC,QAAX,EAAwB;AAAA;;AACvED,IAAAA,QAAQ,CAAC;AACPJ,MAAAA,IAAI,EAAE;AADC,KAAD,CAAR;AAIA,QAAMM,OAAO,4BAAGD,QAAQ,GAAGE,MAAX,CAAkBC,QAArB,oFAAG,sBAA4BC,KAA/B,2DAAG,uBAAmCC,KAAnD;AACA,QAAMC,YAAY,6BAAGN,QAAQ,GAAGE,MAAX,CAAkBC,QAArB,qFAAG,uBAA4BC,KAA/B,2DAAG,uBAAmCG,IAAxD;AACA,WAAOR,QAAQ,CACb,mBAAKS,8BAAL,EAA0B;AACxBD,MAAAA,IAAI,EAAED,YAAY,GAAGA,YAAH,GAAkBN,QAAQ,GAAGE,MAAX,CAAkBC,QAD9B;AAExBE,MAAAA,KAAK,EAAEJ;AAFiB,KAA1B,CADa,CAAf;AAMD,GAb6B;AAAA,CAAvB;AAeP;AACA;;;;;AACO,IAAMQ,KAAK,GAChB,SADWA,KACX,CAACC,QAAD,EAAmBC,QAAnB;AAAA,SACA,UAACZ,QAAD,EAAc;AACZA,IAAAA,QAAQ,CAAC,uCAAD,CAAR;AAEA,WAAO,IAAIa,qBAAJ,GACJH,KADI,CACEC,QADF,EACYC,QADZ,EAEJE,IAFI,CAEC;AAAA,aAAMd,QAAQ,CAAC,qCAAD,CAAd;AAAA,KAFD,EAGJc,IAHI,CAGC,YAAM;AACVC,qBAAMC,OAAN,CAAc,MAAd,EAAsB,IAAtB;;AACAhB,MAAAA,QAAQ,CAACF,YAAY,EAAb,CAAR;AAEA,aAAOE,QAAQ,CAAC,wCAAD,CAAf;AACD,KARI,EASJiB,KATI,CASE,UAACC,KAAD,EAAW;AAChB,UAAIA,KAAK,CAACC,EAAN,KAAa,8BAAjB,EAAiD;AAC/C,YAAMC,2BAA2B,GAAGpB,QAAQ,CAAC,qCAAD,CAA5C;AAEA,eAAO,iBAAQqB,OAAR,CAAgBD,2BAAhB,EAA6CN,IAA7C,CAAkD,YAAM;AAC7DC,yBAAMC,OAAN,CAAc,MAAd,EAAsB,IAAtB;;AACA,iBAAOhB,QAAQ,CAACD,cAAc,EAAf,CAAf;AACD,SAHM,CAAP;AAID;;AAEDC,MAAAA,QAAQ,CAACN,WAAW,CAACwB,KAAK,CAACC,EAAP,CAAZ,CAAR;AACA,aAAOnB,QAAQ,CAAC,wCAAD,CAAf;AACD,KArBI,CAAP;AAsBD,GA1BD;AAAA,CADK","sourcesContent":["// @flow\nimport Cache from \"../../utils/browser/Cache\";\nimport Authenticate from \"../../modularui/Authenticate\";\n\nimport { reloadApplication } from \"./Application\";\n\nimport { startProgress, finishProgress } from \"./ProgressIndicator\";\nimport { push } from \"../_router/actions\";\nimport { CHANGEPASSWORD_PATH } from \"../../constants/Constants\";\n\nimport type {\n LoginFailedAction,\n LoginSuccessAction,\n ThunkAction,\n} from \"../types\";\n\n/**\n * Send login failed action\n */\nexport const loginFailed = (errorMessage: string): LoginFailedAction => ({\n type: \"AUTHENTICATION_ERROR\",\n payload: errorMessage,\n});\n\n/**\n * Send login success action\n */\nexport const loginSuccess = (): LoginSuccessAction => ({\n type: \"AUTHENTICATION_SUCCESS\",\n});\n\n/**\n * Send change password action\n */\nexport const changePassword = (): ThunkAction => (dispatch, getState) => {\n dispatch({\n type: \"CHANGE_PASSWORD\",\n });\n\n const isModal = getState().router.location?.state?.modal;\n const locationFrom = getState().router.location?.state?.from;\n return dispatch(\n push(CHANGEPASSWORD_PATH, {\n from: locationFrom ? locationFrom : getState().router.location,\n modal: isModal,\n })\n );\n};\n\n/**\n */\nexport const login =\n (username: string, password: string): ThunkAction =>\n (dispatch) => {\n dispatch(startProgress());\n\n return new Authenticate()\n .login(username, password)\n .then(() => dispatch(reloadApplication()))\n .then(() => {\n Cache.addItem(\"auth\", true);\n dispatch(loginSuccess());\n\n return dispatch(finishProgress());\n })\n .catch((error) => {\n if (error.id === \"Error.ChangePasswordRequired\") {\n const dispatchedReloadApplication = dispatch(reloadApplication());\n\n return Promise.resolve(dispatchedReloadApplication).then(() => {\n Cache.addItem(\"auth\", true);\n return dispatch(changePassword());\n });\n }\n\n dispatch(loginFailed(error.id));\n return dispatch(finishProgress());\n });\n };\n"],"file":"SignIn.js"}
1
+ {"version":3,"sources":["../../../src/redux/actions/SignIn.js"],"names":["loginFailed","errorMessage","type","payload","resetAuthErrors","loginSuccess","changePassword","dispatch","getState","isModal","router","location","state","modal","locationFrom","from","CHANGEPASSWORD_PATH","login","username","password","Authenticate","then","Cache","addItem","catch","error","id","dispatchedReloadApplication","resolve"],"mappings":";;;;;;;;;;;AACA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AASA;AACA;AACA;AACO,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAACC,YAAD;AAAA,SAA8C;AACvEC,IAAAA,IAAI,EAAE,sBADiE;AAEvEC,IAAAA,OAAO,EAAEF;AAF8D,GAA9C;AAAA,CAApB;AAKP;AACA;AACA;;;;;AACO,IAAMG,eAAe,GAAG,SAAlBA,eAAkB;AAAA,SAA8B;AAC3DF,IAAAA,IAAI,EAAE;AADqD,GAA9B;AAAA,CAAxB;AAIP;AACA;AACA;;;;;AACO,IAAMG,YAAY,GAAG,SAAfA,YAAe;AAAA,SAA2B;AACrDH,IAAAA,IAAI,EAAE;AAD+C,GAA3B;AAAA,CAArB;AAIP;AACA;AACA;;;;;AACO,IAAMI,cAAc,GAAG,SAAjBA,cAAiB;AAAA,SAAmB,UAACC,QAAD,EAAWC,QAAX,EAAwB;AAAA;;AACvED,IAAAA,QAAQ,CAAC;AACPL,MAAAA,IAAI,EAAE;AADC,KAAD,CAAR;AAIA,QAAMO,OAAO,4BAAGD,QAAQ,GAAGE,MAAX,CAAkBC,QAArB,oFAAG,sBAA4BC,KAA/B,2DAAG,uBAAmCC,KAAnD;AACA,QAAMC,YAAY,6BAAGN,QAAQ,GAAGE,MAAX,CAAkBC,QAArB,qFAAG,uBAA4BC,KAA/B,2DAAG,uBAAmCG,IAAxD;AACA,WAAOR,QAAQ,CACb,mBAAKS,8BAAL,EAA0B;AACxBD,MAAAA,IAAI,EAAED,YAAY,GAAGA,YAAH,GAAkBN,QAAQ,GAAGE,MAAX,CAAkBC,QAD9B;AAExBE,MAAAA,KAAK,EAAEJ;AAFiB,KAA1B,CADa,CAAf;AAMD,GAb6B;AAAA,CAAvB;AAeP;AACA;;;;;AACO,IAAMQ,KAAK,GAChB,SADWA,KACX,CAACC,QAAD,EAAmBC,QAAnB;AAAA,SACA,UAACZ,QAAD,EAAc;AACZA,IAAAA,QAAQ,CAAC,uCAAD,CAAR;AAEA,WAAO,IAAIa,qBAAJ,GACJH,KADI,CACEC,QADF,EACYC,QADZ,EAEJE,IAFI,CAEC;AAAA,aAAMd,QAAQ,CAAC,qCAAD,CAAd;AAAA,KAFD,EAGJc,IAHI,CAGC,YAAM;AACVC,qBAAMC,OAAN,CAAc,MAAd,EAAsB,IAAtB;;AACAhB,MAAAA,QAAQ,CAACF,YAAY,EAAb,CAAR;AAEA,aAAOE,QAAQ,CAAC,wCAAD,CAAf;AACD,KARI,EASJiB,KATI,CASE,UAACC,KAAD,EAAW;AAChB,UAAIA,KAAK,CAACC,EAAN,KAAa,8BAAjB,EAAiD;AAC/C,YAAMC,2BAA2B,GAAGpB,QAAQ,CAAC,qCAAD,CAA5C;AAEA,eAAO,iBAAQqB,OAAR,CAAgBD,2BAAhB,EAA6CN,IAA7C,CAAkD,YAAM;AAC7DC,yBAAMC,OAAN,CAAc,MAAd,EAAsB,IAAtB;;AACA,iBAAOhB,QAAQ,CAACD,cAAc,EAAf,CAAf;AACD,SAHM,CAAP;AAID;;AAEDC,MAAAA,QAAQ,CAACP,WAAW,CAACyB,KAAK,CAACC,EAAP,CAAZ,CAAR;AACA,aAAOnB,QAAQ,CAAC,wCAAD,CAAf;AACD,KArBI,CAAP;AAsBD,GA1BD;AAAA,CADK","sourcesContent":["// @flow\nimport Cache from \"../../utils/browser/Cache\";\nimport Authenticate from \"../../modularui/Authenticate\";\n\nimport { reloadApplication } from \"./Application\";\n\nimport { startProgress, finishProgress } from \"./ProgressIndicator\";\nimport { push } from \"../_router/actions\";\nimport { CHANGEPASSWORD_PATH } from \"../../constants/Constants\";\n\nimport type {\n LoginFailedAction,\n ResetAuthErrorsAction,\n LoginSuccessAction,\n ThunkAction,\n} from \"../types\";\n\n/**\n * Send login failed action\n */\nexport const loginFailed = (errorMessage: string): LoginFailedAction => ({\n type: \"AUTHENTICATION_ERROR\",\n payload: errorMessage,\n});\n\n/**\n * Resets any authentication errors\n */\nexport const resetAuthErrors = (): ResetAuthErrorsAction => ({\n type: \"AUTHENTICATION_RESET_ERRORS\",\n});\n\n/**\n * Send login success action\n */\nexport const loginSuccess = (): LoginSuccessAction => ({\n type: \"AUTHENTICATION_SUCCESS\",\n});\n\n/**\n * Send change password action\n */\nexport const changePassword = (): ThunkAction => (dispatch, getState) => {\n dispatch({\n type: \"CHANGE_PASSWORD\",\n });\n\n const isModal = getState().router.location?.state?.modal;\n const locationFrom = getState().router.location?.state?.from;\n return dispatch(\n push(CHANGEPASSWORD_PATH, {\n from: locationFrom ? locationFrom : getState().router.location,\n modal: isModal,\n })\n );\n};\n\n/**\n */\nexport const login =\n (username: string, password: string): ThunkAction =>\n (dispatch) => {\n dispatch(startProgress());\n\n return new Authenticate()\n .login(username, password)\n .then(() => dispatch(reloadApplication()))\n .then(() => {\n Cache.addItem(\"auth\", true);\n dispatch(loginSuccess());\n\n return dispatch(finishProgress());\n })\n .catch((error) => {\n if (error.id === \"Error.ChangePasswordRequired\") {\n const dispatchedReloadApplication = dispatch(reloadApplication());\n\n return Promise.resolve(dispatchedReloadApplication).then(() => {\n Cache.addItem(\"auth\", true);\n return dispatch(changePassword());\n });\n }\n\n dispatch(loginFailed(error.id));\n return dispatch(finishProgress());\n });\n };\n"],"file":"SignIn.js"}
@@ -57,6 +57,11 @@ var AuthReducer = function AuthReducer() {
57
57
  error: action.payload
58
58
  });
59
59
 
60
+ case "AUTHENTICATION_RESET_ERRORS":
61
+ return _objectSpread(_objectSpread({}, state), {}, {
62
+ error: null
63
+ });
64
+
60
65
  case "AUTHENTICATION_LOGOUT":
61
66
  {
62
67
  // clear cache because of cached contributions
@@ -34,6 +34,9 @@ const AuthReducer: Reducer<AuthState, ReduxAction> = (
34
34
  case "AUTHENTICATION_ERROR":
35
35
  return { ...state, mustChangePassword: false, error: action.payload };
36
36
 
37
+ case "AUTHENTICATION_RESET_ERRORS":
38
+ return { ...state, error: null };
39
+
37
40
  case "AUTHENTICATION_LOGOUT": {
38
41
  // clear cache because of cached contributions
39
42
  if (state.isAuthenticated) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/redux/reducers/AuthReducer.js"],"names":["initialState","isAuthenticated","mustChangePassword","error","AuthReducer","state","action","type","payload","Cache","clear"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA;;;;;;AAKA;AACA,IAAMA,YAAuB,GAAG;AAC9BC,EAAAA,eAAe,EAAE,KADa;AAE9BC,EAAAA,kBAAkB,EAAE,KAFU;AAG9BC,EAAAA,KAAK,EAAE;AAHuB,CAAhC;AAMA;AACA;AACA;;AACA,IAAMC,WAA4C,GAAG,SAA/CA,WAA+C,GAGhD;AAAA,MAFHC,KAEG,uEAFKL,YAEL;AAAA,MADHM,MACG;;AACH,MAAI,CAACA,MAAL,EAAa;AACX,WAAOD,KAAP;AACD;;AAED,UAAQC,MAAM,CAACC,IAAf;AACE,SAAK,wBAAL;AACE,6CACKF,KADL;AAEEJ,QAAAA,eAAe,EAAE,IAFnB;AAGEE,QAAAA,KAAK,EAAE,IAHT;AAIED,QAAAA,kBAAkB,EAAE;AAJtB;;AAOF,SAAK,sBAAL;AACE,6CAAYG,KAAZ;AAAmBH,QAAAA,kBAAkB,EAAE,KAAvC;AAA8CC,QAAAA,KAAK,EAAEG,MAAM,CAACE;AAA5D;;AAEF,SAAK,uBAAL;AAA8B;AAC5B;AACA,YAAIH,KAAK,CAACJ,eAAV,EAA2B;AACzBQ,yBAAMC,KAAN;AACD;;AAED,+CACKL,KADL;AAEEH,UAAAA,kBAAkB,EAAE,KAFtB;AAGED,UAAAA,eAAe,EAAE,KAHnB;AAIEE,UAAAA,KAAK,EAAE;AAJT;AAMD;;AAED,SAAK,iBAAL;AACE,6CACKE,KADL;AAEEJ,QAAAA,eAAe,EAAE,IAFnB;AAGEC,QAAAA,kBAAkB,EAAE,IAHtB;AAIEC,QAAAA,KAAK,EAAE;AAJT;;AAOF;AACE,aAAOE,KAAP;AAnCJ;AAqCD,CA7CD;;eA+CeD,W","sourcesContent":["// @flow\nimport Cache from \"../../utils/browser/Cache\";\n\nimport type { Reducer } from \"redux\";\nimport type { AuthState, ReduxAction } from \"../types\";\n\n// REDUCER\nconst initialState: AuthState = {\n isAuthenticated: false,\n mustChangePassword: false,\n error: null,\n};\n\n/**\n * Auth reducer\n */\nconst AuthReducer: Reducer<AuthState, ReduxAction> = (\n state = initialState,\n action\n) => {\n if (!action) {\n return state;\n }\n\n switch (action.type) {\n case \"AUTHENTICATION_SUCCESS\":\n return {\n ...state,\n isAuthenticated: true,\n error: null,\n mustChangePassword: false,\n };\n\n case \"AUTHENTICATION_ERROR\":\n return { ...state, mustChangePassword: false, error: action.payload };\n\n case \"AUTHENTICATION_LOGOUT\": {\n // clear cache because of cached contributions\n if (state.isAuthenticated) {\n Cache.clear();\n }\n\n return {\n ...state,\n mustChangePassword: false,\n isAuthenticated: false,\n error: null,\n };\n }\n\n case \"CHANGE_PASSWORD\":\n return {\n ...state,\n isAuthenticated: true,\n mustChangePassword: true,\n error: null,\n };\n\n default:\n return state;\n }\n};\n\nexport default AuthReducer;\n"],"file":"AuthReducer.js"}
1
+ {"version":3,"sources":["../../../src/redux/reducers/AuthReducer.js"],"names":["initialState","isAuthenticated","mustChangePassword","error","AuthReducer","state","action","type","payload","Cache","clear"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA;;;;;;AAKA;AACA,IAAMA,YAAuB,GAAG;AAC9BC,EAAAA,eAAe,EAAE,KADa;AAE9BC,EAAAA,kBAAkB,EAAE,KAFU;AAG9BC,EAAAA,KAAK,EAAE;AAHuB,CAAhC;AAMA;AACA;AACA;;AACA,IAAMC,WAA4C,GAAG,SAA/CA,WAA+C,GAGhD;AAAA,MAFHC,KAEG,uEAFKL,YAEL;AAAA,MADHM,MACG;;AACH,MAAI,CAACA,MAAL,EAAa;AACX,WAAOD,KAAP;AACD;;AAED,UAAQC,MAAM,CAACC,IAAf;AACE,SAAK,wBAAL;AACE,6CACKF,KADL;AAEEJ,QAAAA,eAAe,EAAE,IAFnB;AAGEE,QAAAA,KAAK,EAAE,IAHT;AAIED,QAAAA,kBAAkB,EAAE;AAJtB;;AAOF,SAAK,sBAAL;AACE,6CAAYG,KAAZ;AAAmBH,QAAAA,kBAAkB,EAAE,KAAvC;AAA8CC,QAAAA,KAAK,EAAEG,MAAM,CAACE;AAA5D;;AAEF,SAAK,6BAAL;AACE,6CAAYH,KAAZ;AAAmBF,QAAAA,KAAK,EAAE;AAA1B;;AAEF,SAAK,uBAAL;AAA8B;AAC5B;AACA,YAAIE,KAAK,CAACJ,eAAV,EAA2B;AACzBQ,yBAAMC,KAAN;AACD;;AAED,+CACKL,KADL;AAEEH,UAAAA,kBAAkB,EAAE,KAFtB;AAGED,UAAAA,eAAe,EAAE,KAHnB;AAIEE,UAAAA,KAAK,EAAE;AAJT;AAMD;;AAED,SAAK,iBAAL;AACE,6CACKE,KADL;AAEEJ,QAAAA,eAAe,EAAE,IAFnB;AAGEC,QAAAA,kBAAkB,EAAE,IAHtB;AAIEC,QAAAA,KAAK,EAAE;AAJT;;AAOF;AACE,aAAOE,KAAP;AAtCJ;AAwCD,CAhDD;;eAkDeD,W","sourcesContent":["// @flow\nimport Cache from \"../../utils/browser/Cache\";\n\nimport type { Reducer } from \"redux\";\nimport type { AuthState, ReduxAction } from \"../types\";\n\n// REDUCER\nconst initialState: AuthState = {\n isAuthenticated: false,\n mustChangePassword: false,\n error: null,\n};\n\n/**\n * Auth reducer\n */\nconst AuthReducer: Reducer<AuthState, ReduxAction> = (\n state = initialState,\n action\n) => {\n if (!action) {\n return state;\n }\n\n switch (action.type) {\n case \"AUTHENTICATION_SUCCESS\":\n return {\n ...state,\n isAuthenticated: true,\n error: null,\n mustChangePassword: false,\n };\n\n case \"AUTHENTICATION_ERROR\":\n return { ...state, mustChangePassword: false, error: action.payload };\n\n case \"AUTHENTICATION_RESET_ERRORS\":\n return { ...state, error: null };\n\n case \"AUTHENTICATION_LOGOUT\": {\n // clear cache because of cached contributions\n if (state.isAuthenticated) {\n Cache.clear();\n }\n\n return {\n ...state,\n mustChangePassword: false,\n isAuthenticated: false,\n error: null,\n };\n }\n\n case \"CHANGE_PASSWORD\":\n return {\n ...state,\n isAuthenticated: true,\n mustChangePassword: true,\n error: null,\n };\n\n default:\n return state;\n }\n};\n\nexport default AuthReducer;\n"],"file":"AuthReducer.js"}