@beinformed/ui 1.25.2 → 1.25.5

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 (243) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/esm/constants/Constants.js +5 -0
  3. package/esm/constants/Constants.js.map +1 -1
  4. package/esm/hooks/useAuthentication.js +5 -5
  5. package/esm/hooks/useAuthentication.js.map +1 -1
  6. package/esm/hooks/useModularUI.js.map +1 -1
  7. package/esm/hooks/useModularUIBasic.js +7 -1
  8. package/esm/hooks/useModularUIBasic.js.map +1 -1
  9. package/esm/hooks/useModularUIModel.js +9 -1
  10. package/esm/hooks/useModularUIModel.js.map +1 -1
  11. package/esm/hooks/useModularUIRequest.js +5 -7
  12. package/esm/hooks/useModularUIRequest.js.map +1 -1
  13. package/esm/models/application/ApplicationModel.js +9 -1
  14. package/esm/models/application/ApplicationModel.js.map +1 -1
  15. package/esm/models/base/ResourceModel.js +7 -0
  16. package/esm/models/base/ResourceModel.js.map +1 -1
  17. package/esm/models/caseview/CaseViewModel.js +6 -0
  18. package/esm/models/caseview/CaseViewModel.js.map +1 -1
  19. package/esm/models/concepts/BusinessScenarioModel.js +6 -0
  20. package/esm/models/concepts/BusinessScenarioModel.js.map +1 -1
  21. package/esm/models/concepts/ConceptDetailModel.js +6 -0
  22. package/esm/models/concepts/ConceptDetailModel.js.map +1 -1
  23. package/esm/models/concepts/ConceptIndexModel.js +6 -0
  24. package/esm/models/concepts/ConceptIndexModel.js.map +1 -1
  25. package/esm/models/concepts/ConceptTypeDetailModel.js +6 -0
  26. package/esm/models/concepts/ConceptTypeDetailModel.js.map +1 -1
  27. package/esm/models/content/ContentIndexModel.js +6 -0
  28. package/esm/models/content/ContentIndexModel.js.map +1 -1
  29. package/esm/models/content/ContentModel.js +6 -0
  30. package/esm/models/content/ContentModel.js.map +1 -1
  31. package/esm/models/content/ContentTOCModel.js +6 -0
  32. package/esm/models/content/ContentTOCModel.js.map +1 -1
  33. package/esm/models/content/ContentTypeModel.js +6 -0
  34. package/esm/models/content/ContentTypeModel.js.map +1 -1
  35. package/esm/models/detail/DetailModel.js +6 -0
  36. package/esm/models/detail/DetailModel.js.map +1 -1
  37. package/esm/models/form/FormModel.js +6 -0
  38. package/esm/models/form/FormModel.js.map +1 -1
  39. package/esm/models/list/ListDetailModel.js +6 -0
  40. package/esm/models/list/ListDetailModel.js.map +1 -1
  41. package/esm/models/list/ListModel.js +6 -0
  42. package/esm/models/list/ListModel.js.map +1 -1
  43. package/esm/models/lookup/LookupOptionsModel.js +6 -0
  44. package/esm/models/lookup/LookupOptionsModel.js.map +1 -1
  45. package/esm/models/modelcatalog/ModelCatalogModel.js +6 -0
  46. package/esm/models/modelcatalog/ModelCatalogModel.js.map +1 -1
  47. package/esm/models/panels/GroupingPanelModel.js +6 -0
  48. package/esm/models/panels/GroupingPanelModel.js.map +1 -1
  49. package/esm/models/resolveModel.js +4 -4
  50. package/esm/models/resolveModel.js.map +1 -1
  51. package/esm/models/search/CaseSearchModel.js +6 -0
  52. package/esm/models/search/CaseSearchModel.js.map +1 -1
  53. package/esm/models/tab/TabModel.js +6 -0
  54. package/esm/models/tab/TabModel.js.map +1 -1
  55. package/esm/models/taskgroup/TaskGroupModel.js +6 -0
  56. package/esm/models/taskgroup/TaskGroupModel.js.map +1 -1
  57. package/esm/models/types.js.map +1 -1
  58. package/esm/models/user/UserModel.js +6 -0
  59. package/esm/models/user/UserModel.js.map +1 -1
  60. package/esm/models/user/UserProfileModel.js +6 -0
  61. package/esm/models/user/UserProfileModel.js.map +1 -1
  62. package/esm/models/user/UserServicesModel.js +6 -0
  63. package/esm/models/user/UserServicesModel.js.map +1 -1
  64. package/esm/modularui/ModularUIRequest.js +54 -10
  65. package/esm/modularui/ModularUIRequest.js.map +1 -1
  66. package/esm/modularui/types.js +2 -0
  67. package/esm/modularui/types.js.map +1 -0
  68. package/esm/redux/_modularui/ModularUIActions.js +2 -0
  69. package/esm/redux/_modularui/ModularUIActions.js.map +1 -1
  70. package/esm/redux/_modularui/ModularUIMiddleware.js +1 -0
  71. package/esm/redux/_modularui/ModularUIMiddleware.js.map +1 -1
  72. package/esm/redux/_modularui/types.js.map +1 -1
  73. package/esm/redux/_modularui/withModularUI.js.map +1 -1
  74. package/esm/utils/fetch/types.js.map +1 -1
  75. package/lib/constants/Constants.js +7 -1
  76. package/lib/constants/Constants.js.flow +6 -0
  77. package/lib/constants/Constants.js.map +1 -1
  78. package/lib/hooks/__tests__/UseModularUIModel.spec.js.flow +1 -1
  79. package/lib/hooks/__tests__/useModelCatalog.spec.js.flow +1 -1
  80. package/lib/hooks/__tests__/useModularUIBasic.spec.js.flow +2 -2
  81. package/lib/hooks/useAuthentication.js +4 -4
  82. package/lib/hooks/useAuthentication.js.flow +17 -5
  83. package/lib/hooks/useAuthentication.js.map +1 -1
  84. package/lib/hooks/useModularUI.js.flow +2 -2
  85. package/lib/hooks/useModularUI.js.map +1 -1
  86. package/lib/hooks/useModularUIBasic.js +7 -1
  87. package/lib/hooks/useModularUIBasic.js.flow +14 -4
  88. package/lib/hooks/useModularUIBasic.js.map +1 -1
  89. package/lib/hooks/useModularUIModel.js +11 -2
  90. package/lib/hooks/useModularUIModel.js.flow +19 -10
  91. package/lib/hooks/useModularUIModel.js.map +1 -1
  92. package/lib/hooks/useModularUIRequest.js +5 -7
  93. package/lib/hooks/useModularUIRequest.js.flow +12 -11
  94. package/lib/hooks/useModularUIRequest.js.map +1 -1
  95. package/lib/models/application/ApplicationModel.js +8 -1
  96. package/lib/models/application/ApplicationModel.js.flow +10 -1
  97. package/lib/models/application/ApplicationModel.js.map +1 -1
  98. package/lib/models/base/ResourceModel.js +7 -0
  99. package/lib/models/base/ResourceModel.js.flow +7 -0
  100. package/lib/models/base/ResourceModel.js.map +1 -1
  101. package/lib/models/caseview/CaseViewModel.js +6 -0
  102. package/lib/models/caseview/CaseViewModel.js.flow +6 -0
  103. package/lib/models/caseview/CaseViewModel.js.map +1 -1
  104. package/lib/models/concepts/BusinessScenarioModel.js +6 -0
  105. package/lib/models/concepts/BusinessScenarioModel.js.flow +6 -0
  106. package/lib/models/concepts/BusinessScenarioModel.js.map +1 -1
  107. package/lib/models/concepts/ConceptDetailModel.js +6 -0
  108. package/lib/models/concepts/ConceptDetailModel.js.flow +6 -0
  109. package/lib/models/concepts/ConceptDetailModel.js.map +1 -1
  110. package/lib/models/concepts/ConceptIndexModel.js +6 -0
  111. package/lib/models/concepts/ConceptIndexModel.js.flow +6 -0
  112. package/lib/models/concepts/ConceptIndexModel.js.map +1 -1
  113. package/lib/models/concepts/ConceptTypeDetailModel.js +6 -0
  114. package/lib/models/concepts/ConceptTypeDetailModel.js.flow +6 -0
  115. package/lib/models/concepts/ConceptTypeDetailModel.js.map +1 -1
  116. package/lib/models/content/ContentIndexModel.js +6 -0
  117. package/lib/models/content/ContentIndexModel.js.flow +6 -0
  118. package/lib/models/content/ContentIndexModel.js.map +1 -1
  119. package/lib/models/content/ContentModel.js +6 -0
  120. package/lib/models/content/ContentModel.js.flow +6 -0
  121. package/lib/models/content/ContentModel.js.map +1 -1
  122. package/lib/models/content/ContentTOCModel.js +6 -0
  123. package/lib/models/content/ContentTOCModel.js.flow +6 -0
  124. package/lib/models/content/ContentTOCModel.js.map +1 -1
  125. package/lib/models/content/ContentTypeModel.js +6 -0
  126. package/lib/models/content/ContentTypeModel.js.flow +6 -0
  127. package/lib/models/content/ContentTypeModel.js.map +1 -1
  128. package/lib/models/detail/DetailModel.js +6 -0
  129. package/lib/models/detail/DetailModel.js.flow +6 -0
  130. package/lib/models/detail/DetailModel.js.map +1 -1
  131. package/lib/models/form/FormModel.js +6 -0
  132. package/lib/models/form/FormModel.js.flow +6 -0
  133. package/lib/models/form/FormModel.js.map +1 -1
  134. package/lib/models/list/ListDetailModel.js +6 -0
  135. package/lib/models/list/ListDetailModel.js.flow +6 -0
  136. package/lib/models/list/ListDetailModel.js.map +1 -1
  137. package/lib/models/list/ListModel.js +6 -0
  138. package/lib/models/list/ListModel.js.flow +6 -0
  139. package/lib/models/list/ListModel.js.map +1 -1
  140. package/lib/models/lookup/LookupOptionsModel.js +6 -0
  141. package/lib/models/lookup/LookupOptionsModel.js.flow +6 -0
  142. package/lib/models/lookup/LookupOptionsModel.js.map +1 -1
  143. package/lib/models/modelcatalog/ModelCatalogModel.js +6 -0
  144. package/lib/models/modelcatalog/ModelCatalogModel.js.flow +6 -0
  145. package/lib/models/modelcatalog/ModelCatalogModel.js.map +1 -1
  146. package/lib/models/panels/GroupingPanelModel.js +6 -0
  147. package/lib/models/panels/GroupingPanelModel.js.flow +6 -0
  148. package/lib/models/panels/GroupingPanelModel.js.map +1 -1
  149. package/lib/models/resolveModel.js +4 -3
  150. package/lib/models/resolveModel.js.flow +6 -4
  151. package/lib/models/resolveModel.js.map +1 -1
  152. package/lib/models/search/CaseSearchModel.js +6 -0
  153. package/lib/models/search/CaseSearchModel.js.flow +6 -0
  154. package/lib/models/search/CaseSearchModel.js.map +1 -1
  155. package/lib/models/tab/TabModel.js +6 -0
  156. package/lib/models/tab/TabModel.js.flow +6 -0
  157. package/lib/models/tab/TabModel.js.map +1 -1
  158. package/lib/models/taskgroup/TaskGroupModel.js +6 -0
  159. package/lib/models/taskgroup/TaskGroupModel.js.flow +6 -0
  160. package/lib/models/taskgroup/TaskGroupModel.js.map +1 -1
  161. package/lib/models/types.js.flow +1 -1
  162. package/lib/models/types.js.map +1 -1
  163. package/lib/models/user/UserModel.js +6 -0
  164. package/lib/models/user/UserModel.js.flow +6 -0
  165. package/lib/models/user/UserModel.js.map +1 -1
  166. package/lib/models/user/UserProfileModel.js +6 -0
  167. package/lib/models/user/UserProfileModel.js.flow +6 -0
  168. package/lib/models/user/UserProfileModel.js.map +1 -1
  169. package/lib/models/user/UserServicesModel.js +6 -0
  170. package/lib/models/user/UserServicesModel.js.flow +6 -0
  171. package/lib/models/user/UserServicesModel.js.map +1 -1
  172. package/lib/modularui/ModularUIRequest.js +54 -10
  173. package/lib/modularui/ModularUIRequest.js.flow +83 -17
  174. package/lib/modularui/ModularUIRequest.js.map +1 -1
  175. package/lib/modularui/__tests__/ModularUIRequest.spec.js.flow +4 -9
  176. package/lib/modularui/types.js +2 -0
  177. package/lib/modularui/types.js.flow +4 -0
  178. package/lib/modularui/types.js.map +1 -0
  179. package/lib/redux/_modularui/ModularUIActions.js +2 -0
  180. package/lib/redux/_modularui/ModularUIActions.js.flow +6 -4
  181. package/lib/redux/_modularui/ModularUIActions.js.map +1 -1
  182. package/lib/redux/_modularui/ModularUIMiddleware.js +1 -0
  183. package/lib/redux/_modularui/ModularUIMiddleware.js.flow +5 -2
  184. package/lib/redux/_modularui/ModularUIMiddleware.js.map +1 -1
  185. package/lib/redux/_modularui/types.js.flow +5 -3
  186. package/lib/redux/_modularui/types.js.map +1 -1
  187. package/lib/redux/_modularui/withModularUI.js.flow +2 -2
  188. package/lib/redux/_modularui/withModularUI.js.map +1 -1
  189. package/lib/utils/fetch/types.js.flow +12 -4
  190. package/lib/utils/fetch/types.js.map +1 -1
  191. package/package.json +7 -7
  192. package/src/constants/Constants.js +6 -0
  193. package/src/hooks/__tests__/UseModularUIModel.spec.js +1 -1
  194. package/src/hooks/__tests__/useModelCatalog.spec.js +1 -1
  195. package/src/hooks/__tests__/useModularUIBasic.spec.js +2 -2
  196. package/src/hooks/useAuthentication.js +17 -5
  197. package/src/hooks/useModularUI.js +2 -2
  198. package/src/hooks/useModularUIBasic.js +14 -4
  199. package/src/hooks/useModularUIModel.js +19 -10
  200. package/src/hooks/useModularUIRequest.js +12 -11
  201. package/src/models/application/ApplicationModel.js +10 -1
  202. package/src/models/base/ResourceModel.js +7 -0
  203. package/src/models/caseview/CaseViewModel.js +6 -0
  204. package/src/models/concepts/BusinessScenarioModel.js +6 -0
  205. package/src/models/concepts/ConceptDetailModel.js +6 -0
  206. package/src/models/concepts/ConceptIndexModel.js +6 -0
  207. package/src/models/concepts/ConceptTypeDetailModel.js +6 -0
  208. package/src/models/content/ContentIndexModel.js +6 -0
  209. package/src/models/content/ContentModel.js +6 -0
  210. package/src/models/content/ContentTOCModel.js +6 -0
  211. package/src/models/content/ContentTypeModel.js +6 -0
  212. package/src/models/detail/DetailModel.js +6 -0
  213. package/src/models/form/FormModel.js +6 -0
  214. package/src/models/list/ListDetailModel.js +6 -0
  215. package/src/models/list/ListModel.js +6 -0
  216. package/src/models/lookup/LookupOptionsModel.js +6 -0
  217. package/src/models/modelcatalog/ModelCatalogModel.js +6 -0
  218. package/src/models/panels/GroupingPanelModel.js +6 -0
  219. package/src/models/resolveModel.js +6 -4
  220. package/src/models/search/CaseSearchModel.js +6 -0
  221. package/src/models/tab/TabModel.js +6 -0
  222. package/src/models/taskgroup/TaskGroupModel.js +6 -0
  223. package/src/models/types.js +1 -1
  224. package/src/models/user/UserModel.js +6 -0
  225. package/src/models/user/UserProfileModel.js +6 -0
  226. package/src/models/user/UserServicesModel.js +6 -0
  227. package/src/modularui/ModularUIRequest.js +83 -17
  228. package/src/modularui/__tests__/ModularUIRequest.spec.js +4 -9
  229. package/src/modularui/types.js +4 -0
  230. package/src/redux/_modularui/ModularUIActions.js +6 -4
  231. package/src/redux/_modularui/ModularUIMiddleware.js +5 -2
  232. package/src/redux/_modularui/types.js +5 -3
  233. package/src/redux/_modularui/withModularUI.js +2 -2
  234. package/src/utils/fetch/types.js +12 -4
  235. package/types/constants/Constants.d.ts +5 -0
  236. package/types/models/base/ResourceModel.d.ts +4 -0
  237. package/types/models/form/FormObjectModel.d.ts +28 -2
  238. package/types/models/resolveModel.d.ts +1 -1
  239. package/types/models/types.d.ts +1 -1
  240. package/types/modularui/ModularUIRequest.d.ts +15 -7
  241. package/types/modularui/types.d.ts +2 -0
  242. package/types/redux/_modularui/types.d.ts +2 -2
  243. package/types/utils/fetch/types.d.ts +8 -5
@@ -1 +1 @@
1
- {"version":3,"file":"ModularUIRequest.js","names":["deepmerge","BASE","HTTP_METHODS","TIMEVERSION_FILTER_NAME","HIDE_WHEN_EMPTY","getSetting","Href","universalFetch","resolveModel","FormModel","ContentModel","ModularUIResponse","ModularUIError","IllegalArgumentException","IllegalStateException","isPlainObject","ModularUIRequest","constructor","href","options","GET","_response","locale","parameters","targetModel","method","contributionsHref","_contributionsHref","_locale","response","_href","_method","_options","withChildModels","childmodels","_targetModel","createModel","Model","isApplicableModel","processContributionsService","contributionsData","contributionsKey","error","handleContributionsError","key","contributions","errorMessage","properties","message","handleDataError","path","toString","handleData","data","links","_links","Array","isArray","processDataService","fetchContributionsService","url","cache","fetchDataService","params","getQuerystringForModularUI","onProgress","processAsyncLayoutHints","processApplicationLinks","processTabLinks","processPanelLinks","resolve","contributionLinks","dataLinks","contributionTabLink","tab","dataTabLinks","dataLink","name","processLinks","components","then","newLinks","replaceApplicationLinks","tabName","tabLink","component","panel","dataLinksPerName","linksPerName","hideWhenEmptyLinks","contributionLink","layouthint","includes","isHiddenListChecks","push","isHiddenList","all","hiddenLinks","newDataLinks","dataLinkKey","HIDE_WHEN_EMPTY_IGNORE_TASKS","_embedded","actions","noListItems","noActions","isHidden","catch","progressEvent","_progressEvent","getDynamicValidationData","model","prevData","JSON","parse","newData","validationData","loadDynamicValidations","isValidationRequest","currentFormObject","hasDynamicValidations","validationHref","setParameter","updateValidations","fetch","Error","fetchChildModels","fetchFromCache","childModelLinks","getInitialChildModelLinks","childModelRequests","childModelLink","request","isCacheable","allSettled","childModels","resolvedChildModels","forEach","childModel","status","reason","console","value","addChildModels","fetchContent","withChildSections","childSectionLinks","length","fetchContentChildSections","contentModel","newContentModel","clone","childSectionLink","contentHrefWithEntryDate","selfhref","addParameter","entryDate","sectionModels","childSections","post","POST","postForm","form","formdata","update"],"sources":["../../src/modularui/ModularUIRequest.js"],"sourcesContent":["// @flow\nimport deepmerge from \"deepmerge\";\n\nimport {\n BASE,\n HTTP_METHODS,\n TIMEVERSION_FILTER_NAME,\n} from \"../constants/Constants\";\n\nimport { HIDE_WHEN_EMPTY } from \"../constants/LayoutHints\";\n\nimport { getSetting } from \"../constants/Settings\";\n\nimport Href from \"../models/href/Href\";\n\nimport universalFetch from \"../utils/fetch/universalFetch\";\nimport resolveModel from \"../models/resolveModel\";\nimport FormModel from \"../models/form/FormModel\";\nimport ContentModel from \"../models/content/ContentModel\";\n\nimport ModularUIResponse from \"./ModularUIResponse\";\n\nimport ModularUIError from \"./ModularUIError\";\nimport { IllegalArgumentException, IllegalStateException } from \"../exceptions\";\n\nimport { isPlainObject } from \"../utils/helpers/objects\";\n\nimport type { RequestBaseOptions } from \"../utils/fetch/types\";\nimport type { ModularUIModel } from \"../models/types\";\n\n/**\n * Helper for fetching data and contributions from the Be Informed modular ui\n * and merge it into a target or resolvable model.\n */\nclass ModularUIRequest {\n _response: ModularUIResponse;\n\n _href: Href;\n _options: RequestBaseOptions;\n _targetModel: ?Class<ModularUIModel>;\n _contributionsHref: string;\n _locale: string;\n _method: $Keys<typeof HTTP_METHODS> = HTTP_METHODS.GET;\n\n _progressEvent: ProgressEventHandler;\n\n /**\n */\n constructor(href: Href | string, options: $Shape<RequestBaseOptions> = {}) {\n if (!href) {\n throw new IllegalArgumentException(\n \"You must pass a href to the resource that is requested\"\n );\n }\n\n this.options = options;\n\n this._response = new ModularUIResponse();\n\n this.href = typeof href === \"string\" ? new Href(href) : href;\n this.locale = options.locale ?? \"en\";\n\n // copy request parameters to response, to be able to use them in the models\n // self links are missing the request parameters\n this._response.parameters = this.href.parameters;\n\n if (options.targetModel) {\n this.targetModel = options.targetModel;\n }\n\n if (options.method) {\n this.method = options.method;\n } else {\n this.method = this.href.method;\n }\n }\n\n /**\n */\n get contributionsHref(): string {\n return this._contributionsHref;\n }\n\n /**\n */\n set contributionsHref(contributionsHref: string) {\n this._contributionsHref = contributionsHref;\n }\n\n /**\n */\n set locale(locale: string) {\n this._locale = locale;\n this._response.locale = locale;\n }\n\n /**\n */\n get locale(): string {\n return this._locale;\n }\n\n /**\n */\n get response(): ModularUIResponse {\n return this._response;\n }\n\n /**\n */\n set href(href: Href) {\n this._href = href;\n }\n\n /**\n */\n get href(): Href {\n return this._href;\n }\n\n /**\n */\n set method(method: $Keys<typeof HTTP_METHODS>) {\n this._method = method;\n }\n\n /**\n */\n get method(): $Keys<typeof HTTP_METHODS> {\n return this._method;\n }\n\n /**\n */\n get options(): RequestBaseOptions {\n return {\n ...this._options,\n locale: this.locale,\n method: this.method,\n };\n }\n\n /**\n */\n set options(options: RequestBaseOptions) {\n this._options = options;\n }\n\n /**\n */\n get withChildModels(): boolean {\n return (\n !(\"childmodels\" in this.options) || this.options.childmodels === true\n );\n }\n\n /**\n */\n set targetModel(targetModel: ?Class<ModularUIModel>) {\n this._targetModel = targetModel;\n }\n\n /**\n */\n get targetModel(): ?Class<ModularUIModel> {\n return this._targetModel;\n }\n\n /**\n */\n createModel(): ModularUIModel {\n const Model = this.targetModel || resolveModel(this.response);\n\n // check for ResourceModel\n if (Model && Model.isApplicableModel) {\n return new Model(this.response);\n }\n\n throw new IllegalStateException(\n `No model available for data: ${JSON.stringify(this.response)}`\n );\n }\n\n /**\n */\n processContributionsService(contributionsData: Object): void {\n if (!isPlainObject(contributionsData)) {\n throw new IllegalArgumentException(\n \"Missing contributions data or contributions is not JSON\"\n );\n }\n\n const [contributionsKey] = Object.keys(contributionsData);\n\n if (contributionsData.error && contributionsKey === \"error\") {\n this.handleContributionsError(contributionsData.error);\n }\n\n // The key of the data service is different from the contributions service for forms\n if (!(this.response.key in contributionsData)) {\n this.response.key = contributionsKey;\n }\n\n this.response.contributions = contributionsData[this.response.key];\n }\n\n /**\n */\n handleContributionsError(error: Object): void {\n const errorMessage = error.properties?.message ?? \"Error in contribution\";\n throw new ModularUIError(errorMessage, error, this.contributionsHref);\n }\n\n /**\n */\n handleDataError(error: Object): void {\n if (error.properties) {\n const errorMessage = error.properties?.message ?? \"Error in data\";\n throw new ModularUIError(errorMessage, error, this.href.path.toString());\n }\n\n throw new IllegalArgumentException(error);\n }\n\n /**\n */\n handleData(key: string, data: Object): void {\n this.response.key = key;\n this.response.data = data;\n\n const links = data._links;\n\n if (links && links.contributions) {\n this.contributionsHref = links.contributions.href;\n } else if (Array.isArray(links) && links[0].contributions) {\n this.contributionsHref = links[0].contributions.href;\n } else {\n throw new IllegalArgumentException(\n `Contributions link not found for data with key ${key}`\n );\n }\n }\n\n /**\n */\n processDataService(data: Object): void {\n if (!isPlainObject(data)) {\n throw new IllegalArgumentException(\"Missing data or data is not JSON\");\n }\n\n if (data.error) {\n this.handleDataError(data.error);\n } else {\n const [key] = Object.keys(data);\n this.handleData(key, data[key]);\n }\n }\n\n /**\n */\n fetchContributionsService(): Promise<any> {\n if (!this.contributionsHref) {\n throw new IllegalStateException(\"Missing a contributions href\");\n }\n\n return universalFetch({\n url: `${BASE}${this.contributionsHref}`,\n cache: true,\n locale: this.options.locale,\n });\n }\n\n /**\n */\n fetchDataService(): Promise<any> {\n return universalFetch({\n ...this.options,\n url: `${BASE}${this.href.path}`,\n params: this.href.getQuerystringForModularUI(),\n locale: this.options.locale,\n onProgress: this.onProgress,\n });\n }\n\n /**\n * Check if links contain a 'hide-when-empty' layout hint and remove the link from\n * the component when it exists and no results are available\n */\n async processAsyncLayoutHints(): Promise<void> {\n if (getSetting(\"ALLOW_HIDE_WHEN_EMPTY_ON_TABS\")) {\n await this.processApplicationLinks();\n await this.processTabLinks();\n }\n await this.processPanelLinks();\n\n return Promise.resolve();\n }\n\n /**\n * hide application links<br>\n * _links on application data contains an extra level of tab links\n */\n processApplicationLinks(): Promise<void> {\n const contributionLinks = this.response.contributions._links;\n const dataLinks = this.response.data._links;\n if (!contributionLinks || !dataLinks) {\n return Promise.resolve();\n }\n\n if (\"tab\" in contributionLinks && \"tab\" in dataLinks) {\n for (const contributionTabLink of contributionLinks.tab) {\n if (\"components\" in contributionTabLink) {\n const dataTabLinks = dataLinks.tab.find(\n (dataLink) => dataLink.name === contributionTabLink.name\n );\n\n if (dataTabLinks && \"components\" in dataTabLinks) {\n return this.processLinks(\n dataTabLinks.components,\n contributionTabLink.components\n ).then((newLinks) =>\n this.replaceApplicationLinks(contributionTabLink.name, newLinks)\n );\n }\n }\n }\n }\n\n return Promise.resolve();\n }\n\n /**\n * Replace hidden link in application link tree\n */\n replaceApplicationLinks(tabName: string, newLinks: Array<Object>): void {\n this.response.data._links.tab = this.response.data._links.tab.map(\n (tabLink) => {\n const key = tabLink.name;\n if (tabName === key) {\n tabLink.components = newLinks;\n }\n return tabLink;\n }\n );\n }\n\n /**\n */\n processTabLinks(): Promise<void> {\n const contributionLinks = this.response.contributions._links;\n\n if (!contributionLinks) {\n return Promise.resolve();\n }\n\n if (\"component\" in contributionLinks) {\n return this.processLinks(\n this.response.data._links.component,\n contributionLinks.component\n ).then((newLinks) => {\n this.response.data._links.component = newLinks;\n });\n }\n\n return Promise.resolve();\n }\n\n /**\n */\n processPanelLinks(): Promise<void> {\n const contributionLinks = this.response.contributions._links;\n\n if (!contributionLinks) {\n return Promise.resolve();\n }\n\n if (\"panel\" in contributionLinks) {\n return this.processLinks(\n this.response.data._links,\n contributionLinks.panel\n ).then((newLinks) => {\n this.response.data._links = newLinks;\n });\n }\n\n return Promise.resolve();\n }\n\n /**\n * Retrieve an object of key: link\n */\n dataLinksPerName(dataLinks: any): { [linkName: string]: any } {\n if (Array.isArray(dataLinks)) {\n const links = {};\n for (const dataLink of dataLinks) {\n links[dataLink.name] = dataLink;\n }\n return links;\n }\n return dataLinks;\n }\n\n /**\n * Check if links are empty and hide them when hide-when-empty hint exists\n */\n processLinks(\n dataLinks: any,\n contributionLinks: any\n ): Promise<Object | Array<Object>> {\n const linksPerName = this.dataLinksPerName(dataLinks);\n const hideWhenEmptyLinks = contributionLinks.filter((contributionLink) =>\n contributionLink.layouthint?.includes(HIDE_WHEN_EMPTY)\n );\n\n const isHiddenListChecks = [];\n\n for (const contributionLink of hideWhenEmptyLinks) {\n const dataLink = linksPerName[contributionLink.name];\n if (dataLink?.href) {\n isHiddenListChecks.push(\n this.isHiddenList(contributionLink.name, dataLink.href)\n );\n }\n }\n\n return Promise.all(isHiddenListChecks).then(\n (hiddenLinks: Array<string>) => {\n if (Array.isArray(dataLinks)) {\n return dataLinks.filter(\n (dataLink) => !hiddenLinks.includes(dataLink.name)\n );\n }\n\n const newDataLinks: { [string]: any } = {};\n for (const dataLinkKey in dataLinks) {\n if (!hiddenLinks.includes(dataLinkKey)) {\n newDataLinks[dataLinkKey] = dataLinks[dataLinkKey];\n }\n }\n return newDataLinks;\n }\n );\n }\n\n /**\n */\n isHiddenList(name: string, href: string): Promise<string> {\n const HIDE_WHEN_EMPTY_IGNORE_TASKS = getSetting(\n \"HIDE_WHEN_EMPTY_IGNORE_TASKS\",\n false\n );\n\n return universalFetch({\n ...this.options,\n url: `${BASE}${href}`,\n })\n .then((response: Object) => {\n if (isPlainObject(response)) {\n const [key] = Object.keys(response);\n const { _embedded, actions } = response[key];\n\n const noListItems = _embedded === null;\n const noActions = actions == null || HIDE_WHEN_EMPTY_IGNORE_TASKS;\n\n const isHidden = noListItems && noActions;\n if (isHidden) {\n return name;\n }\n }\n return \"\";\n })\n .catch(() => {\n return \"\";\n });\n }\n\n /**\n */\n set onProgress(progressEvent: ProgressEventHandler) {\n this._progressEvent = progressEvent;\n }\n\n /**\n */\n get onProgress(): ProgressEventHandler {\n return this._progressEvent || null;\n }\n\n /**\n * Combine previous send request data with new validation data to create a complete request object\n * The received model is new FormModel containing ONLY the current question, not the previously entered questions\n * to create a complete request we append the originally send form objects\n */\n getDynamicValidationData(model: ModularUIModel): string {\n const prevData =\n typeof this.options.data === \"string\"\n ? JSON.parse(this.options.data)\n : this.options.data;\n\n if (model instanceof FormModel) {\n const newData = JSON.parse(model.validationData);\n // $FlowFixMe incompatible-call\n return JSON.stringify(deepmerge(prevData || {}, newData));\n }\n\n return JSON.stringify(prevData) ?? \"{}\";\n }\n\n /**\n * First load of dynamic values when a form is loaded\n */\n loadDynamicValidations(model: ModularUIModel): Promise<ModularUIModel> {\n if (\n !this.options.isValidationRequest &&\n getSetting(\"USE_INSTANT_SERVER_VALIDATION\") &&\n model instanceof FormModel &&\n model.currentFormObject &&\n model.currentFormObject.hasDynamicValidations\n ) {\n const validationHref = this.href.setParameter(\"commit\", \"false\");\n return universalFetch({\n ...this.options,\n url: `${BASE}${this.href.path}`,\n params: validationHref.getQuerystringForModularUI(),\n childmodels: false,\n data: this.getDynamicValidationData(model),\n }).then((data) => {\n if (data == null || typeof data !== \"object\") {\n return model;\n }\n\n const [key] = Object.keys(data);\n return model.updateValidations(data[key]);\n });\n }\n\n return Promise.resolve(model);\n }\n\n /**\n */\n fetch(): Promise<ModularUIModel> {\n return this.fetchDataService()\n .then((data) => {\n if (data == null) {\n throw new Error(`No data received for ${this.href.toString()}`);\n }\n\n this.processDataService(data);\n return this.fetchContributionsService();\n })\n .then((contributionsData) => {\n if (contributionsData == null) {\n throw new Error(\n `No contributions data received for ${this.contributionsHref}`\n );\n }\n\n this.processContributionsService(contributionsData);\n return this.processAsyncLayoutHints();\n })\n .then(() => Promise.resolve(this.createModel()))\n .then((model) => this.loadDynamicValidations(model))\n .then((model) => {\n if (this.withChildModels) {\n return this.fetchChildModels(model);\n }\n\n return Promise.resolve(model);\n });\n }\n\n /**\n */\n fetchFromCache(): Promise<ModularUIModel> {\n this.options = {\n ...this.options,\n cache: true,\n };\n\n return this.fetch();\n }\n\n /**\n */\n fetchChildModels(model: ModularUIModel): Promise<ModularUIModel> {\n const childModelLinks = model.getInitialChildModelLinks();\n\n const childModelRequests = childModelLinks.map((childModelLink) => {\n const request = new ModularUIRequest(childModelLink.href, {\n locale: this.locale,\n });\n\n if (childModelLink.targetModel) {\n request.targetModel = childModelLink.targetModel;\n }\n\n if (childModelLink.isCacheable) {\n return request.fetchFromCache();\n }\n\n return request.fetch();\n });\n\n return Promise.allSettled(childModelRequests).then((childModels) => {\n const resolvedChildModels = [];\n\n childModels.forEach((childModel) => {\n if (childModel.status === \"rejected\") {\n const { reason } = childModel;\n if (reason.name !== \"Error.ChangePasswordRequired\") {\n console.error(\n \"Unexpected error when retrieving child model:\",\n reason\n );\n }\n } else {\n resolvedChildModels.push(childModel.value);\n }\n });\n\n model.addChildModels(resolvedChildModels);\n\n return model;\n });\n }\n\n /**\n */\n fetchContent(withChildSections: boolean): Promise<mixed> {\n return this.fetchFromCache().then((model) => {\n if (\n withChildSections &&\n model instanceof ContentModel &&\n model.childSectionLinks.length > 0\n ) {\n return this.fetchContentChildSections(model);\n }\n\n return Promise.resolve(model);\n });\n }\n\n /**\n * Recursively return child sections defined on the content model\n */\n fetchContentChildSections(contentModel: ContentModel): Promise<mixed> {\n const newContentModel = contentModel.clone();\n\n return Promise.all(\n contentModel.childSectionLinks.map((childSectionLink) => {\n const contentHrefWithEntryDate = childSectionLink.selfhref.addParameter(\n TIMEVERSION_FILTER_NAME,\n contentModel.entryDate\n );\n\n const request = new ModularUIRequest(contentHrefWithEntryDate, {\n locale: this.locale,\n });\n\n return request.fetchContent(true);\n })\n ).then((sectionModels) => {\n newContentModel.childSections = sectionModels;\n\n return newContentModel;\n });\n }\n\n /**\n * Make a post request with optionally data to send\n * @param data\n */\n post(data?: string | { [key: string]: string }): Promise<ModularUIModel> {\n this.method = HTTP_METHODS.POST;\n this.options = {\n ...this.options,\n data,\n };\n\n return this.fetch();\n }\n\n /**\n * Make a POST request using the form, an updated form is returned (merge of old and new form)\n * @param form\n * @returns {Promise<FormModel>}\n */\n postForm(form: FormModel): Promise<FormModel> {\n this.method = HTTP_METHODS.POST;\n this.options = {\n ...this.options,\n data: form.formdata,\n };\n\n return this.fetch().then((response) => {\n return form.update(response);\n });\n }\n}\n\nexport default ModularUIRequest;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ModularUIRequest.js","names":["deepmerge","BASE","HTTP_METHODS","TIMEVERSION_FILTER_NAME","HIDE_WHEN_EMPTY","getSetting","Href","universalFetch","resolveModel","FormModel","ContentModel","ModularUIResponse","ModularUIError","IllegalArgumentException","IllegalStateException","isPlainObject","ModularUIRequest","constructor","href","options","GET","_response","locale","parameters","targetModel","method","contributionsHref","_contributionsHref","_locale","response","_href","_method","_options","requestOptions","forceTargetModel","updateModel","childmodels","isValidationRequest","removeOnUnmount","withChildModels","_targetModel","_forceTargetModel","availableModels","Array","isArray","Model","isApplicableModel","toString","m","modelName","join","createModel","processContributionsService","contributionsData","contributionsKey","error","handleContributionsError","key","contributions","errorMessage","properties","message","handleDataError","path","handleData","data","links","_links","processDataService","fetchContributionsService","url","cache","fetchDataService","params","getQuerystringForModularUI","onProgress","processAsyncLayoutHints","processApplicationLinks","processTabLinks","processPanelLinks","resolve","contributionLinks","dataLinks","contributionTabLink","tab","dataTabLinks","dataLink","name","processLinks","components","then","newLinks","replaceApplicationLinks","tabName","tabLink","component","panel","dataLinksPerName","linksPerName","hideWhenEmptyLinks","contributionLink","layouthint","includes","isHiddenListChecks","push","isHiddenList","all","hiddenLinks","newDataLinks","dataLinkKey","HIDE_WHEN_EMPTY_IGNORE_TASKS","_embedded","actions","noListItems","noActions","isHidden","catch","progressEvent","_progressEvent","getDynamicValidationData","model","prevData","JSON","parse","newData","validationData","loadDynamicValidations","currentFormObject","hasDynamicValidations","validationHref","setParameter","updateValidations","fetch","Error","fetchChildModels","fetchFromCache","childModelLinks","getInitialChildModelLinks","childModelRequests","childModelLink","request","isCacheable","allSettled","childModels","resolvedChildModels","forEach","childModel","status","reason","console","value","addChildModels","fetchContent","withChildSections","childSectionLinks","length","fetchContentChildSections","contentModel","newContentModel","clone","childSectionLink","contentHrefWithEntryDate","selfhref","addParameter","entryDate","sectionModels","childSections","post","POST","postForm","form","formdata","update"],"sources":["../../src/modularui/ModularUIRequest.js"],"sourcesContent":["// @flow\nimport deepmerge from \"deepmerge\";\n\nimport {\n BASE,\n HTTP_METHODS,\n TIMEVERSION_FILTER_NAME,\n} from \"../constants/Constants\";\n\nimport { HIDE_WHEN_EMPTY } from \"../constants/LayoutHints\";\n\nimport { getSetting } from \"../constants/Settings\";\n\nimport Href from \"../models/href/Href\";\n\nimport universalFetch from \"../utils/fetch/universalFetch\";\nimport resolveModel from \"../models/resolveModel\";\nimport FormModel from \"../models/form/FormModel\";\nimport ContentModel from \"../models/content/ContentModel\";\n\nimport ModularUIResponse from \"./ModularUIResponse\";\n\nimport ModularUIError from \"./ModularUIError\";\nimport { IllegalArgumentException, IllegalStateException } from \"../exceptions\";\n\nimport { isPlainObject } from \"../utils/helpers/objects\";\n\nimport type { TargetModel } from \"./types\";\nimport type {\n RequestBaseOptions,\n RequestModularUIOptions,\n} from \"../utils/fetch/types\";\nimport type { ModularUIModel } from \"../models/types\";\n\n/**\n * Helper for fetching data and contributions from the Be Informed modular ui\n * and merge it into a target or resolvable model.\n */\nclass ModularUIRequest {\n _response: ModularUIResponse;\n\n _href: Href;\n _options: RequestModularUIOptions;\n _targetModel: ?TargetModel;\n _forceTargetModel: boolean = false;\n _contributionsHref: string;\n _locale: string;\n _method: $Keys<typeof HTTP_METHODS> = HTTP_METHODS.GET;\n\n _progressEvent: ProgressEventHandler;\n\n /**\n */\n constructor(\n href: Href | string,\n options: $Shape<RequestModularUIOptions> = {}\n ) {\n if (!href) {\n throw new IllegalArgumentException(\n \"You must pass a href to the resource that is requested\"\n );\n }\n\n this.options = options;\n\n this._response = new ModularUIResponse();\n\n this.href = typeof href === \"string\" ? new Href(href) : href;\n this.locale = options.locale ?? \"en\";\n\n // copy request parameters to response, to be able to use them in the models\n // self links are missing the request parameters\n this._response.parameters = this.href.parameters;\n\n if (options.targetModel) {\n this.targetModel = options.targetModel;\n }\n\n if (options.method) {\n this.method = options.method;\n } else {\n this.method = this.href.method;\n }\n }\n\n /**\n */\n get contributionsHref(): string {\n return this._contributionsHref;\n }\n\n /**\n */\n set contributionsHref(contributionsHref: string) {\n this._contributionsHref = contributionsHref;\n }\n\n /**\n */\n set locale(locale: string) {\n this._locale = locale;\n this._response.locale = locale;\n }\n\n /**\n */\n get locale(): string {\n return this._locale;\n }\n\n /**\n */\n get response(): ModularUIResponse {\n return this._response;\n }\n\n /**\n */\n set href(href: Href) {\n this._href = href;\n }\n\n /**\n */\n get href(): Href {\n return this._href;\n }\n\n /**\n */\n set method(method: $Keys<typeof HTTP_METHODS>) {\n this._method = method;\n }\n\n /**\n */\n get method(): $Keys<typeof HTTP_METHODS> {\n return this._method;\n }\n\n /**\n */\n get options(): RequestModularUIOptions {\n return {\n ...this._options,\n locale: this.locale,\n method: this.method,\n };\n }\n\n /**\n */\n get requestOptions(): RequestBaseOptions {\n /* eslint-disable no-unused-vars */\n const {\n targetModel,\n forceTargetModel,\n updateModel,\n childmodels,\n isValidationRequest,\n removeOnUnmount,\n ...requestOptions\n } = this.options;\n /* eslint-enable no-unused-vars */\n return requestOptions;\n }\n\n /**\n */\n set options(options: RequestModularUIOptions) {\n this._options = options;\n }\n\n /**\n */\n get withChildModels(): boolean {\n return (\n !(\"childmodels\" in this.options) || this.options.childmodels === true\n );\n }\n\n /**\n */\n set targetModel(targetModel: TargetModel) {\n this._targetModel = targetModel;\n }\n\n /**\n */\n get targetModel(): ?TargetModel {\n return this._targetModel;\n }\n\n /**\n */\n set forceTargetModel(forceTargetModel: boolean) {\n this._forceTargetModel = forceTargetModel ?? false;\n }\n\n /**\n */\n get forceTargetModel(): boolean {\n return this._forceTargetModel;\n }\n\n /**\n */\n resolveModel(): Class<ModularUIModel> {\n let availableModels;\n if (this.targetModel) {\n availableModels = Array.isArray(this.targetModel)\n ? [...this.targetModel]\n : [this.targetModel];\n\n if (this.forceTargetModel) {\n return availableModels[0];\n }\n }\n\n const Model: Class<ModularUIModel> | null = resolveModel(\n this.response,\n availableModels\n );\n\n if (Model && Model.isApplicableModel) {\n return Model;\n }\n\n if (availableModels) {\n throw new IllegalStateException(\n `data for ${this.href.toString()} is not applicable for model(s): ${availableModels\n .map((m) => m.modelName)\n .join(\", \")}, received response: ${JSON.stringify(this.response)}`\n );\n }\n\n throw new IllegalStateException(\n `no javascript model is applicable for received request of ${this.href.toString()}, with response: ${JSON.stringify(\n this.response\n )}`\n );\n }\n\n /**\n */\n createModel(): ModularUIModel {\n const Model = this.resolveModel();\n return new Model(this.response);\n }\n\n /**\n */\n processContributionsService(contributionsData: Object): void {\n if (!isPlainObject(contributionsData)) {\n throw new IllegalArgumentException(\n \"Missing contributions data or contributions is not JSON\"\n );\n }\n\n const [contributionsKey] = Object.keys(contributionsData);\n\n if (contributionsData.error && contributionsKey === \"error\") {\n this.handleContributionsError(contributionsData.error);\n }\n\n // The key of the data service is different from the contributions service for forms\n if (!(this.response.key in contributionsData)) {\n this.response.key = contributionsKey;\n }\n\n this.response.contributions = contributionsData[this.response.key];\n }\n\n /**\n */\n handleContributionsError(error: Object): void {\n const errorMessage = error.properties?.message ?? \"Error in contribution\";\n throw new ModularUIError(errorMessage, error, this.contributionsHref);\n }\n\n /**\n */\n handleDataError(error: Object): void {\n if (error.properties) {\n const errorMessage = error.properties?.message ?? \"Error in data\";\n throw new ModularUIError(errorMessage, error, this.href.path.toString());\n }\n\n throw new IllegalArgumentException(error);\n }\n\n /**\n */\n handleData(key: string, data: Object): void {\n this.response.key = key;\n this.response.data = data;\n\n const links = data._links;\n\n if (links && links.contributions) {\n this.contributionsHref = links.contributions.href;\n } else if (Array.isArray(links) && links[0].contributions) {\n this.contributionsHref = links[0].contributions.href;\n } else {\n throw new IllegalArgumentException(\n `Contributions link not found for data with key ${key}`\n );\n }\n }\n\n /**\n */\n processDataService(data: Object): void {\n if (!isPlainObject(data)) {\n throw new IllegalArgumentException(\"Missing data or data is not JSON\");\n }\n\n if (data.error) {\n this.handleDataError(data.error);\n } else {\n const [key] = Object.keys(data);\n this.handleData(key, data[key]);\n }\n }\n\n /**\n */\n fetchContributionsService(): Promise<any> {\n if (!this.contributionsHref) {\n throw new IllegalStateException(\"Missing a contributions href\");\n }\n\n return universalFetch({\n url: `${BASE}${this.contributionsHref}`,\n cache: true,\n locale: this.options.locale,\n });\n }\n\n /**\n */\n fetchDataService(): Promise<any> {\n return universalFetch({\n ...this.requestOptions,\n url: `${BASE}${this.href.path}`,\n params: this.href.getQuerystringForModularUI(),\n locale: this.options.locale,\n onProgress: this.onProgress,\n });\n }\n\n /**\n * Check if links contain a 'hide-when-empty' layout hint and remove the link from\n * the component when it exists and no results are available\n */\n async processAsyncLayoutHints(): Promise<void> {\n if (getSetting(\"ALLOW_HIDE_WHEN_EMPTY_ON_TABS\")) {\n await this.processApplicationLinks();\n await this.processTabLinks();\n }\n await this.processPanelLinks();\n\n return Promise.resolve();\n }\n\n /**\n * hide application links<br>\n * _links on application data contains an extra level of tab links\n */\n processApplicationLinks(): Promise<void> {\n const contributionLinks = this.response.contributions._links;\n const dataLinks = this.response.data._links;\n if (!contributionLinks || !dataLinks) {\n return Promise.resolve();\n }\n\n if (\"tab\" in contributionLinks && \"tab\" in dataLinks) {\n for (const contributionTabLink of contributionLinks.tab) {\n if (\"components\" in contributionTabLink) {\n const dataTabLinks = dataLinks.tab.find(\n (dataLink) => dataLink.name === contributionTabLink.name\n );\n\n if (dataTabLinks && \"components\" in dataTabLinks) {\n return this.processLinks(\n dataTabLinks.components,\n contributionTabLink.components\n ).then((newLinks) =>\n this.replaceApplicationLinks(contributionTabLink.name, newLinks)\n );\n }\n }\n }\n }\n\n return Promise.resolve();\n }\n\n /**\n * Replace hidden link in application link tree\n */\n replaceApplicationLinks(tabName: string, newLinks: Array<Object>): void {\n this.response.data._links.tab = this.response.data._links.tab.map(\n (tabLink) => {\n const key = tabLink.name;\n if (tabName === key) {\n tabLink.components = newLinks;\n }\n return tabLink;\n }\n );\n }\n\n /**\n */\n processTabLinks(): Promise<void> {\n const contributionLinks = this.response.contributions._links;\n\n if (!contributionLinks) {\n return Promise.resolve();\n }\n\n if (\"component\" in contributionLinks) {\n return this.processLinks(\n this.response.data._links.component,\n contributionLinks.component\n ).then((newLinks) => {\n this.response.data._links.component = newLinks;\n });\n }\n\n return Promise.resolve();\n }\n\n /**\n */\n processPanelLinks(): Promise<void> {\n const contributionLinks = this.response.contributions._links;\n\n if (!contributionLinks) {\n return Promise.resolve();\n }\n\n if (\"panel\" in contributionLinks) {\n return this.processLinks(\n this.response.data._links,\n contributionLinks.panel\n ).then((newLinks) => {\n this.response.data._links = newLinks;\n });\n }\n\n return Promise.resolve();\n }\n\n /**\n * Retrieve an object of key: link\n */\n dataLinksPerName(dataLinks: any): { [linkName: string]: any } {\n if (Array.isArray(dataLinks)) {\n const links = {};\n for (const dataLink of dataLinks) {\n links[dataLink.name] = dataLink;\n }\n return links;\n }\n return dataLinks;\n }\n\n /**\n * Check if links are empty and hide them when hide-when-empty hint exists\n */\n processLinks(\n dataLinks: any,\n contributionLinks: any\n ): Promise<Object | Array<Object>> {\n const linksPerName = this.dataLinksPerName(dataLinks);\n const hideWhenEmptyLinks = contributionLinks.filter((contributionLink) =>\n contributionLink.layouthint?.includes(HIDE_WHEN_EMPTY)\n );\n\n const isHiddenListChecks = [];\n\n for (const contributionLink of hideWhenEmptyLinks) {\n const dataLink = linksPerName[contributionLink.name];\n if (dataLink?.href) {\n isHiddenListChecks.push(\n this.isHiddenList(contributionLink.name, dataLink.href)\n );\n }\n }\n\n return Promise.all(isHiddenListChecks).then(\n (hiddenLinks: Array<string>) => {\n if (Array.isArray(dataLinks)) {\n return dataLinks.filter(\n (dataLink) => !hiddenLinks.includes(dataLink.name)\n );\n }\n\n const newDataLinks: { [string]: any } = {};\n for (const dataLinkKey in dataLinks) {\n if (!hiddenLinks.includes(dataLinkKey)) {\n newDataLinks[dataLinkKey] = dataLinks[dataLinkKey];\n }\n }\n return newDataLinks;\n }\n );\n }\n\n /**\n */\n isHiddenList(name: string, href: string): Promise<string> {\n const HIDE_WHEN_EMPTY_IGNORE_TASKS = getSetting(\n \"HIDE_WHEN_EMPTY_IGNORE_TASKS\",\n false\n );\n\n return universalFetch({\n ...this.requestOptions,\n url: `${BASE}${href}`,\n })\n .then((response: Object) => {\n if (isPlainObject(response)) {\n const [key] = Object.keys(response);\n const { _embedded, actions } = response[key];\n\n const noListItems = _embedded === null;\n const noActions = actions == null || HIDE_WHEN_EMPTY_IGNORE_TASKS;\n\n const isHidden = noListItems && noActions;\n if (isHidden) {\n return name;\n }\n }\n return \"\";\n })\n .catch(() => {\n return \"\";\n });\n }\n\n /**\n */\n set onProgress(progressEvent: ProgressEventHandler) {\n this._progressEvent = progressEvent;\n }\n\n /**\n */\n get onProgress(): ProgressEventHandler {\n return this._progressEvent || null;\n }\n\n /**\n * Combine previous send request data with new validation data to create a complete request object\n * The received model is new FormModel containing ONLY the current question, not the previously entered questions\n * to create a complete request we append the originally send form objects\n */\n getDynamicValidationData(model: ModularUIModel): string {\n const prevData =\n typeof this.options.data === \"string\"\n ? JSON.parse(this.options.data)\n : this.options.data;\n\n if (model instanceof FormModel) {\n const newData = JSON.parse(model.validationData);\n // $FlowFixMe incompatible-call\n return JSON.stringify(deepmerge(prevData || {}, newData));\n }\n\n return JSON.stringify(prevData) ?? \"{}\";\n }\n\n /**\n * First load of dynamic values when a form is loaded\n */\n loadDynamicValidations(model: ModularUIModel): Promise<ModularUIModel> {\n if (\n !this.options.isValidationRequest &&\n getSetting(\"USE_INSTANT_SERVER_VALIDATION\") &&\n model instanceof FormModel &&\n model.currentFormObject &&\n model.currentFormObject.hasDynamicValidations\n ) {\n const validationHref = this.href.setParameter(\"commit\", \"false\");\n return universalFetch({\n ...this.requestOptions,\n url: `${BASE}${this.href.path}`,\n params: validationHref.getQuerystringForModularUI(),\n data: this.getDynamicValidationData(model),\n }).then((data) => {\n if (data == null || typeof data !== \"object\") {\n return model;\n }\n\n const [key] = Object.keys(data);\n return model.updateValidations(data[key]);\n });\n }\n\n return Promise.resolve(model);\n }\n\n /**\n */\n fetch(): Promise<ModularUIModel> {\n return this.fetchDataService()\n .then((data) => {\n if (data == null) {\n throw new Error(`No data received for ${this.href.toString()}`);\n }\n\n this.processDataService(data);\n return this.fetchContributionsService();\n })\n .then((contributionsData) => {\n if (contributionsData == null) {\n throw new Error(\n `No contributions data received for ${this.contributionsHref}`\n );\n }\n\n this.processContributionsService(contributionsData);\n return this.processAsyncLayoutHints();\n })\n .then(() => Promise.resolve(this.createModel()))\n .then((model) => this.loadDynamicValidations(model))\n .then((model) => {\n if (this.withChildModels) {\n return this.fetchChildModels(model);\n }\n\n return Promise.resolve(model);\n });\n }\n\n /**\n */\n fetchFromCache(): Promise<ModularUIModel> {\n this.options = {\n ...this.options,\n cache: true,\n };\n\n return this.fetch();\n }\n\n /**\n */\n fetchChildModels(model: ModularUIModel): Promise<ModularUIModel> {\n const childModelLinks = model.getInitialChildModelLinks();\n\n const childModelRequests = childModelLinks.map((childModelLink) => {\n const request = new ModularUIRequest(childModelLink.href, {\n locale: this.locale,\n });\n\n if (childModelLink.targetModel) {\n request.targetModel = childModelLink.targetModel;\n }\n\n if (childModelLink.isCacheable) {\n return request.fetchFromCache();\n }\n\n return request.fetch();\n });\n\n return Promise.allSettled(childModelRequests).then((childModels) => {\n const resolvedChildModels = [];\n\n childModels.forEach((childModel) => {\n if (childModel.status === \"rejected\") {\n const { reason } = childModel;\n if (reason.name !== \"Error.ChangePasswordRequired\") {\n console.error(\n \"Unexpected error when retrieving child model:\",\n reason\n );\n }\n } else {\n resolvedChildModels.push(childModel.value);\n }\n });\n\n model.addChildModels(resolvedChildModels);\n\n return model;\n });\n }\n\n /**\n */\n fetchContent(withChildSections: boolean): Promise<mixed> {\n return this.fetchFromCache().then((model) => {\n if (\n withChildSections &&\n model instanceof ContentModel &&\n model.childSectionLinks.length > 0\n ) {\n return this.fetchContentChildSections(model);\n }\n\n return Promise.resolve(model);\n });\n }\n\n /**\n * Recursively return child sections defined on the content model\n */\n fetchContentChildSections(contentModel: ContentModel): Promise<mixed> {\n const newContentModel = contentModel.clone();\n\n return Promise.all(\n contentModel.childSectionLinks.map((childSectionLink) => {\n const contentHrefWithEntryDate = childSectionLink.selfhref.addParameter(\n TIMEVERSION_FILTER_NAME,\n contentModel.entryDate\n );\n\n const request = new ModularUIRequest(contentHrefWithEntryDate, {\n locale: this.locale,\n });\n\n return request.fetchContent(true);\n })\n ).then((sectionModels) => {\n newContentModel.childSections = sectionModels;\n\n return newContentModel;\n });\n }\n\n /**\n * Make a post request with optionally data to send\n * @param data\n */\n post(data?: string | { [key: string]: string }): Promise<ModularUIModel> {\n this.method = HTTP_METHODS.POST;\n this.options = {\n ...this.options,\n data,\n };\n\n return this.fetch();\n }\n\n /**\n * Make a POST request using the form, an updated form is returned (merge of old and new form)\n * @param form\n * @returns {Promise<FormModel>}\n */\n postForm(form: FormModel): Promise<FormModel> {\n this.method = HTTP_METHODS.POST;\n this.options = {\n ...this.options,\n data: form.formdata,\n };\n\n return this.fetch().then((response) => {\n return form.update(response);\n });\n }\n}\n\nexport default ModularUIRequest;\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../src/modularui/types.js"],"sourcesContent":["// @flow\nimport type { ModularUIModel } from \"../models\";\n\nexport type TargetModel = Class<ModularUIModel> | Array<Class<ModularUIModel>>;\n"],"mappings":""}
@@ -65,6 +65,7 @@ const loadModelSuccessAction = (key, model, modelToUpdate) => {
65
65
  };
66
66
 
67
67
  /**
68
+ * This action is handled by the modularui middleware
68
69
  */
69
70
  export const loadModel = (key, href, options) => ({
70
71
  type: "MODULARUI/FETCH",
@@ -75,6 +76,7 @@ export const loadModel = (key, href, options) => ({
75
76
  locale: options?.locale ?? "en",
76
77
  childmodels: options?.childmodels,
77
78
  targetModel: options?.targetModel,
79
+ forceTargetModel: options?.forceTargetModel,
78
80
  /**
79
81
  */
80
82
  successAction: model => loadModelSuccessAction(key, model, options?.updateModel),
@@ -1 +1 @@
1
- {"version":3,"file":"ModularUIActions.js","names":["HTTP_METHODS","MODULARUI_STATUS","Href","ErrorResponse","finishProgress","startProgress","handleError","setModel","key","model","connectKey","type","payload","updateModel","removeModelByKey","resetModularUI","updateStatus","status","loadModelSuccessAction","modelToUpdate","clonedModel","clone","update","Error","loadModel","href","options","method","GET","data","locale","childmodels","targetModel","successAction","errorAction","error","errorResponse","isChangePassword","isResourceNotFoundAfterReload","ERROR","loadModularUI","dispatch","LOADING","loadModelPromise","resolve","then","response","FINISHED","catch","reloadModel","selfhref","isReload"],"sources":["../../../src/redux/_modularui/ModularUIActions.js"],"sourcesContent":["// @flow\nimport { HTTP_METHODS, MODULARUI_STATUS } from \"../../constants/Constants\";\nimport Href from \"../../models/href/Href\";\nimport ErrorResponse from \"../../models/error/ErrorResponse\";\nimport { finishProgress, startProgress } from \"../actions/ProgressIndicator\";\nimport { handleError } from \"../actions/Error\";\n\nimport type { ModularUIModel } from \"../../models/types\";\nimport type { Dispatch, ThunkAction } from \"../types\";\nimport type {\n ModularUIAction,\n SetModelAction,\n UpdateModelAction,\n RemoveModelByKeyAction,\n ResetModularUIAction,\n UpdateStatusAction,\n} from \"./types\";\nimport type { RequestBaseOptions } from \"../../utils/fetch/types\";\n\n/**\n */\nexport const setModel = (\n key: string,\n model: ModularUIModel\n): SetModelAction => {\n // set key on model for later reference\n model.connectKey = key;\n return {\n type: \"MODULARUI/SET\",\n payload: {\n key,\n model,\n },\n };\n};\n\n/**\n */\nexport const updateModel = (model: ModularUIModel): UpdateModelAction => ({\n type: \"MODULARUI/UPDATE\",\n payload: model,\n});\n\n/**\n */\nexport const removeModelByKey = (key: string): RemoveModelByKeyAction => ({\n type: \"MODULARUI/REMOVE_KEY\",\n payload: key,\n});\n\n/**\n * Removes all models except the application model from the modular ui reducer\n */\nexport const resetModularUI = (): ResetModularUIAction => ({\n type: \"MODULARUI/RESET\",\n});\n\n/**\n */\nexport const updateStatus = (\n key: string,\n status: $Keys<typeof MODULARUI_STATUS>\n): UpdateStatusAction => ({\n type: \"MODULARUI/STATUS\",\n payload: { key, status },\n});\n\n/**\n */\nconst loadModelSuccessAction = (\n key: string,\n model: ModularUIModel,\n modelToUpdate: ?ModularUIModel\n): UpdateModelAction | SetModelAction => {\n if (modelToUpdate) {\n // $FlowFixMe[prop-missing]\n if (typeof modelToUpdate[\"update\"] === \"function\") {\n const clonedModel = modelToUpdate.clone();\n clonedModel.update(model);\n\n return updateModel(clonedModel);\n }\n\n throw new Error(\n `loadModel action: updateModel is set as option for ${key}, but the model is missing an update methode`\n );\n }\n\n return setModel(key, model);\n};\n\n/**\n */\nexport const loadModel = (\n key: string,\n href: Href | string,\n options?: RequestBaseOptions\n): ModularUIAction => ({\n type: \"MODULARUI/FETCH\",\n payload: {\n href: href instanceof Href ? href : new Href(href),\n method: options?.method ?? HTTP_METHODS.GET,\n data: options?.data,\n locale: options?.locale ?? \"en\",\n childmodels: options?.childmodels,\n targetModel: options?.targetModel,\n /**\n */\n successAction: (model) =>\n loadModelSuccessAction(key, model, options?.updateModel),\n /**\n */\n errorAction: (error) => {\n const errorResponse = new ErrorResponse(error, key);\n if (errorResponse.isChangePassword) {\n return {\n type: \"NO_ACTION\",\n };\n } else if (errorResponse.isResourceNotFoundAfterReload) {\n return removeModelByKey(key);\n }\n\n return updateStatus(key, MODULARUI_STATUS.ERROR);\n },\n },\n});\n\n/**\n */\nexport const loadModularUI =\n (\n key: string,\n href: Href | string,\n options?: RequestBaseOptions\n ): ThunkAction =>\n (dispatch: Dispatch) => {\n dispatch(updateStatus(key, MODULARUI_STATUS.LOADING));\n dispatch(startProgress());\n\n const loadModelPromise = dispatch(loadModel(key, href, options));\n\n return Promise.resolve(loadModelPromise)\n .then((response) => {\n if (response?.type === \"FINISH_PROGRESS\") {\n dispatch(updateStatus(key, MODULARUI_STATUS.FINISHED));\n }\n\n return dispatch(finishProgress());\n })\n .catch((error) => dispatch(handleError(error)));\n };\n\n/**\n */\nexport const reloadModel = (\n model: ModularUIModel,\n options?: RequestBaseOptions\n): ThunkAction =>\n loadModularUI(model.connectKey, model.selfhref, {\n ...options,\n isReload: true,\n });\n"],"mappings":"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"}
1
+ {"version":3,"file":"ModularUIActions.js","names":["HTTP_METHODS","MODULARUI_STATUS","Href","ErrorResponse","finishProgress","startProgress","handleError","setModel","key","model","connectKey","type","payload","updateModel","removeModelByKey","resetModularUI","updateStatus","status","loadModelSuccessAction","modelToUpdate","clonedModel","clone","update","Error","loadModel","href","options","method","GET","data","locale","childmodels","targetModel","forceTargetModel","successAction","errorAction","error","errorResponse","isChangePassword","isResourceNotFoundAfterReload","ERROR","loadModularUI","dispatch","LOADING","loadModelPromise","resolve","then","response","FINISHED","catch","reloadModel","selfhref","isReload"],"sources":["../../../src/redux/_modularui/ModularUIActions.js"],"sourcesContent":["// @flow\nimport { HTTP_METHODS, MODULARUI_STATUS } from \"../../constants/Constants\";\nimport Href from \"../../models/href/Href\";\nimport ErrorResponse from \"../../models/error/ErrorResponse\";\nimport { finishProgress, startProgress } from \"../actions/ProgressIndicator\";\nimport { handleError } from \"../actions/Error\";\n\nimport type { ModularUIModel } from \"../../models/types\";\nimport type { Dispatch, ThunkAction } from \"../types\";\nimport type {\n ModularUIAction,\n SetModelAction,\n UpdateModelAction,\n RemoveModelByKeyAction,\n ResetModularUIAction,\n UpdateStatusAction,\n} from \"./types\";\nimport type { RequestModularUIOptions } from \"../../utils/fetch/types\";\n\n/**\n */\nexport const setModel = (\n key: string,\n model: ModularUIModel\n): SetModelAction => {\n // set key on model for later reference\n model.connectKey = key;\n return {\n type: \"MODULARUI/SET\",\n payload: {\n key,\n model,\n },\n };\n};\n\n/**\n */\nexport const updateModel = (model: ModularUIModel): UpdateModelAction => ({\n type: \"MODULARUI/UPDATE\",\n payload: model,\n});\n\n/**\n */\nexport const removeModelByKey = (key: string): RemoveModelByKeyAction => ({\n type: \"MODULARUI/REMOVE_KEY\",\n payload: key,\n});\n\n/**\n * Removes all models except the application model from the modular ui reducer\n */\nexport const resetModularUI = (): ResetModularUIAction => ({\n type: \"MODULARUI/RESET\",\n});\n\n/**\n */\nexport const updateStatus = (\n key: string,\n status: $Keys<typeof MODULARUI_STATUS>\n): UpdateStatusAction => ({\n type: \"MODULARUI/STATUS\",\n payload: { key, status },\n});\n\n/**\n */\nconst loadModelSuccessAction = (\n key: string,\n model: ModularUIModel,\n modelToUpdate: ?ModularUIModel\n): UpdateModelAction | SetModelAction => {\n if (modelToUpdate) {\n // $FlowFixMe[prop-missing]\n if (typeof modelToUpdate[\"update\"] === \"function\") {\n const clonedModel = modelToUpdate.clone();\n clonedModel.update(model);\n\n return updateModel(clonedModel);\n }\n\n throw new Error(\n `loadModel action: updateModel is set as option for ${key}, but the model is missing an update methode`\n );\n }\n\n return setModel(key, model);\n};\n\n/**\n * This action is handled by the modularui middleware\n */\nexport const loadModel = (\n key: string,\n href: Href | string,\n options?: RequestModularUIOptions\n): ModularUIAction => ({\n type: \"MODULARUI/FETCH\",\n payload: {\n href: href instanceof Href ? href : new Href(href),\n method: options?.method ?? HTTP_METHODS.GET,\n data: options?.data,\n locale: options?.locale ?? \"en\",\n childmodels: options?.childmodels,\n targetModel: options?.targetModel,\n forceTargetModel: options?.forceTargetModel,\n /**\n */\n successAction: (model) =>\n loadModelSuccessAction(key, model, options?.updateModel),\n /**\n */\n errorAction: (error) => {\n const errorResponse = new ErrorResponse(error, key);\n if (errorResponse.isChangePassword) {\n return {\n type: \"NO_ACTION\",\n };\n } else if (errorResponse.isResourceNotFoundAfterReload) {\n return removeModelByKey(key);\n }\n\n return updateStatus(key, MODULARUI_STATUS.ERROR);\n },\n },\n});\n\n/**\n */\nexport const loadModularUI =\n (\n key: string,\n href: Href | string,\n options?: RequestModularUIOptions\n ): ThunkAction =>\n (dispatch: Dispatch) => {\n dispatch(updateStatus(key, MODULARUI_STATUS.LOADING));\n dispatch(startProgress());\n\n const loadModelPromise = dispatch(loadModel(key, href, options));\n\n return Promise.resolve(loadModelPromise)\n .then((response) => {\n if (response?.type === \"FINISH_PROGRESS\") {\n dispatch(updateStatus(key, MODULARUI_STATUS.FINISHED));\n }\n\n return dispatch(finishProgress());\n })\n .catch((error) => dispatch(handleError(error)));\n };\n\n/**\n */\nexport const reloadModel = (\n model: ModularUIModel,\n options?: RequestModularUIOptions\n): ThunkAction =>\n loadModularUI(model.connectKey, model.selfhref, {\n ...options,\n isReload: true,\n });\n"],"mappings":"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"}
@@ -16,6 +16,7 @@ const createRequest = modularui => {
16
16
  });
17
17
  if (modularui.targetModel) {
18
18
  request.targetModel = modularui.targetModel;
19
+ request.forceTargetModel = modularui.forceTargetModel ?? false;
19
20
  }
20
21
  return request;
21
22
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ModularUIMiddleware.js","names":["ModularUIRequest","HTTP_METHODS","startProgress","finishProgress","handleError","createRequest","modularui","request","href","method","GET","data","locale","childmodels","isReload","targetModel","responseHandler","next","dispatch","successAction","model","successResult","then","result","catch","error","Error","errorHandler","errorAction","err","errorResult","handleFetch","action","requestOptions","payload","modularuiRequest","fetch","modularUIMiddleware","api","type","getState","i18n"],"sources":["../../../src/redux/_modularui/ModularUIMiddleware.js"],"sourcesContent":["// @flow\nimport ModularUIRequest from \"../../modularui/ModularUIRequest\";\nimport { HTTP_METHODS } from \"../../constants/Constants\";\n\nimport { startProgress, finishProgress } from \"../actions/ProgressIndicator\";\n\nimport { handleError } from \"../actions/Error\";\n\nimport type { Middleware, MiddlewareAPI } from \"redux\";\nimport type {\n ReduxAction,\n ReduxState,\n Dispatch,\n PossibleAction,\n} from \"../types\";\nimport type { ModularUIModel } from \"../../models/types\";\nimport type Href from \"../../models/href/Href\";\nimport type { ModularUIAction, SuccessAction, ErrorAction } from \"./types\";\n\ntype RequestOptions = {\n href: Href,\n method?: $Keys<typeof HTTP_METHODS>,\n data?: string | { [key: string]: string },\n locale: string,\n childmodels?: boolean,\n targetModel?: Class<ModularUIModel>,\n isReload?: boolean,\n};\n\n/**\n * Symbol key that carries API call info interpreted by this Redux middleware.\n */\nconst createRequest = (modularui: RequestOptions) => {\n const request = new ModularUIRequest(modularui.href, {\n method: modularui.method || HTTP_METHODS.GET,\n data: modularui.data || {},\n locale: modularui.locale,\n childmodels: modularui.childmodels ?? true,\n isReload: modularui.isReload,\n });\n\n if (modularui.targetModel) {\n request.targetModel = modularui.targetModel;\n }\n\n return request;\n};\n\n/**\n */\nconst responseHandler = (\n next: Dispatch,\n dispatch: Dispatch,\n successAction: SuccessAction,\n model: ModularUIModel\n) => {\n if (successAction) {\n const successResult = successAction(model);\n\n if (successResult instanceof Promise) {\n successResult\n .then((result) => {\n dispatch(result);\n })\n .catch((error) => {\n next(handleError(error));\n });\n } else {\n try {\n dispatch(successResult);\n } catch (error) {\n throw new Error(\n `Result of successResult is not a valid redux action: ${error}`\n );\n }\n }\n }\n\n return next(finishProgress());\n};\n\n/**\n */\nconst errorHandler = (\n next: Dispatch,\n dispatch: Dispatch,\n errorAction: ?ErrorAction,\n err: any\n) => {\n dispatch(finishProgress());\n\n if (errorAction) {\n const errorResult = errorAction(err);\n\n if (errorResult instanceof Promise) {\n errorResult.then((result) => dispatch(result));\n } else {\n dispatch(errorResult);\n }\n }\n\n return next(handleError(err));\n};\n\n/**\n */\nconst handleFetch = (\n action: ModularUIAction,\n locale: string,\n dispatch: Dispatch,\n next: Dispatch\n) => {\n dispatch(startProgress());\n\n const { successAction, errorAction, ...requestOptions } = action.payload;\n requestOptions.locale = locale;\n\n const modularuiRequest = createRequest(requestOptions);\n\n return modularuiRequest\n .fetch()\n .then((model) => responseHandler(next, dispatch, successAction, model))\n .catch((error) => errorHandler(next, dispatch, errorAction, error));\n};\n\n/**\n */\nexport const modularUIMiddleware: Middleware<\n ReduxState,\n ReduxAction,\n Dispatch\n> =\n (api: MiddlewareAPI<ReduxState, ReduxAction, Dispatch>) =>\n (next: Dispatch) =>\n (action: PossibleAction) => {\n if (action.type === \"MODULARUI/FETCH\") {\n return handleFetch(\n // $FlowExpectedError[incompatible-exact]\n action,\n api.getState().i18n.locale,\n api.dispatch,\n next\n );\n }\n\n return next(action);\n };\n"],"mappings":"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"}
1
+ {"version":3,"file":"ModularUIMiddleware.js","names":["ModularUIRequest","HTTP_METHODS","startProgress","finishProgress","handleError","createRequest","modularui","request","href","method","GET","data","locale","childmodels","isReload","targetModel","forceTargetModel","responseHandler","next","dispatch","successAction","model","successResult","then","result","catch","error","Error","errorHandler","errorAction","err","errorResult","handleFetch","action","requestOptions","payload","modularuiRequest","fetch","modularUIMiddleware","api","type","getState","i18n"],"sources":["../../../src/redux/_modularui/ModularUIMiddleware.js"],"sourcesContent":["// @flow\nimport ModularUIRequest from \"../../modularui/ModularUIRequest\";\nimport { HTTP_METHODS } from \"../../constants/Constants\";\n\nimport { startProgress, finishProgress } from \"../actions/ProgressIndicator\";\n\nimport { handleError } from \"../actions/Error\";\n\nimport type { Middleware, MiddlewareAPI } from \"redux\";\nimport type {\n ReduxAction,\n ReduxState,\n Dispatch,\n PossibleAction,\n} from \"../types\";\nimport type { ModularUIModel } from \"../../models/types\";\nimport type Href from \"../../models/href/Href\";\nimport type { ModularUIAction, SuccessAction, ErrorAction } from \"./types\";\nimport type { TargetModel } from \"../../modularui/types\";\n\ntype RequestOptions = {\n href: Href,\n method?: $Keys<typeof HTTP_METHODS>,\n data?: string | { [key: string]: string },\n locale: string,\n childmodels?: boolean,\n targetModel?: TargetModel,\n forceTargetModel?: boolean,\n isReload?: boolean,\n};\n\n/**\n * Symbol key that carries API call info interpreted by this Redux middleware.\n */\nconst createRequest = (modularui: RequestOptions): ModularUIRequest => {\n const request = new ModularUIRequest(modularui.href, {\n method: modularui.method || HTTP_METHODS.GET,\n data: modularui.data || {},\n locale: modularui.locale,\n childmodels: modularui.childmodels ?? true,\n isReload: modularui.isReload,\n });\n\n if (modularui.targetModel) {\n request.targetModel = modularui.targetModel;\n request.forceTargetModel = modularui.forceTargetModel ?? false;\n }\n\n return request;\n};\n\n/**\n */\nconst responseHandler = (\n next: Dispatch,\n dispatch: Dispatch,\n successAction: SuccessAction,\n model: ModularUIModel\n) => {\n if (successAction) {\n const successResult = successAction(model);\n\n if (successResult instanceof Promise) {\n successResult\n .then((result) => {\n dispatch(result);\n })\n .catch((error) => {\n next(handleError(error));\n });\n } else {\n try {\n dispatch(successResult);\n } catch (error) {\n throw new Error(\n `Result of successResult is not a valid redux action: ${error}`\n );\n }\n }\n }\n\n return next(finishProgress());\n};\n\n/**\n */\nconst errorHandler = (\n next: Dispatch,\n dispatch: Dispatch,\n errorAction: ?ErrorAction,\n err: any\n) => {\n dispatch(finishProgress());\n\n if (errorAction) {\n const errorResult = errorAction(err);\n\n if (errorResult instanceof Promise) {\n errorResult.then((result) => dispatch(result));\n } else {\n dispatch(errorResult);\n }\n }\n\n return next(handleError(err));\n};\n\n/**\n */\nconst handleFetch = (\n action: ModularUIAction,\n locale: string,\n dispatch: Dispatch,\n next: Dispatch\n) => {\n dispatch(startProgress());\n\n const { successAction, errorAction, ...requestOptions } = action.payload;\n requestOptions.locale = locale;\n\n const modularuiRequest = createRequest(requestOptions);\n\n return modularuiRequest\n .fetch()\n .then((model) => responseHandler(next, dispatch, successAction, model))\n .catch((error) => errorHandler(next, dispatch, errorAction, error));\n};\n\n/**\n */\nexport const modularUIMiddleware: Middleware<\n ReduxState,\n ReduxAction,\n Dispatch\n> =\n (api: MiddlewareAPI<ReduxState, ReduxAction, Dispatch>) =>\n (next: Dispatch) =>\n (action: PossibleAction) => {\n if (action.type === \"MODULARUI/FETCH\") {\n return handleFetch(\n // $FlowExpectedError[incompatible-exact]\n action,\n api.getState().i18n.locale,\n api.dispatch,\n next\n );\n }\n\n return next(action);\n };\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/redux/_modularui/types.js"],"sourcesContent":["// @flow\nimport type { ModularUIModel } from \"../../models/types\";\nimport type Href from \"../../models/href/Href\";\nimport type { FetchException } from \"../../exceptions\";\nimport type { NoAction } from \"../types\";\nimport typeof {\n HTTP_METHODS,\n MODULARUI_STATUS,\n} from \"../../constants/Constants\";\nimport type { RequestBaseOptions } from \"../../utils/fetch/types\";\nimport type { ComponentType } from \"react\";\n\nexport type ModularUIOptions = {\n propName?: string,\n removeOnUnmount?: boolean,\n ...RequestBaseOptions,\n};\n\nexport type ModelEntry = {\n +status: string,\n +model: ModularUIModel,\n +lastModification: number,\n};\n\nexport type ModularUIState = {\n [string]: ModelEntry,\n ...\n};\n\nexport type SetModelAction = {\n type: \"MODULARUI/SET\",\n payload: {\n key: string,\n model: ?ModularUIModel,\n },\n};\n\nexport type UpdateModelAction = {\n type: \"MODULARUI/UPDATE\",\n payload: ModularUIModel,\n};\n\nexport type SuccessAction = (\n model: ModularUIModel\n) => UpdateModelAction | SetModelAction;\n\nexport type ErrorAction = (\n error: FetchException\n) => UpdateStatusAction | RemoveModelByKeyAction | NoAction;\n\nexport type ModularUIAction = {\n type: \"MODULARUI/FETCH\",\n payload: {\n href: Href,\n method?: $Keys<HTTP_METHODS>,\n data?: string | { [key: string]: string },\n locale: string,\n childmodels?: boolean,\n targetModel?: Class<ModularUIModel>,\n successAction: (\n model: ModularUIModel\n ) => UpdateModelAction | SetModelAction,\n errorAction?: ErrorAction,\n },\n};\n\nexport type RemoveModelByKeyAction = {\n type: \"MODULARUI/REMOVE_KEY\",\n payload: string,\n};\n\nexport type ResetModularUIAction = {\n type: \"MODULARUI/RESET\",\n};\n\nexport type UpdateStatusAction = {\n type: \"MODULARUI/STATUS\",\n payload: {\n key: string,\n status: $Keys<MODULARUI_STATUS>,\n },\n};\n\nexport type ModularUIConnector = (\n Component: ComponentType<any>\n) => ComponentType<any>;\n"],"mappings":""}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/redux/_modularui/types.js"],"sourcesContent":["// @flow\nimport type { ModularUIModel } from \"../../models/types\";\nimport type Href from \"../../models/href/Href\";\nimport type { FetchException } from \"../../exceptions\";\nimport type { NoAction } from \"../types\";\nimport typeof {\n HTTP_METHODS,\n MODULARUI_STATUS,\n} from \"../../constants/Constants\";\nimport type { ComponentType } from \"react\";\nimport type { TargetModel } from \"../../modularui/types\";\nimport type { RequestModularUIOptions } from \"../../utils/fetch/types\";\n\nexport type ModularUIOptions = {\n propName?: string,\n removeOnUnmount?: boolean,\n ...RequestModularUIOptions,\n};\n\nexport type ModelEntry = {\n +status: string,\n +model: ModularUIModel,\n +lastModification: number,\n};\n\nexport type ModularUIState = {\n [string]: ModelEntry,\n ...\n};\n\nexport type SetModelAction = {\n type: \"MODULARUI/SET\",\n payload: {\n key: string,\n model: ?ModularUIModel,\n },\n};\n\nexport type UpdateModelAction = {\n type: \"MODULARUI/UPDATE\",\n payload: ModularUIModel,\n};\n\nexport type SuccessAction = (\n model: ModularUIModel\n) => UpdateModelAction | SetModelAction;\n\nexport type ErrorAction = (\n error: FetchException\n) => UpdateStatusAction | RemoveModelByKeyAction | NoAction;\n\nexport type ModularUIAction = {\n type: \"MODULARUI/FETCH\",\n payload: {\n href: Href,\n method?: $Keys<HTTP_METHODS>,\n data?: string | { [key: string]: string },\n locale: string,\n childmodels?: boolean,\n targetModel?: TargetModel,\n forceTargetModel?: boolean,\n successAction: (\n model: ModularUIModel\n ) => UpdateModelAction | SetModelAction,\n errorAction?: ErrorAction,\n },\n};\n\nexport type RemoveModelByKeyAction = {\n type: \"MODULARUI/REMOVE_KEY\",\n payload: string,\n};\n\nexport type ResetModularUIAction = {\n type: \"MODULARUI/RESET\",\n};\n\nexport type UpdateStatusAction = {\n type: \"MODULARUI/STATUS\",\n payload: {\n key: string,\n status: $Keys<MODULARUI_STATUS>,\n },\n};\n\nexport type ModularUIConnector = (\n Component: ComponentType<any>\n) => ComponentType<any>;\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"withModularUI.js","names":["connect","createSelector","ModularUIRequest","startProgress","finishProgress","handleError","getLocale","reloadModel","modularui","localeCode","href","options","modularuiRequest","locale","mapStateToProps","state","i18n","mapDispatchToProps","withModularui"],"sources":["../../../src/redux/_modularui/withModularUI.js"],"sourcesContent":["// @flow\nimport { connect } from \"react-redux\";\n\nimport { createSelector } from \"reselect\";\n\nimport ModularUIRequest from \"../../modularui/ModularUIRequest\";\n\nimport { startProgress, finishProgress } from \"../actions/ProgressIndicator\";\n\nimport { handleError } from \"../actions/Error\";\n\nimport { getLocale } from \"../selectors/i18n\";\n\nimport { reloadModel } from \"./ModularUIActions\";\n\nimport type {\n ReduxState,\n StartProgressAction,\n FinishProgressAction,\n ThunkAction,\n} from \"../types\";\nimport type Href from \"../../models/href/Href\";\nimport type { ModularUIModel } from \"../../models/types\";\nimport type { RequestBaseOptions } from \"../../utils/fetch/types\";\nimport type FetchException from \"../../exceptions/FetchException\";\nimport type { ComponentType } from \"react\";\n\ntype StateProps = {\n modularui: (href: Href, options: any) => ModularUIRequest,\n locale: string,\n};\n\ntype DispatchProps = {\n startProgress: () => StartProgressAction,\n finishProgress: () => FinishProgressAction,\n reloadModel: (\n model: ModularUIModel,\n options?: RequestBaseOptions\n ) => ThunkAction,\n handleError: (error: Error | FetchException) => ThunkAction,\n};\n\ntype Props = {\n ...StateProps,\n ...DispatchProps,\n};\n\nconst modularui = createSelector(\n [getLocale],\n (localeCode) =>\n (href, options = {}) => {\n const modularuiRequest = new ModularUIRequest(href, options);\n modularuiRequest.locale = localeCode;\n return modularuiRequest;\n }\n);\n\n/**\n */\nconst mapStateToProps = (state: ReduxState): StateProps => ({\n modularui: modularui(state),\n locale: state.i18n.locale,\n});\n\nconst mapDispatchToProps: DispatchProps = {\n startProgress,\n finishProgress,\n reloadModel,\n handleError,\n};\n\n/**\n * Injects the modular ui service and the progress start and finish actions\n * This can be used to request modular ui services inside react view components\n */\nconst withModularui: ComponentType<any> = connect<\n Props,\n {},\n StateProps,\n _,\n _,\n _\n>(mapStateToProps, mapDispatchToProps);\n\nexport default withModularui;\n"],"mappings":"AACA,SAASA,OAAO,QAAQ,aAAa;AAErC,SAASC,cAAc,QAAQ,UAAU;AAEzC,OAAOC,gBAAgB,MAAM,kCAAkC;AAE/D,SAASC,aAAa,EAAEC,cAAc,QAAQ,8BAA8B;AAE5E,SAASC,WAAW,QAAQ,kBAAkB;AAE9C,SAASC,SAAS,QAAQ,mBAAmB;AAE7C,SAASC,WAAW,QAAQ,oBAAoB;AAkChD,MAAMC,SAAS,GAAGP,cAAc,CAC9B,CAACK,SAAS,CAAC,EACVG,UAAU,IACT,UAACC,IAAI,EAAmB;EAAA,IAAjBC,OAAO,uEAAG,CAAC,CAAC;EACjB,MAAMC,gBAAgB,GAAG,IAAIV,gBAAgB,CAACQ,IAAI,EAAEC,OAAO,CAAC;EAC5DC,gBAAgB,CAACC,MAAM,GAAGJ,UAAU;EACpC,OAAOG,gBAAgB;AACzB,CAAC,CACJ;;AAED;AACA;AACA,MAAME,eAAe,GAAIC,KAAiB,KAAkB;EAC1DP,SAAS,EAAEA,SAAS,CAACO,KAAK,CAAC;EAC3BF,MAAM,EAAEE,KAAK,CAACC,IAAI,CAACH;AACrB,CAAC,CAAC;AAEF,MAAMI,kBAAiC,GAAG;EACxCd,aAAa;EACbC,cAAc;EACdG,WAAW;EACXF;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAMa,aAAiC,GAAGlB,OAAO,CAO/Cc,eAAe,EAAEG,kBAAkB,CAAC;AAEtC,eAAeC,aAAa"}
1
+ {"version":3,"file":"withModularUI.js","names":["connect","createSelector","ModularUIRequest","startProgress","finishProgress","handleError","getLocale","reloadModel","modularui","localeCode","href","options","modularuiRequest","locale","mapStateToProps","state","i18n","mapDispatchToProps","withModularui"],"sources":["../../../src/redux/_modularui/withModularUI.js"],"sourcesContent":["// @flow\nimport { connect } from \"react-redux\";\n\nimport { createSelector } from \"reselect\";\n\nimport ModularUIRequest from \"../../modularui/ModularUIRequest\";\n\nimport { startProgress, finishProgress } from \"../actions/ProgressIndicator\";\n\nimport { handleError } from \"../actions/Error\";\n\nimport { getLocale } from \"../selectors/i18n\";\n\nimport { reloadModel } from \"./ModularUIActions\";\n\nimport type {\n ReduxState,\n StartProgressAction,\n FinishProgressAction,\n ThunkAction,\n} from \"../types\";\nimport type Href from \"../../models/href/Href\";\nimport type { ModularUIModel } from \"../../models/types\";\nimport type FetchException from \"../../exceptions/FetchException\";\nimport type { ComponentType } from \"react\";\nimport type { RequestModularUIOptions } from \"../../utils/fetch/types\";\n\ntype StateProps = {\n modularui: (href: Href, options: any) => ModularUIRequest,\n locale: string,\n};\n\ntype DispatchProps = {\n startProgress: () => StartProgressAction,\n finishProgress: () => FinishProgressAction,\n reloadModel: (\n model: ModularUIModel,\n options?: RequestModularUIOptions\n ) => ThunkAction,\n handleError: (error: Error | FetchException) => ThunkAction,\n};\n\ntype Props = {\n ...StateProps,\n ...DispatchProps,\n};\n\nconst modularui = createSelector(\n [getLocale],\n (localeCode) =>\n (href, options = {}) => {\n const modularuiRequest = new ModularUIRequest(href, options);\n modularuiRequest.locale = localeCode;\n return modularuiRequest;\n }\n);\n\n/**\n */\nconst mapStateToProps = (state: ReduxState): StateProps => ({\n modularui: modularui(state),\n locale: state.i18n.locale,\n});\n\nconst mapDispatchToProps: DispatchProps = {\n startProgress,\n finishProgress,\n reloadModel,\n handleError,\n};\n\n/**\n * Injects the modular ui service and the progress start and finish actions\n * This can be used to request modular ui services inside react view components\n */\nconst withModularui: ComponentType<any> = connect<\n Props,\n {},\n StateProps,\n _,\n _,\n _\n>(mapStateToProps, mapDispatchToProps);\n\nexport default withModularui;\n"],"mappings":"AACA,SAASA,OAAO,QAAQ,aAAa;AAErC,SAASC,cAAc,QAAQ,UAAU;AAEzC,OAAOC,gBAAgB,MAAM,kCAAkC;AAE/D,SAASC,aAAa,EAAEC,cAAc,QAAQ,8BAA8B;AAE5E,SAASC,WAAW,QAAQ,kBAAkB;AAE9C,SAASC,SAAS,QAAQ,mBAAmB;AAE7C,SAASC,WAAW,QAAQ,oBAAoB;AAkChD,MAAMC,SAAS,GAAGP,cAAc,CAC9B,CAACK,SAAS,CAAC,EACVG,UAAU,IACT,UAACC,IAAI,EAAmB;EAAA,IAAjBC,OAAO,uEAAG,CAAC,CAAC;EACjB,MAAMC,gBAAgB,GAAG,IAAIV,gBAAgB,CAACQ,IAAI,EAAEC,OAAO,CAAC;EAC5DC,gBAAgB,CAACC,MAAM,GAAGJ,UAAU;EACpC,OAAOG,gBAAgB;AACzB,CAAC,CACJ;;AAED;AACA;AACA,MAAME,eAAe,GAAIC,KAAiB,KAAkB;EAC1DP,SAAS,EAAEA,SAAS,CAACO,KAAK,CAAC;EAC3BF,MAAM,EAAEE,KAAK,CAACC,IAAI,CAACH;AACrB,CAAC,CAAC;AAEF,MAAMI,kBAAiC,GAAG;EACxCd,aAAa;EACbC,cAAc;EACdG,WAAW;EACXF;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAMa,aAAiC,GAAGlB,OAAO,CAO/Cc,eAAe,EAAEG,kBAAkB,CAAC;AAEtC,eAAeC,aAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/utils/fetch/types.js"],"sourcesContent":["// @flow\nimport typeof { HTTP_METHODS } from \"../../constants/Constants\";\nimport type { ModularUIModel } from \"../../models/types\";\n\nexport type RequestURLOptions = {\n url: string,\n};\nexport type RequestBaseOptions = {\n method?: $Keys<HTTP_METHODS>,\n params?: string,\n data?: string | { [key: string]: string },\n timeout?: number,\n responseType?: string,\n headers?: {\n [headerName: string]: string,\n Accept?: string,\n \"Accept-Language\"?: string,\n \"Content-Type\"?: string,\n \"x-filename\"?: string,\n \"x-filesize\"?: string,\n },\n events?: { [eventName: string]: () => void },\n onProgress?: ProgressEventHandler,\n includeContext?: boolean,\n locale?: string,\n cache?: boolean,\n childmodels?: boolean,\n isValidationRequest?: boolean,\n targetModel?: Class<ModularUIModel>,\n updateModel?: ModularUIModel,\n isReload?: boolean,\n removeOnUnmount?: boolean,\n};\nexport type RequestOptions = { ...RequestURLOptions, ...RequestBaseOptions };\n"],"mappings":""}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/utils/fetch/types.js"],"sourcesContent":["// @flow\nimport typeof { HTTP_METHODS } from \"../../constants/Constants\";\nimport type { ModularUIModel } from \"../../models/types\";\nimport type { TargetModel } from \"../../modularui/types\";\n\nexport type RequestURLOptions = {\n url: string,\n};\n\nexport type RequestBaseOptions = {\n method?: $Keys<HTTP_METHODS>,\n params?: string,\n data?: string | { [key: string]: string },\n timeout?: number,\n responseType?: string,\n headers?: {\n [headerName: string]: string,\n Accept?: string,\n \"Accept-Language\"?: string,\n \"Content-Type\"?: string,\n \"x-filename\"?: string,\n \"x-filesize\"?: string,\n },\n events?: { [eventName: string]: () => void },\n onProgress?: ProgressEventHandler,\n includeContext?: boolean,\n locale?: string,\n cache?: boolean,\n isReload?: boolean,\n};\n\nexport type RequestOptions = { ...RequestURLOptions, ...RequestBaseOptions };\n\nexport type RequestModularUIOptions = {\n ...RequestBaseOptions,\n targetModel?: TargetModel,\n forceTargetModel?: boolean,\n updateModel?: ModularUIModel,\n childmodels?: boolean,\n isValidationRequest?: boolean,\n removeOnUnmount?: boolean,\n};\n"],"mappings":""}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.VALIDATE_DEBOUNCE_TIMEOUT = exports.USE_CACHE = exports.USERPROFILE_PATH = exports.UPLOAD_PATH = exports.TIMEVERSION_FILTER_NAME = exports.PARAMETER_SEPARATOR = exports.NOTIFICATION_TYPES = exports.MODULARUI_STATUS = exports.MODULARUI_CONTRIBUTIONS = exports.LOGOUT_PATH_SETTING = exports.LOGIN_USERNAME_SETTING = exports.LOGIN_TYPE = exports.LOGIN_PATH_SETTING = exports.LOGIN_PASSWORD_SETTING = exports.KEYCODES = exports.IS_SYNC = exports.IS_SERVER = exports.ISO_TIME_FORMAT = exports.ISO_TIMESTAMP_FORMAT = exports.ISO_DATE_FORMAT = exports.ISO_DATETIME_FORMAT = exports.INPUT_DEBOUNCE_TIMEOUT = exports.HTTP_METHODS = exports.DEFAULT_WEEK_STARTS_ON = exports.DEFAULT_UI_PARAMETERS = exports.DEFAULT_FIRST_WEEK_CONTAINS_DATE = exports.CONTENT_PATH = exports.CHANGEPASSWORD_PATH = exports.CAPTCHA_PATH = exports.BASE = exports.AUTOSAVE_STATUS = exports.ATTRIBUTE_WIDTH = exports.APPLICATION_PATH = exports.ALL_CONTENT_IN_DATA_SETTING = void 0;
6
+ exports.fallbackDefaultAuthenticationType = exports.VALIDATE_DEBOUNCE_TIMEOUT = exports.USE_CACHE = exports.USERPROFILE_PATH = exports.UPLOAD_PATH = exports.TIMEVERSION_FILTER_NAME = exports.PARAMETER_SEPARATOR = exports.NOTIFICATION_TYPES = exports.MODULARUI_STATUS = exports.MODULARUI_CONTRIBUTIONS = exports.LOGOUT_PATH_SETTING = exports.LOGIN_USERNAME_SETTING = exports.LOGIN_TYPE = exports.LOGIN_PATH_SETTING = exports.LOGIN_PASSWORD_SETTING = exports.KEYCODES = exports.IS_SYNC = exports.IS_SERVER = exports.ISO_TIME_FORMAT = exports.ISO_TIMESTAMP_FORMAT = exports.ISO_DATE_FORMAT = exports.ISO_DATETIME_FORMAT = exports.INPUT_DEBOUNCE_TIMEOUT = exports.HTTP_METHODS = exports.DEFAULT_WEEK_STARTS_ON = exports.DEFAULT_UI_PARAMETERS = exports.DEFAULT_FIRST_WEEK_CONTAINS_DATE = exports.CONTENT_PATH = exports.CHANGEPASSWORD_PATH = exports.CAPTCHA_PATH = exports.BASE = exports.AUTOSAVE_STATUS = exports.ATTRIBUTE_WIDTH = exports.APPLICATION_PATH = exports.ALL_CONTENT_IN_DATA_SETTING = void 0;
7
7
  /**
8
8
  * Indicates if contributions should be cached
9
9
  */
@@ -221,4 +221,10 @@ const LOGIN_PASSWORD_SETTING = "FormClient.password_field_name";
221
221
  exports.LOGIN_PASSWORD_SETTING = LOGIN_PASSWORD_SETTING;
222
222
  const LOGOUT_PATH_SETTING = "FormClient.logout_url";
223
223
  exports.LOGOUT_PATH_SETTING = LOGOUT_PATH_SETTING;
224
+ const fallbackDefaultAuthenticationType = {
225
+ name: "Form based authentication",
226
+ authentication: "DefaultFormClient",
227
+ isPrimary: true
228
+ };
229
+ exports.fallbackDefaultAuthenticationType = fallbackDefaultAuthenticationType;
224
230
  //# sourceMappingURL=Constants.js.map
@@ -193,3 +193,9 @@ export const LOGIN_PATH_SETTING = "FormClient.login_url";
193
193
  export const LOGIN_USERNAME_SETTING = "FormClient.username_field_name";
194
194
  export const LOGIN_PASSWORD_SETTING = "FormClient.password_field_name";
195
195
  export const LOGOUT_PATH_SETTING = "FormClient.logout_url";
196
+
197
+ export const fallbackDefaultAuthenticationType = {
198
+ name: "Form based authentication",
199
+ authentication: "DefaultFormClient",
200
+ isPrimary: true,
201
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"Constants.js","names":["USE_CACHE","serverBase","__CONTEXT_PATH__","BASE","window","contextPath","MODULARUI_CONTRIBUTIONS","APPLICATION_URI","APPLICATION_PATH","CONTENT_PATH","UPLOAD_PATH","CAPTCHA_PATH","CHANGEPASSWORD_PATH","USERPROFILE_PATH","PARAMETER_SEPARATOR","TIMEVERSION_FILTER_NAME","PARAMETER_OVERVIEW_VIEWTYPE","DEFAULT_UI_PARAMETERS","ISO_DATE_FORMAT","ISO_DATETIME_FORMAT","ISO_TIME_FORMAT","ISO_TIMESTAMP_FORMAT","DEFAULT_WEEK_STARTS_ON","DEFAULT_FIRST_WEEK_CONTAINS_DATE","KEYCODES","TAB","ENTER","ESCAPE","SPACE","PAGE_UP","PAGE_DOWN","ARROW_LEFT","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","IS_SYNC","dataFetcher","IS_SERVER","NOTIFICATION_TYPES","SUCCESS","INFO","WARNING","ERROR","HTTP_METHODS","GET","POST","MODULARUI_STATUS","LOADING","FINISHED","AUTOSAVE_STATUS","START","INPUT_DEBOUNCE_TIMEOUT","VALIDATE_DEBOUNCE_TIMEOUT","ATTRIBUTE_WIDTH","EXTRA_SMALL","SMALL","MEDIUM","LARGE","EXTRA_LARGE","ALL_CONTENT_IN_DATA_SETTING","LOGIN_TYPE","LOGIN_PATH_SETTING","LOGIN_USERNAME_SETTING","LOGIN_PASSWORD_SETTING","LOGOUT_PATH_SETTING"],"sources":["../../src/constants/Constants.js"],"sourcesContent":["// @flow\n/**\n * Indicates if contributions should be cached\n */\nexport const USE_CACHE = true;\n\nconst serverBase =\n typeof __CONTEXT_PATH__ === \"undefined\" ? null : __CONTEXT_PATH__;\n\n/**\n * Base path\n * This uses contextPath set from property from server\n * When requesting a remote server with CORS enabled, add the origin, for example:\n * export const BEINFORMED_PATH = 'http://192.168.128.61:8080/BeInformed';\n */\nexport const BASE: string =\n serverBase ??\n (typeof window !== \"undefined\" && window.contextPath\n ? window.contextPath\n : \"/BeInformed\");\n\n/**\n * Path to the contributions api end point\n * /contributions uri part is added through the _links in the data service\n */\nexport const MODULARUI_CONTRIBUTIONS = \"/contributions\";\n\n/**\n * Application uri\n * @private\n */\nconst APPLICATION_URI = \"/\";\n\n/**\n * Base Path\n */\nexport const APPLICATION_PATH: string = BASE + APPLICATION_URI;\n\n/**\n * path to content service\n */\nexport const CONTENT_PATH = `${BASE}/content`;\n\n/**\n * Upload Path\n */\nexport const UPLOAD_PATH = `${BASE}/uploadFile`;\n\n/**\n * Captcha Path\n */\nexport const CAPTCHA_PATH = `${BASE}/captchaServices`;\n\n/**\n * Path to change password page / component\n */\nexport const CHANGEPASSWORD_PATH = \"/change-password\";\n\n/**\n * Path to user profile page / component\n */\nexport const USERPROFILE_PATH = \"/user\";\n\n/**\n * Separator for parameters of a list, makes it possible to render multiple lists on a page in a non-js environment\n */\nexport const PARAMETER_SEPARATOR = \"~\";\n\n/**\n * Timeversion filter name\n */\nexport const TIMEVERSION_FILTER_NAME = \"entryDate\";\n\nconst PARAMETER_OVERVIEW_VIEWTYPE = \"viewType\";\n/**\n * Parameter name for the viewtype toggle\n */\nexport const DEFAULT_UI_PARAMETERS: Array<string> = [\n PARAMETER_OVERVIEW_VIEWTYPE,\n];\n\n/**\n */\nexport const ISO_DATE_FORMAT = \"yyyy-MM-dd\";\n/**\n */\nexport const ISO_DATETIME_FORMAT = \"yyyy-MM-dd'T'HH:mm:ss\";\n/**\n */\nexport const ISO_TIME_FORMAT = \"HH:mm:ss\";\n/**\n */\nexport const ISO_TIMESTAMP_FORMAT = \"yyyy-MM-dd'T'HH:mm:ss.SSS\";\n/**\n * week starts on monday by default\n */\nexport const DEFAULT_WEEK_STARTS_ON = 1;\n\n/**\n * first week indicated by the 1st of january\n */\nexport const DEFAULT_FIRST_WEEK_CONTAINS_DATE = 1;\n\n/**\n * Key codes\n * @type {{SPACE: number, PAGE_DOWN: number, TAB: number, ARROW_RIGHT: number, ARROW_DOWN: number, ENTER: number, ARROW_UP: number, ARROW_LEFT: number, PAGE_UP: number, ESCAPE: number}}\n */\nexport const KEYCODES = {\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n ARROW_LEFT: 37,\n ARROW_UP: 38,\n ARROW_RIGHT: 39,\n ARROW_DOWN: 40,\n};\n\n/**\n * @type {boolean}\n */\nexport const IS_SYNC = typeof dataFetcher !== \"undefined\";\n/**\n * @type {boolean}\n */\nexport const IS_SERVER = IS_SYNC;\n\n/**\n * @type {{SUCCESS: string, ERROR: string, INFO: string, WARNING: string}}\n */\nexport const NOTIFICATION_TYPES = {\n SUCCESS: \"SUCCESS\",\n INFO: \"INFO\",\n WARNING: \"WARNING\",\n ERROR: \"ERROR\",\n};\n\n/**\n * SUPPORTED HTTP METHODS\n * @type {{POST: string, GET: string}}\n */\nexport const HTTP_METHODS = {\n GET: \"GET\",\n POST: \"POST\",\n};\n\n/**\n * POSSIBLE MODULARUI STATUSSES\n * @type {{LOADING: string, ERROR: string, FINISHED: string}}\n */\nexport const MODULARUI_STATUS = {\n LOADING: \"LOADING\",\n FINISHED: \"FINISHED\",\n ERROR: \"ERROR\",\n};\n\n/**\n * POSSIBLE AUTOSAVE STATUSSES\n * @type {{START: string, FINISHED: string}}\n */\nexport const AUTOSAVE_STATUS = {\n START: \"START\",\n FINISHED: \"FINISHED\",\n};\n\n/**\n * DEBOUNCE INPUT TIMEOUT\n */\nexport const INPUT_DEBOUNCE_TIMEOUT = 100;\n\n/**\n * DEBOUNCE VALIDATION TIMEOUT\n */\nexport const VALIDATE_DEBOUNCE_TIMEOUT = 500;\n\n/**\n * ATTRIBUTE WIDTH\n */\nexport const ATTRIBUTE_WIDTH = {\n EXTRA_SMALL: \"EXTRA_SMALL\",\n SMALL: \"SMALL\",\n MEDIUM: \"MEDIUM\",\n LARGE: \"LARGE\",\n EXTRA_LARGE: \"EXTRA_LARGE\",\n};\n\nexport const ALL_CONTENT_IN_DATA_SETTING = \"hasAllContentInData\";\n\nexport const LOGIN_TYPE = \"security.clients\";\nexport const LOGIN_PATH_SETTING = \"FormClient.login_url\";\nexport const LOGIN_USERNAME_SETTING = \"FormClient.username_field_name\";\nexport const LOGIN_PASSWORD_SETTING = \"FormClient.password_field_name\";\nexport const LOGOUT_PATH_SETTING = \"FormClient.logout_url\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"Constants.js","names":["USE_CACHE","serverBase","__CONTEXT_PATH__","BASE","window","contextPath","MODULARUI_CONTRIBUTIONS","APPLICATION_URI","APPLICATION_PATH","CONTENT_PATH","UPLOAD_PATH","CAPTCHA_PATH","CHANGEPASSWORD_PATH","USERPROFILE_PATH","PARAMETER_SEPARATOR","TIMEVERSION_FILTER_NAME","PARAMETER_OVERVIEW_VIEWTYPE","DEFAULT_UI_PARAMETERS","ISO_DATE_FORMAT","ISO_DATETIME_FORMAT","ISO_TIME_FORMAT","ISO_TIMESTAMP_FORMAT","DEFAULT_WEEK_STARTS_ON","DEFAULT_FIRST_WEEK_CONTAINS_DATE","KEYCODES","TAB","ENTER","ESCAPE","SPACE","PAGE_UP","PAGE_DOWN","ARROW_LEFT","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","IS_SYNC","dataFetcher","IS_SERVER","NOTIFICATION_TYPES","SUCCESS","INFO","WARNING","ERROR","HTTP_METHODS","GET","POST","MODULARUI_STATUS","LOADING","FINISHED","AUTOSAVE_STATUS","START","INPUT_DEBOUNCE_TIMEOUT","VALIDATE_DEBOUNCE_TIMEOUT","ATTRIBUTE_WIDTH","EXTRA_SMALL","SMALL","MEDIUM","LARGE","EXTRA_LARGE","ALL_CONTENT_IN_DATA_SETTING","LOGIN_TYPE","LOGIN_PATH_SETTING","LOGIN_USERNAME_SETTING","LOGIN_PASSWORD_SETTING","LOGOUT_PATH_SETTING","fallbackDefaultAuthenticationType","name","authentication","isPrimary"],"sources":["../../src/constants/Constants.js"],"sourcesContent":["// @flow\n/**\n * Indicates if contributions should be cached\n */\nexport const USE_CACHE = true;\n\nconst serverBase =\n typeof __CONTEXT_PATH__ === \"undefined\" ? null : __CONTEXT_PATH__;\n\n/**\n * Base path\n * This uses contextPath set from property from server\n * When requesting a remote server with CORS enabled, add the origin, for example:\n * export const BEINFORMED_PATH = 'http://192.168.128.61:8080/BeInformed';\n */\nexport const BASE: string =\n serverBase ??\n (typeof window !== \"undefined\" && window.contextPath\n ? window.contextPath\n : \"/BeInformed\");\n\n/**\n * Path to the contributions api end point\n * /contributions uri part is added through the _links in the data service\n */\nexport const MODULARUI_CONTRIBUTIONS = \"/contributions\";\n\n/**\n * Application uri\n * @private\n */\nconst APPLICATION_URI = \"/\";\n\n/**\n * Base Path\n */\nexport const APPLICATION_PATH: string = BASE + APPLICATION_URI;\n\n/**\n * path to content service\n */\nexport const CONTENT_PATH = `${BASE}/content`;\n\n/**\n * Upload Path\n */\nexport const UPLOAD_PATH = `${BASE}/uploadFile`;\n\n/**\n * Captcha Path\n */\nexport const CAPTCHA_PATH = `${BASE}/captchaServices`;\n\n/**\n * Path to change password page / component\n */\nexport const CHANGEPASSWORD_PATH = \"/change-password\";\n\n/**\n * Path to user profile page / component\n */\nexport const USERPROFILE_PATH = \"/user\";\n\n/**\n * Separator for parameters of a list, makes it possible to render multiple lists on a page in a non-js environment\n */\nexport const PARAMETER_SEPARATOR = \"~\";\n\n/**\n * Timeversion filter name\n */\nexport const TIMEVERSION_FILTER_NAME = \"entryDate\";\n\nconst PARAMETER_OVERVIEW_VIEWTYPE = \"viewType\";\n/**\n * Parameter name for the viewtype toggle\n */\nexport const DEFAULT_UI_PARAMETERS: Array<string> = [\n PARAMETER_OVERVIEW_VIEWTYPE,\n];\n\n/**\n */\nexport const ISO_DATE_FORMAT = \"yyyy-MM-dd\";\n/**\n */\nexport const ISO_DATETIME_FORMAT = \"yyyy-MM-dd'T'HH:mm:ss\";\n/**\n */\nexport const ISO_TIME_FORMAT = \"HH:mm:ss\";\n/**\n */\nexport const ISO_TIMESTAMP_FORMAT = \"yyyy-MM-dd'T'HH:mm:ss.SSS\";\n/**\n * week starts on monday by default\n */\nexport const DEFAULT_WEEK_STARTS_ON = 1;\n\n/**\n * first week indicated by the 1st of january\n */\nexport const DEFAULT_FIRST_WEEK_CONTAINS_DATE = 1;\n\n/**\n * Key codes\n * @type {{SPACE: number, PAGE_DOWN: number, TAB: number, ARROW_RIGHT: number, ARROW_DOWN: number, ENTER: number, ARROW_UP: number, ARROW_LEFT: number, PAGE_UP: number, ESCAPE: number}}\n */\nexport const KEYCODES = {\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n ARROW_LEFT: 37,\n ARROW_UP: 38,\n ARROW_RIGHT: 39,\n ARROW_DOWN: 40,\n};\n\n/**\n * @type {boolean}\n */\nexport const IS_SYNC = typeof dataFetcher !== \"undefined\";\n/**\n * @type {boolean}\n */\nexport const IS_SERVER = IS_SYNC;\n\n/**\n * @type {{SUCCESS: string, ERROR: string, INFO: string, WARNING: string}}\n */\nexport const NOTIFICATION_TYPES = {\n SUCCESS: \"SUCCESS\",\n INFO: \"INFO\",\n WARNING: \"WARNING\",\n ERROR: \"ERROR\",\n};\n\n/**\n * SUPPORTED HTTP METHODS\n * @type {{POST: string, GET: string}}\n */\nexport const HTTP_METHODS = {\n GET: \"GET\",\n POST: \"POST\",\n};\n\n/**\n * POSSIBLE MODULARUI STATUSSES\n * @type {{LOADING: string, ERROR: string, FINISHED: string}}\n */\nexport const MODULARUI_STATUS = {\n LOADING: \"LOADING\",\n FINISHED: \"FINISHED\",\n ERROR: \"ERROR\",\n};\n\n/**\n * POSSIBLE AUTOSAVE STATUSSES\n * @type {{START: string, FINISHED: string}}\n */\nexport const AUTOSAVE_STATUS = {\n START: \"START\",\n FINISHED: \"FINISHED\",\n};\n\n/**\n * DEBOUNCE INPUT TIMEOUT\n */\nexport const INPUT_DEBOUNCE_TIMEOUT = 100;\n\n/**\n * DEBOUNCE VALIDATION TIMEOUT\n */\nexport const VALIDATE_DEBOUNCE_TIMEOUT = 500;\n\n/**\n * ATTRIBUTE WIDTH\n */\nexport const ATTRIBUTE_WIDTH = {\n EXTRA_SMALL: \"EXTRA_SMALL\",\n SMALL: \"SMALL\",\n MEDIUM: \"MEDIUM\",\n LARGE: \"LARGE\",\n EXTRA_LARGE: \"EXTRA_LARGE\",\n};\n\nexport const ALL_CONTENT_IN_DATA_SETTING = \"hasAllContentInData\";\n\nexport const LOGIN_TYPE = \"security.clients\";\nexport const LOGIN_PATH_SETTING = \"FormClient.login_url\";\nexport const LOGIN_USERNAME_SETTING = \"FormClient.username_field_name\";\nexport const LOGIN_PASSWORD_SETTING = \"FormClient.password_field_name\";\nexport const LOGOUT_PATH_SETTING = \"FormClient.logout_url\";\n\nexport const fallbackDefaultAuthenticationType = {\n name: \"Form based authentication\",\n authentication: \"DefaultFormClient\",\n isPrimary: true,\n};\n"],"mappings":"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"}
@@ -61,7 +61,7 @@ describe("modularui hooks", () => {
61
61
  wrapper,
62
62
  });
63
63
 
64
- expect(result.current).toBeUndefined();
64
+ expect(result.current).toBeNull();
65
65
 
66
66
  expect(store.getActions()).toStrictEqual([
67
67
  {
@@ -55,7 +55,7 @@ describe("modelcatalog hooks", () => {
55
55
  wrapper,
56
56
  });
57
57
 
58
- expect(result.current).toBeUndefined();
58
+ expect(result.current).toBeNull();
59
59
 
60
60
  expect(store.getActions()).toStrictEqual([
61
61
  {
@@ -54,7 +54,7 @@ describe("modularui hooks", () => {
54
54
  }
55
55
  );
56
56
 
57
- expect(result.current).toBeUndefined();
57
+ expect(result.current).toBeNull();
58
58
 
59
59
  expect(store.getActions()).toStrictEqual([
60
60
  {
@@ -104,7 +104,7 @@ describe("modularui hooks", () => {
104
104
  }
105
105
  );
106
106
 
107
- expect(result.current).toBeUndefined();
107
+ expect(result.current).toBeNull();
108
108
 
109
109
  expect(store.getActions()).toStrictEqual([
110
110
  {
@@ -21,18 +21,18 @@ const useLogin = () => {
21
21
  const isAuthenticated = application?.isLoggedIn ?? false;
22
22
  return {
23
23
  isAuthenticated,
24
- authenticationTypes: application?.authenticationTypes ?? [],
24
+ authenticationTypes: application?.authenticationTypes ?? [_constants.fallbackDefaultAuthenticationType],
25
25
  errorMessage: auth.error,
26
26
  resetErrors: () => dispatch((0, _actions.resetAuthErrors)()),
27
27
  login: (username, password) => dispatch((0, _actions.login)(username, password)),
28
28
  redirectLogin: authenticationType => {
29
29
  if (_Cache.default.getItem("isRedirectLogin")) {
30
30
  // prevent endless loop in redirects when authentication type can't be redirected
31
- throw new _exceptions.IllegalStateException(`Could not redirect to '${authenticationType.authentication}' using url: '${authenticationType.redirectUri}'`);
31
+ throw new _exceptions.IllegalStateException(`Could not redirect to '${authenticationType.authentication}' using url: '${authenticationType.redirectUri ?? ""}'`);
32
32
  }
33
33
  if (!isAuthenticated) {
34
34
  _Cache.default.setItem("isRedirectLogin", true);
35
- window.location.assign(`${_constants.BASE}${authenticationType.redirectUri}`);
35
+ window.location.assign(`${_constants.BASE}${authenticationType.redirectUri ?? ""}`);
36
36
  }
37
37
  }
38
38
  };
@@ -48,7 +48,7 @@ const useLogout = () => {
48
48
  const isAuthenticated = application?.isLoggedIn ?? false;
49
49
  return {
50
50
  isAuthenticated,
51
- authenticationTypes: application?.authenticationTypes ?? [],
51
+ authenticationTypes: application?.authenticationTypes ?? [_constants.fallbackDefaultAuthenticationType],
52
52
  logout: () => {
53
53
  if (_Cache.default.getItem("isRedirectLogin")) {
54
54
  const origin = window.location.origin;
@@ -5,7 +5,11 @@ import { getApplication } from "../redux/_modularui/ModularUISelectors";
5
5
  import { login, logout, resetAuthErrors } from "../redux/actions";
6
6
 
7
7
  import Cache from "../utils/browser/Cache";
8
- import { BASE, getSetting } from "../constants";
8
+ import {
9
+ BASE,
10
+ fallbackDefaultAuthenticationType,
11
+ getSetting,
12
+ } from "../constants";
9
13
 
10
14
  import type { ResetAuthErrorsAction } from "../redux/types";
11
15
  import type { AuthenticationType } from "../models/types";
@@ -38,7 +42,9 @@ export const useLogin = (): LoginHook => {
38
42
 
39
43
  return {
40
44
  isAuthenticated,
41
- authenticationTypes: application?.authenticationTypes ?? [],
45
+ authenticationTypes: application?.authenticationTypes ?? [
46
+ fallbackDefaultAuthenticationType,
47
+ ],
42
48
  errorMessage: auth.error,
43
49
  resetErrors: () => dispatch(resetAuthErrors()),
44
50
  login: (username: string, password: string) =>
@@ -47,13 +53,17 @@ export const useLogin = (): LoginHook => {
47
53
  if (Cache.getItem("isRedirectLogin")) {
48
54
  // prevent endless loop in redirects when authentication type can't be redirected
49
55
  throw new IllegalStateException(
50
- `Could not redirect to '${authenticationType.authentication}' using url: '${authenticationType.redirectUri}'`
56
+ `Could not redirect to '${
57
+ authenticationType.authentication
58
+ }' using url: '${authenticationType.redirectUri ?? ""}'`
51
59
  );
52
60
  }
53
61
 
54
62
  if (!isAuthenticated) {
55
63
  Cache.setItem("isRedirectLogin", true);
56
- window.location.assign(`${BASE}${authenticationType.redirectUri}`);
64
+ window.location.assign(
65
+ `${BASE}${authenticationType.redirectUri ?? ""}`
66
+ );
57
67
  }
58
68
  },
59
69
  };
@@ -70,7 +80,9 @@ export const useLogout = (): LogoutHook => {
70
80
  const isAuthenticated = application?.isLoggedIn ?? false;
71
81
  return {
72
82
  isAuthenticated,
73
- authenticationTypes: application?.authenticationTypes ?? [],
83
+ authenticationTypes: application?.authenticationTypes ?? [
84
+ fallbackDefaultAuthenticationType,
85
+ ],
74
86
  logout: () => {
75
87
  if (Cache.getItem("isRedirectLogin")) {
76
88
  const origin = window.location.origin;
@@ -1 +1 @@
1
- {"version":3,"file":"useAuthentication.js","names":["useLogin","Cache","setItem","dispatch","useDispatch","application","useSelector","getApplication","auth","state","isAuthenticated","isLoggedIn","authenticationTypes","errorMessage","error","resetErrors","resetAuthErrors","login","username","password","redirectLogin","authenticationType","getItem","IllegalStateException","authentication","redirectUri","window","location","assign","BASE","useLogout","LOGOUT_PATH","getSetting","logout","origin","url"],"sources":["../../src/hooks/useAuthentication.js"],"sourcesContent":["// @flow\nimport { useSelector, useDispatch } from \"react-redux\";\n\nimport { getApplication } from \"../redux/_modularui/ModularUISelectors\";\nimport { login, logout, resetAuthErrors } from \"../redux/actions\";\n\nimport Cache from \"../utils/browser/Cache\";\nimport { BASE, getSetting } from \"../constants\";\n\nimport type { ResetAuthErrorsAction } from \"../redux/types\";\nimport type { AuthenticationType } from \"../models/types\";\nimport { IllegalStateException } from \"../exceptions\";\ntype LoginHook = {\n isAuthenticated: boolean,\n authenticationTypes: Array<AuthenticationType>,\n errorMessage: ?string,\n resetErrors: () => ResetAuthErrorsAction,\n login: (username: string, password: string) => void,\n redirectLogin: (authenticationType: AuthenticationType) => void,\n};\ntype LogoutHook = {\n isAuthenticated: boolean,\n authenticationTypes: Array<AuthenticationType>,\n logout: () => void,\n};\n\n/**\n */\nexport const useLogin = (): LoginHook => {\n Cache.setItem(\"isRedirectLogin\", false);\n\n const dispatch = useDispatch();\n\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth);\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n\n return {\n isAuthenticated,\n authenticationTypes: application?.authenticationTypes ?? [],\n errorMessage: auth.error,\n resetErrors: () => dispatch(resetAuthErrors()),\n login: (username: string, password: string) =>\n dispatch(login(username, password)),\n redirectLogin: (authenticationType: AuthenticationType) => {\n if (Cache.getItem(\"isRedirectLogin\")) {\n // prevent endless loop in redirects when authentication type can't be redirected\n throw new IllegalStateException(\n `Could not redirect to '${authenticationType.authentication}' using url: '${authenticationType.redirectUri}'`\n );\n }\n\n if (!isAuthenticated) {\n Cache.setItem(\"isRedirectLogin\", true);\n window.location.assign(`${BASE}${authenticationType.redirectUri}`);\n }\n },\n };\n};\n\n/**\n */\nexport const useLogout = (): LogoutHook => {\n const dispatch = useDispatch();\n const application = useSelector(getApplication);\n\n const LOGOUT_PATH = getSetting(\"LOGOUT_PATH\", \"/signout\");\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n return {\n isAuthenticated,\n authenticationTypes: application?.authenticationTypes ?? [],\n logout: () => {\n if (Cache.getItem(\"isRedirectLogin\")) {\n const origin = window.location.origin;\n const url = `${origin}${BASE}/logout?url=${origin}${BASE}${LOGOUT_PATH}`;\n Cache.setItem(\"isRedirectLogin\", false);\n window.location.assign(url);\n } else {\n return dispatch(logout());\n }\n },\n };\n};\n"],"mappings":";;;;;;;AACA;AAEA;AACA;AAEA;AACA;AAIA;AAeA;AACA;AACO,MAAMA,QAAQ,GAAG,MAAiB;EACvCC,cAAK,CAACC,OAAO,CAAC,iBAAiB,EAAE,KAAK,CAAC;EAEvC,MAAMC,QAAQ,GAAG,IAAAC,uBAAW,GAAE;EAE9B,MAAMC,WAAW,GAAG,IAAAC,uBAAW,EAACC,kCAAc,CAAC;EAC/C,MAAMC,IAAI,GAAG,IAAAF,uBAAW,EAAEG,KAAK,IAAKA,KAAK,CAACD,IAAI,CAAC;EAE/C,MAAME,eAAe,GAAGL,WAAW,EAAEM,UAAU,IAAI,KAAK;EAExD,OAAO;IACLD,eAAe;IACfE,mBAAmB,EAAEP,WAAW,EAAEO,mBAAmB,IAAI,EAAE;IAC3DC,YAAY,EAAEL,IAAI,CAACM,KAAK;IACxBC,WAAW,EAAE,MAAMZ,QAAQ,CAAC,IAAAa,wBAAe,GAAE,CAAC;IAC9CC,KAAK,EAAE,CAACC,QAAgB,EAAEC,QAAgB,KACxChB,QAAQ,CAAC,IAAAc,cAAK,EAACC,QAAQ,EAAEC,QAAQ,CAAC,CAAC;IACrCC,aAAa,EAAGC,kBAAsC,IAAK;MACzD,IAAIpB,cAAK,CAACqB,OAAO,CAAC,iBAAiB,CAAC,EAAE;QACpC;QACA,MAAM,IAAIC,iCAAqB,CAC5B,0BAAyBF,kBAAkB,CAACG,cAAe,iBAAgBH,kBAAkB,CAACI,WAAY,GAAE,CAC9G;MACH;MAEA,IAAI,CAACf,eAAe,EAAE;QACpBT,cAAK,CAACC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC;QACtCwB,MAAM,CAACC,QAAQ,CAACC,MAAM,CAAE,GAAEC,eAAK,GAAER,kBAAkB,CAACI,WAAY,EAAC,CAAC;MACpE;IACF;EACF,CAAC;AACH,CAAC;;AAED;AACA;AADA;AAEO,MAAMK,SAAS,GAAG,MAAkB;EACzC,MAAM3B,QAAQ,GAAG,IAAAC,uBAAW,GAAE;EAC9B,MAAMC,WAAW,GAAG,IAAAC,uBAAW,EAACC,kCAAc,CAAC;EAE/C,MAAMwB,WAAW,GAAG,IAAAC,qBAAU,EAAC,aAAa,EAAE,UAAU,CAAC;EAEzD,MAAMtB,eAAe,GAAGL,WAAW,EAAEM,UAAU,IAAI,KAAK;EACxD,OAAO;IACLD,eAAe;IACfE,mBAAmB,EAAEP,WAAW,EAAEO,mBAAmB,IAAI,EAAE;IAC3DqB,MAAM,EAAE,MAAM;MACZ,IAAIhC,cAAK,CAACqB,OAAO,CAAC,iBAAiB,CAAC,EAAE;QACpC,MAAMY,MAAM,GAAGR,MAAM,CAACC,QAAQ,CAACO,MAAM;QACrC,MAAMC,GAAG,GAAI,GAAED,MAAO,GAAEL,eAAK,eAAcK,MAAO,GAAEL,eAAK,GAAEE,WAAY,EAAC;QACxE9B,cAAK,CAACC,OAAO,CAAC,iBAAiB,EAAE,KAAK,CAAC;QACvCwB,MAAM,CAACC,QAAQ,CAACC,MAAM,CAACO,GAAG,CAAC;MAC7B,CAAC,MAAM;QACL,OAAOhC,QAAQ,CAAC,IAAA8B,eAAM,GAAE,CAAC;MAC3B;IACF;EACF,CAAC;AACH,CAAC;AAAC"}
1
+ {"version":3,"file":"useAuthentication.js","names":["useLogin","Cache","setItem","dispatch","useDispatch","application","useSelector","getApplication","auth","state","isAuthenticated","isLoggedIn","authenticationTypes","fallbackDefaultAuthenticationType","errorMessage","error","resetErrors","resetAuthErrors","login","username","password","redirectLogin","authenticationType","getItem","IllegalStateException","authentication","redirectUri","window","location","assign","BASE","useLogout","LOGOUT_PATH","getSetting","logout","origin","url"],"sources":["../../src/hooks/useAuthentication.js"],"sourcesContent":["// @flow\nimport { useSelector, useDispatch } from \"react-redux\";\n\nimport { getApplication } from \"../redux/_modularui/ModularUISelectors\";\nimport { login, logout, resetAuthErrors } from \"../redux/actions\";\n\nimport Cache from \"../utils/browser/Cache\";\nimport {\n BASE,\n fallbackDefaultAuthenticationType,\n getSetting,\n} from \"../constants\";\n\nimport type { ResetAuthErrorsAction } from \"../redux/types\";\nimport type { AuthenticationType } from \"../models/types\";\nimport { IllegalStateException } from \"../exceptions\";\ntype LoginHook = {\n isAuthenticated: boolean,\n authenticationTypes: Array<AuthenticationType>,\n errorMessage: ?string,\n resetErrors: () => ResetAuthErrorsAction,\n login: (username: string, password: string) => void,\n redirectLogin: (authenticationType: AuthenticationType) => void,\n};\ntype LogoutHook = {\n isAuthenticated: boolean,\n authenticationTypes: Array<AuthenticationType>,\n logout: () => void,\n};\n\n/**\n */\nexport const useLogin = (): LoginHook => {\n Cache.setItem(\"isRedirectLogin\", false);\n\n const dispatch = useDispatch();\n\n const application = useSelector(getApplication);\n const auth = useSelector((state) => state.auth);\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n\n return {\n isAuthenticated,\n authenticationTypes: application?.authenticationTypes ?? [\n fallbackDefaultAuthenticationType,\n ],\n errorMessage: auth.error,\n resetErrors: () => dispatch(resetAuthErrors()),\n login: (username: string, password: string) =>\n dispatch(login(username, password)),\n redirectLogin: (authenticationType: AuthenticationType) => {\n if (Cache.getItem(\"isRedirectLogin\")) {\n // prevent endless loop in redirects when authentication type can't be redirected\n throw new IllegalStateException(\n `Could not redirect to '${\n authenticationType.authentication\n }' using url: '${authenticationType.redirectUri ?? \"\"}'`\n );\n }\n\n if (!isAuthenticated) {\n Cache.setItem(\"isRedirectLogin\", true);\n window.location.assign(\n `${BASE}${authenticationType.redirectUri ?? \"\"}`\n );\n }\n },\n };\n};\n\n/**\n */\nexport const useLogout = (): LogoutHook => {\n const dispatch = useDispatch();\n const application = useSelector(getApplication);\n\n const LOGOUT_PATH = getSetting(\"LOGOUT_PATH\", \"/signout\");\n\n const isAuthenticated = application?.isLoggedIn ?? false;\n return {\n isAuthenticated,\n authenticationTypes: application?.authenticationTypes ?? [\n fallbackDefaultAuthenticationType,\n ],\n logout: () => {\n if (Cache.getItem(\"isRedirectLogin\")) {\n const origin = window.location.origin;\n const url = `${origin}${BASE}/logout?url=${origin}${BASE}${LOGOUT_PATH}`;\n Cache.setItem(\"isRedirectLogin\", false);\n window.location.assign(url);\n } else {\n return dispatch(logout());\n }\n },\n };\n};\n"],"mappings":";;;;;;;AACA;AAEA;AACA;AAEA;AACA;AAQA;AAeA;AACA;AACO,MAAMA,QAAQ,GAAG,MAAiB;EACvCC,cAAK,CAACC,OAAO,CAAC,iBAAiB,EAAE,KAAK,CAAC;EAEvC,MAAMC,QAAQ,GAAG,IAAAC,uBAAW,GAAE;EAE9B,MAAMC,WAAW,GAAG,IAAAC,uBAAW,EAACC,kCAAc,CAAC;EAC/C,MAAMC,IAAI,GAAG,IAAAF,uBAAW,EAAEG,KAAK,IAAKA,KAAK,CAACD,IAAI,CAAC;EAE/C,MAAME,eAAe,GAAGL,WAAW,EAAEM,UAAU,IAAI,KAAK;EAExD,OAAO;IACLD,eAAe;IACfE,mBAAmB,EAAEP,WAAW,EAAEO,mBAAmB,IAAI,CACvDC,4CAAiC,CAClC;IACDC,YAAY,EAAEN,IAAI,CAACO,KAAK;IACxBC,WAAW,EAAE,MAAMb,QAAQ,CAAC,IAAAc,wBAAe,GAAE,CAAC;IAC9CC,KAAK,EAAE,CAACC,QAAgB,EAAEC,QAAgB,KACxCjB,QAAQ,CAAC,IAAAe,cAAK,EAACC,QAAQ,EAAEC,QAAQ,CAAC,CAAC;IACrCC,aAAa,EAAGC,kBAAsC,IAAK;MACzD,IAAIrB,cAAK,CAACsB,OAAO,CAAC,iBAAiB,CAAC,EAAE;QACpC;QACA,MAAM,IAAIC,iCAAqB,CAC5B,0BACCF,kBAAkB,CAACG,cACpB,iBAAgBH,kBAAkB,CAACI,WAAW,IAAI,EAAG,GAAE,CACzD;MACH;MAEA,IAAI,CAAChB,eAAe,EAAE;QACpBT,cAAK,CAACC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC;QACtCyB,MAAM,CAACC,QAAQ,CAACC,MAAM,CACnB,GAAEC,eAAK,GAAER,kBAAkB,CAACI,WAAW,IAAI,EAAG,EAAC,CACjD;MACH;IACF;EACF,CAAC;AACH,CAAC;;AAED;AACA;AADA;AAEO,MAAMK,SAAS,GAAG,MAAkB;EACzC,MAAM5B,QAAQ,GAAG,IAAAC,uBAAW,GAAE;EAC9B,MAAMC,WAAW,GAAG,IAAAC,uBAAW,EAACC,kCAAc,CAAC;EAE/C,MAAMyB,WAAW,GAAG,IAAAC,qBAAU,EAAC,aAAa,EAAE,UAAU,CAAC;EAEzD,MAAMvB,eAAe,GAAGL,WAAW,EAAEM,UAAU,IAAI,KAAK;EACxD,OAAO;IACLD,eAAe;IACfE,mBAAmB,EAAEP,WAAW,EAAEO,mBAAmB,IAAI,CACvDC,4CAAiC,CAClC;IACDqB,MAAM,EAAE,MAAM;MACZ,IAAIjC,cAAK,CAACsB,OAAO,CAAC,iBAAiB,CAAC,EAAE;QACpC,MAAMY,MAAM,GAAGR,MAAM,CAACC,QAAQ,CAACO,MAAM;QACrC,MAAMC,GAAG,GAAI,GAAED,MAAO,GAAEL,eAAK,eAAcK,MAAO,GAAEL,eAAK,GAAEE,WAAY,EAAC;QACxE/B,cAAK,CAACC,OAAO,CAAC,iBAAiB,EAAE,KAAK,CAAC;QACvCyB,MAAM,CAACC,QAAQ,CAACC,MAAM,CAACO,GAAG,CAAC;MAC7B,CAAC,MAAM;QACL,OAAOjC,QAAQ,CAAC,IAAA+B,eAAM,GAAE,CAAC;MAC3B;IACF;EACF,CAAC;AACH,CAAC;AAAC"}