@asaleh37/ui-base 1.2.30 → 25.1.9

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 (179) hide show
  1. package/.github/workflows/publish-npm.yml +49 -0
  2. package/README.md +51 -51
  3. package/__ODockerfile +14 -0
  4. package/dist/index.d.ts +92 -10
  5. package/dist/index.js +135 -7
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +135 -7
  8. package/dist/index.mjs.map +1 -1
  9. package/eslint.config.js +29 -29
  10. package/index.html +20 -13
  11. package/package-lock.json/342/200/216 +9040 -0
  12. package/package.json +122 -119
  13. package/public/bg.jpg +0 -0
  14. package/public/ezzsteel.png +0 -0
  15. package/public/logo.png +0 -0
  16. package/public/manifest.json +21 -0
  17. package/public/no_user.png +0 -0
  18. package/rollup.config-1748377725725.cjs +50 -50
  19. package/rollup.config.js +45 -45
  20. package/src/components/App.tsx +155 -123
  21. package/src/components/BaseApp.tsx +75 -53
  22. package/src/components/ExampleTrial.tsx +24 -0
  23. package/src/components/administration/admin/ChangePasswordPanel.tsx +128 -0
  24. package/src/components/administration/admin/CustomPersonGrid.tsx +361 -0
  25. package/src/components/administration/admin/OrgMemberRoleForm.tsx +83 -83
  26. package/src/components/administration/admin/OrgProvidedPersonGrid.tsx +347 -0
  27. package/src/components/administration/admin/OrganizationApplicationModuleGrid.tsx +107 -107
  28. package/src/components/administration/admin/OrganizationGrid.tsx +118 -82
  29. package/src/components/administration/admin/OrganizationMemberGrid.tsx +190 -176
  30. package/src/components/administration/admin/OrganizationMemberRoleGrid.tsx +87 -87
  31. package/src/components/administration/admin/OrganizationRankGrid.tsx +133 -133
  32. package/src/components/administration/admin/OrganizationUnitGrid.tsx +143 -143
  33. package/src/components/administration/admin/OrganizationUnitTypeGrid.tsx +108 -108
  34. package/src/components/administration/admin/PersonGrid.tsx +27 -231
  35. package/src/components/administration/admin/RoleAuthoritiesForm.tsx +82 -82
  36. package/src/components/administration/admin/SystemApplicationAuthorityGrid.tsx +117 -126
  37. package/src/components/administration/admin/SystemApplicationGrid.tsx +83 -83
  38. package/src/components/administration/admin/SystemApplicationModuleGrid.tsx +96 -96
  39. package/src/components/administration/admin/SystemApplicationRoleAuthorityGrid.tsx +75 -67
  40. package/src/components/administration/admin/SystemApplicationRoleGrid.tsx +116 -116
  41. package/src/components/administration/dev/AttachmentConfigGrid.tsx +224 -213
  42. package/src/components/administration/dev/AttachmentGrid.tsx +172 -172
  43. package/src/components/administration/dev/BluePrintGrid.tsx +129 -129
  44. package/src/components/administration/dev/DashboardGrid.tsx +173 -173
  45. package/src/components/administration/dev/DashboardWidgetGrid.tsx +164 -164
  46. package/src/components/administration/dev/DataQueryGrid.tsx +216 -206
  47. package/src/components/administration/dev/DataQueryParameterGrid.tsx +191 -191
  48. package/src/components/administration/dev/DataQueryParametersForm.tsx +84 -84
  49. package/src/components/administration/dev/DatasourceConnectionGrid.tsx +151 -150
  50. package/src/components/administration/dev/EntityParameterGrid.tsx +307 -279
  51. package/src/components/administration/dev/LookupGrid.tsx +120 -120
  52. package/src/components/administration/dev/MailAttachmentGrid.tsx +155 -155
  53. package/src/components/administration/dev/MailBodyGrid.tsx +216 -216
  54. package/src/components/administration/dev/MailNotificationQueueGrid.tsx +245 -245
  55. package/src/components/administration/dev/MailRecipientGrid.tsx +170 -169
  56. package/src/components/administration/dev/MailSenderConfigGrid.tsx +480 -478
  57. package/src/components/administration/dev/MailTemplateGrid.tsx +385 -384
  58. package/src/components/administration/dev/NotificationGrid.tsx +435 -432
  59. package/src/components/administration/dev/NotificationQueueGrid.tsx +222 -222
  60. package/src/components/administration/dev/ReportGrid.tsx +503 -504
  61. package/src/components/administration/dev/ReportParameterGrid.tsx +186 -186
  62. package/src/components/administration/dev/ReportParametersForm.tsx +84 -84
  63. package/src/components/administration/dev/WidgetGrid.tsx +380 -431
  64. package/src/components/administration/dev/WorkflowDocumentActionGrid.tsx +264 -264
  65. package/src/components/administration/dev/WorkflowDocumentActionHistoryGrid.tsx +172 -172
  66. package/src/components/administration/dev/WorkflowDocumentActionMailGrid.tsx +161 -161
  67. package/src/components/administration/dev/WorkflowDocumentGrid.tsx +357 -377
  68. package/src/components/administration/dev/WorkflowDocumentMailLogGrid.tsx +218 -218
  69. package/src/components/administration/dev/WorkflowDocumentStatusGrid.tsx +243 -243
  70. package/src/components/common/AzureLogin.tsx +222 -0
  71. package/src/components/common/ChangeOrgForm.tsx +85 -81
  72. package/src/components/common/Home.tsx +43 -44
  73. package/src/components/common/LanguageSwitcher.tsx +25 -25
  74. package/src/components/common/LayoutHandlers.tsx +11 -11
  75. package/src/components/common/LoadingMask.tsx +24 -24
  76. package/src/components/common/Login.tsx +268 -214
  77. package/src/components/common/MobileLogin.tsx +229 -0
  78. package/src/components/common/MyNotificationsPanel.tsx +109 -104
  79. package/src/components/common/NoLicenseComponent.tsx +79 -0
  80. package/src/components/common/NotificationItem.tsx +138 -138
  81. package/src/components/index.ts +10 -9
  82. package/src/components/msalConfig.ts +11 -0
  83. package/src/components/templates/DataEntryTemplates/DataEntryTypes.ts +361 -324
  84. package/src/components/templates/DataEntryTemplates/DataEntryUtil.ts +297 -248
  85. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormAction.tsx +60 -60
  86. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementField.tsx +238 -231
  87. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormElementGroup.tsx +108 -106
  88. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/CheckBox.tsx +66 -64
  89. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/ComboBox.tsx +164 -93
  90. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/Datefield.tsx +70 -65
  91. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/DatetimeField.tsx +71 -64
  92. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/FiltersPanel.tsx +237 -237
  93. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/SystemLookupCombobox.tsx +56 -55
  94. package/src/components/templates/DataEntryTemplates/TemplateDataForm/FormFields/TemplateTextField.tsx +20 -17
  95. package/src/components/templates/DataEntryTemplates/TemplateDataForm/TemplateForm.tsx +431 -388
  96. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/DataGridColumnsUtil.tsx +197 -189
  97. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGrid.tsx +1044 -998
  98. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridMultiRecordAction.tsx +89 -89
  99. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridRecordAction.tsx +95 -95
  100. package/src/components/templates/DataEntryTemplates/TemplateDataGrid/TemplateGridTopBar.tsx +234 -227
  101. package/src/components/templates/TransferList.tsx +256 -257
  102. package/src/components/templates/Window/ConfirmationWindow.tsx +55 -55
  103. package/src/components/templates/attachment/AttachmentCard.tsx +141 -141
  104. package/src/components/templates/attachment/AttachmentImageViewer.tsx +85 -45
  105. package/src/components/templates/attachment/AttachmentPanel.tsx +285 -271
  106. package/src/components/templates/index.ts +35 -33
  107. package/src/components/templates/report/ExcelReportViewer.tsx +71 -72
  108. package/src/components/templates/report/ReportViewer.tsx +272 -383
  109. package/src/components/templates/visuals/DashboardRouteView.tsx +9 -9
  110. package/src/components/templates/visuals/DashboardViewer.tsx +192 -148
  111. package/src/components/templates/visuals/WidgetViewer.tsx +208 -198
  112. package/src/components/templates/visuals/charts/TemplateBarChart.tsx +23 -23
  113. package/src/components/templates/visuals/charts/TemplateDataCard.tsx +35 -35
  114. package/src/components/templates/visuals/charts/TemplateGauge.tsx +21 -21
  115. package/src/components/templates/visuals/charts/TemplateLineChart.tsx +22 -22
  116. package/src/components/templates/visuals/charts/TemplateLineProgress.tsx +42 -42
  117. package/src/components/templates/visuals/charts/TemplatePieChart.tsx +24 -24
  118. package/src/components/templates/workflow/WorkflowDocumentPanel.tsx +611 -606
  119. package/src/components/templates/workflow/WorkflowDocumentTimeLine.tsx +145 -140
  120. package/src/components/templates/workflow/WorkflowRouteComponent.tsx +14 -14
  121. package/src/examples/ExampleGrid.tsx +134 -0
  122. package/src/hooks/UseConfirmationWindow.tsx +56 -54
  123. package/src/hooks/UseMobile.tsx +13 -13
  124. package/src/hooks/UseSession.tsx +59 -40
  125. package/src/hooks/UseWindow.tsx +111 -107
  126. package/src/hooks/index.ts +22 -7
  127. package/src/hooks/useApiActions.ts +124 -124
  128. package/src/hooks/useAxios.tsx +340 -316
  129. package/src/hooks/useCommonStore.tsx +29 -0
  130. package/src/hooks/useInterval.tsx +23 -23
  131. package/src/hooks/useLoadingMask.tsx +16 -16
  132. package/src/hooks/useLookupGridColumn.tsx +35 -35
  133. package/src/hooks/useParameterPanel.tsx +159 -0
  134. package/src/index.ts +4 -4
  135. package/src/layout/DrawerHeader.tsx +10 -10
  136. package/src/layout/Layout.tsx +102 -90
  137. package/src/layout/MainContent.tsx +115 -114
  138. package/src/layout/MobileDrawer.tsx +103 -103
  139. package/src/layout/NavigationTree.tsx +309 -291
  140. package/src/layout/NotificationButton.tsx +207 -207
  141. package/src/layout/RouteWrapper.tsx +63 -36
  142. package/src/layout/SideBar.tsx +85 -85
  143. package/src/layout/TopBar.tsx +317 -217
  144. package/src/locales/arabic/adminLocalsAr.json +94 -93
  145. package/src/locales/arabic/common.json +44 -44
  146. package/src/locales/arabic/devLocalsAr.json +317 -317
  147. package/src/locales/arabic/index.ts +9 -9
  148. package/src/locales/english/adminLocalsEn.json +97 -96
  149. package/src/locales/english/common.json +43 -43
  150. package/src/locales/english/devLocalsEn.json +318 -318
  151. package/src/locales/english/index.ts +9 -9
  152. package/src/locales/i18n.ts +8 -8
  153. package/src/locales/index.ts +9 -9
  154. package/src/main.tsx +41 -23
  155. package/src/navigationItems/Administration/adminNavigationItems.tsx +231 -222
  156. package/src/navigationItems/Administration/index.tsx +16 -16
  157. package/src/navigationItems/common/CommonNavigationItems.tsx +12 -12
  158. package/src/navigationItems/common/index.tsx +7 -7
  159. package/src/navigationItems/index.tsx +35 -34
  160. package/src/redux/features/administration/AdministrationStoresMetaData.ts +164 -126
  161. package/src/redux/features/common/AppInfoSlice.ts +93 -63
  162. package/src/redux/features/common/AppLayoutSlice.ts +29 -29
  163. package/src/redux/features/common/CommonStoreSlice.ts +44 -44
  164. package/src/redux/features/common/LoadingMaskSlice.ts +30 -30
  165. package/src/redux/features/common/SideBarSlice.ts +27 -27
  166. package/src/redux/features/common/UserSessionSlice.ts +54 -54
  167. package/src/redux/store.ts +29 -29
  168. package/src/routes/administration/adminRoutes.tsx +99 -99
  169. package/src/routes/administration/devRoutes.tsx +129 -129
  170. package/src/routes/administration/index.ts +8 -8
  171. package/src/routes/index.ts +5 -11
  172. package/src/routes/types/index.ts +6 -5
  173. package/src/styles/index.css +19 -19
  174. package/src/types/index.ts +8 -7
  175. package/src/util/AppUtils.ts +73 -53
  176. package/src/util/constants.ts +6 -6
  177. package/src/util/index.ts +5 -2
  178. package/tsconfig.json +135 -135
  179. package/vite.config.ts +24 -23
@@ -1,316 +1,340 @@
1
- import { toast } from "react-toastify";
2
- import axios, { ResponseType } from "axios";
3
- import { useDispatch, useSelector } from "react-redux";
4
- import useLoadingMask from "./useLoadingMask";
5
- import { UserSessionActions } from "../redux/features/common/UserSessionSlice";
6
-
7
- export interface APIRequest {
8
- endPointURI: string;
9
- parameters?: any;
10
- data?: any;
11
- showMask?: Boolean;
12
- loadingMessage?: string;
13
- successCallBkFn?: Function;
14
- failureCallBkFn?: Function;
15
- headers?: any;
16
- responseType?: ResponseType;
17
- }
18
-
19
- export interface UploadAttachmentRequest {
20
- endPointURI: string;
21
- showMask?: Boolean;
22
- parameters?: any;
23
- loadingMessage?: string;
24
- successCallBkFn?: Function;
25
- failureCallBkFn?: Function;
26
- files: FileList;
27
- }
28
-
29
- const useAxios = () => {
30
- const mask = useLoadingMask();
31
- const dispatch = useDispatch();
32
- const apiBaseUrl = useSelector(
33
- (state: any) => state.AppInfo.value.apiBaseUrl
34
- );
35
- const axiosInstance = axios.create({
36
- baseURL: apiBaseUrl,
37
- timeout: 600000,
38
- withCredentials: true,
39
- });
40
-
41
- axiosInstance.defaults.withCredentials = true;
42
- axiosInstance.interceptors.response.use(
43
- (response: any) => {
44
- return response;
45
- },
46
- (error: any) => {
47
- if (
48
- error
49
- ? error.response
50
- ? error.response.status
51
- ? error.response.status === 401
52
- : false
53
- : false
54
- : false
55
- ) {
56
- dispatch(UserSessionActions.setUnAuthenticated());
57
- toast.error("your session is now expired, you need to login again", {
58
- autoClose: false,
59
- });
60
- } else if (
61
- error
62
- ? error.response
63
- ? error.response.status
64
- ? error.response.status === 403
65
- : false
66
- : false
67
- : false
68
- ) {
69
- toast.error("you aren't authorized to process this request");
70
- } else if (
71
- error
72
- ? error.response
73
- ? error.response.status
74
- ? error.response.status === 500
75
- : false
76
- : false
77
- : false
78
- ) {
79
- if (error.response.data instanceof Blob) {
80
- const blob = error.response.data;
81
- blob.text().then((text) => {
82
- toast.error(text);
83
- });
84
- } else {
85
- toast.error(error.response.data);
86
- }
87
- } else {
88
- toast.error(
89
- "failed to communicate with the server ... try again later"
90
- );
91
- }
92
- return "ERROR";
93
- }
94
- );
95
- const handleGetRequest = async (props: APIRequest) => {
96
- if (
97
- props.showMask !== undefined &&
98
- props.showMask != null &&
99
- props.showMask === true
100
- ) {
101
- mask.show(props.loadingMessage);
102
- }
103
- const response: any = await axiosInstance.get(props.endPointURI, {
104
- params: { ...props.parameters },
105
- withCredentials: true,
106
- headers: props.headers,
107
- responseType: props?.responseType,
108
- });
109
- if (
110
- props.showMask !== undefined &&
111
- props.showMask != null &&
112
- props.showMask === true
113
- ) {
114
- mask.hide();
115
- }
116
- if (response !== "ERROR") {
117
- if (
118
- props.successCallBkFn !== undefined &&
119
- props.successCallBkFn != null
120
- ) {
121
- props.successCallBkFn(response);
122
- }
123
- return response;
124
- } else {
125
- if (
126
- props.failureCallBkFn !== undefined &&
127
- props.failureCallBkFn != null
128
- ) {
129
- props.failureCallBkFn(response);
130
- }
131
- return "ERROR";
132
- }
133
- };
134
-
135
- const HandleDownloadHTTPPostPDF = async (
136
- props: APIRequest = { endPointURI: "", parameters: {}, data: {} }
137
- ) => {
138
- if (
139
- props.showMask !== undefined &&
140
- props.showMask != null &&
141
- props.showMask === true
142
- ) {
143
- mask.show(props.loadingMessage);
144
- }
145
- const response: any = await axiosInstance.post(
146
- props.endPointURI,
147
- props.data,
148
- {
149
- responseType: "blob",
150
- }
151
- );
152
- if (
153
- props.showMask !== undefined &&
154
- props.showMask != null &&
155
- props.showMask === true
156
- ) {
157
- mask.hide();
158
- }
159
- if (response !== "ERROR") {
160
- if (
161
- props.successCallBkFn !== undefined &&
162
- props.successCallBkFn != null
163
- ) {
164
- props.successCallBkFn(response);
165
- }
166
- return response;
167
- } else {
168
- if (
169
- props.failureCallBkFn !== undefined &&
170
- props.failureCallBkFn != null
171
- ) {
172
- props.failureCallBkFn(response);
173
- }
174
- return "ERROR";
175
- }
176
- };
177
- const handlePostRequest = async (props: APIRequest) => {
178
- if (
179
- props.showMask !== undefined &&
180
- props.showMask != null &&
181
- props.showMask === true
182
- ) {
183
- mask.show(props.loadingMessage);
184
- }
185
- let response: any = await axiosInstance.post(
186
- props.endPointURI,
187
- props.data,
188
- {
189
- params: props.parameters,
190
- responseType: props?.responseType,
191
- headers: props?.headers,
192
- }
193
- );
194
- if (
195
- props.showMask !== undefined &&
196
- props.showMask != null &&
197
- props.showMask === true
198
- ) {
199
- mask.hide();
200
- }
201
- if (response !== "ERROR") {
202
- if (
203
- props.successCallBkFn !== undefined &&
204
- props.successCallBkFn != null
205
- ) {
206
- props.successCallBkFn(response);
207
- }
208
- return response;
209
- } else {
210
- if (
211
- props.failureCallBkFn !== undefined &&
212
- props.failureCallBkFn != null
213
- ) {
214
- props.failureCallBkFn(response);
215
- }
216
- return "ERROR";
217
- }
218
- };
219
- const handleDeleteRequest = async (props: APIRequest) => {
220
- if (
221
- props.showMask !== undefined &&
222
- props.showMask != null &&
223
- props.showMask === true
224
- ) {
225
- mask.show(props.loadingMessage);
226
- }
227
- let response: any = await axiosInstance.delete(props.endPointURI, {
228
- params: {
229
- ...props.parameters,
230
- },
231
- responseType: props?.responseType,
232
- headers: props?.headers,
233
- });
234
- if (
235
- props.showMask !== undefined &&
236
- props.showMask != null &&
237
- props.showMask === true
238
- ) {
239
- mask.hide();
240
- }
241
- if (response !== "ERROR") {
242
- if (
243
- props.successCallBkFn !== undefined &&
244
- props.successCallBkFn != null
245
- ) {
246
- props.successCallBkFn(response);
247
- }
248
- return response;
249
- } else {
250
- if (
251
- props.failureCallBkFn !== undefined &&
252
- props.failureCallBkFn != null
253
- ) {
254
- props.failureCallBkFn(response);
255
- }
256
- return "ERROR";
257
- }
258
- };
259
-
260
- const handleUploadRequest = async (props: UploadAttachmentRequest) => {
261
- if (props.files === null || props.files.length === 0) {
262
- toast.error("You must add files to upload");
263
- return "ERROR";
264
- }
265
- const formData = new FormData();
266
- for (const file of props.files) {
267
- formData.append("files", file);
268
- }
269
- if (
270
- props.showMask !== undefined &&
271
- props.showMask != null &&
272
- props.showMask === true
273
- ) {
274
- mask.show(props.loadingMessage);
275
- }
276
- let response: any = await axiosInstance.post(props.endPointURI, formData, {
277
- params: props?.parameters,
278
- headers: {
279
- "Content-Type": "multipart/form-data",
280
- },
281
- });
282
- if (
283
- props.showMask !== undefined &&
284
- props.showMask != null &&
285
- props.showMask === true
286
- ) {
287
- mask.hide();
288
- }
289
- if (response !== "ERROR") {
290
- if (
291
- props.successCallBkFn !== undefined &&
292
- props.successCallBkFn != null
293
- ) {
294
- props.successCallBkFn(response);
295
- }
296
- return response;
297
- } else {
298
- if (
299
- props.failureCallBkFn !== undefined &&
300
- props.failureCallBkFn != null
301
- ) {
302
- props.failureCallBkFn(response);
303
- }
304
- return "ERROR";
305
- }
306
- };
307
- return {
308
- handleGetRequest,
309
- handlePostRequest,
310
- handleDeleteRequest,
311
- HandleDownloadHTTPPostPDF,
312
- handleUploadRequest,
313
- };
314
- };
315
-
316
- export default useAxios;
1
+ import { toast } from "react-toastify";
2
+ import axios, { ResponseType } from "axios";
3
+ import { useDispatch, useSelector } from "react-redux";
4
+ import useLoadingMask from "./useLoadingMask";
5
+ import { UserSessionActions } from "../redux/features/common/UserSessionSlice";
6
+
7
+ export interface APIRequest {
8
+ endPointURI: string;
9
+ parameters?: any;
10
+ data?: any;
11
+ showMask?: Boolean;
12
+ loadingMessage?: string;
13
+ successCallBkFn?: Function;
14
+ failureCallBkFn?: Function;
15
+ headers?: any;
16
+ responseType?: ResponseType;
17
+ }
18
+
19
+ export interface UploadAttachmentRequest {
20
+ endPointURI: string;
21
+ showMask?: Boolean;
22
+ parameters?: any;
23
+ loadingMessage?: string;
24
+ successCallBkFn?: Function;
25
+ failureCallBkFn?: Function;
26
+ files: FileList;
27
+ }
28
+
29
+ const useAxios = () => {
30
+ const mask = useLoadingMask();
31
+ const dispatch = useDispatch();
32
+ const apiBaseUrl = useSelector(
33
+ (state: any) => state.AppInfo.value.apiBaseUrl
34
+ );
35
+ const axiosInstance = axios.create({
36
+ baseURL: apiBaseUrl,
37
+ timeout: 600000,
38
+ withCredentials: true,
39
+ });
40
+
41
+ axiosInstance.defaults.withCredentials = true;
42
+ axiosInstance.interceptors.request.use(
43
+ (config) => {
44
+ const token = localStorage.getItem("TOKEN");
45
+ if (token) {
46
+ config.headers.Authorization = `Bearer ${token}`;
47
+ }
48
+ return config;
49
+ },
50
+ (error) => Promise.reject(error)
51
+ );
52
+ axiosInstance.interceptors.response.use(
53
+ (response: any) => {
54
+ return response;
55
+ },
56
+ (error: any) => {
57
+ if (
58
+ error
59
+ ? error.response
60
+ ? error.response.status
61
+ ? error.response.status === 401
62
+ : false
63
+ : false
64
+ : false
65
+ ) {
66
+ dispatch(UserSessionActions.setUnAuthenticated());
67
+ localStorage.removeItem("TOKEN");
68
+ toast.error("your session is now expired, you need to login again", {
69
+ autoClose: false,
70
+ });
71
+ } else if (
72
+ error
73
+ ? error.response
74
+ ? error.response.status
75
+ ? error.response.status === 402
76
+ : false
77
+ : false
78
+ : false
79
+ ) {
80
+ dispatch(UserSessionActions.setUnAuthenticated());
81
+ toast.error(
82
+ "Your license is missing or has expired,Please reach out to your vendor for assistance."
83
+ );
84
+ } else if (
85
+ error
86
+ ? error.response
87
+ ? error.response.status
88
+ ? error.response.status === 403
89
+ : false
90
+ : false
91
+ : false
92
+ ) {
93
+ toast.error("you aren't authorized to process this request");
94
+ } else if (
95
+ error
96
+ ? error.response
97
+ ? error.response.status
98
+ ? error.response.status === 500
99
+ : false
100
+ : false
101
+ : false
102
+ ) {
103
+ if (error.response.data instanceof Blob) {
104
+ const blob = error.response.data;
105
+ blob.text().then((text) => {
106
+ toast.error(text);
107
+ });
108
+ } else {
109
+ toast.error(error.response.data);
110
+ }
111
+ } else {
112
+ toast.error(
113
+ "failed to communicate with the server ... try again later"
114
+ );
115
+ }
116
+ return "ERROR";
117
+ }
118
+ );
119
+ const handleGetRequest = async (props: APIRequest) => {
120
+ if (
121
+ props.showMask !== undefined &&
122
+ props.showMask != null &&
123
+ props.showMask === true
124
+ ) {
125
+ mask.show(props.loadingMessage);
126
+ }
127
+ const response: any = await axiosInstance.get(props.endPointURI, {
128
+ params: { ...props.parameters },
129
+ withCredentials: true,
130
+ headers: props.headers,
131
+ responseType: props?.responseType,
132
+ });
133
+ if (
134
+ props.showMask !== undefined &&
135
+ props.showMask != null &&
136
+ props.showMask === true
137
+ ) {
138
+ mask.hide();
139
+ }
140
+ if (response !== "ERROR") {
141
+ if (
142
+ props.successCallBkFn !== undefined &&
143
+ props.successCallBkFn != null
144
+ ) {
145
+ props.successCallBkFn(response);
146
+ }
147
+ return response;
148
+ } else {
149
+ if (
150
+ props.failureCallBkFn !== undefined &&
151
+ props.failureCallBkFn != null
152
+ ) {
153
+ props.failureCallBkFn(response);
154
+ }
155
+ return "ERROR";
156
+ }
157
+ };
158
+
159
+ const HandleDownloadHTTPPostPDF = async (
160
+ props: APIRequest = { endPointURI: "", parameters: {}, data: {} }
161
+ ) => {
162
+ if (
163
+ props.showMask !== undefined &&
164
+ props.showMask != null &&
165
+ props.showMask === true
166
+ ) {
167
+ mask.show(props.loadingMessage);
168
+ }
169
+ const response: any = await axiosInstance.post(
170
+ props.endPointURI,
171
+ props.data,
172
+ {
173
+ responseType: "blob",
174
+ }
175
+ );
176
+ if (
177
+ props.showMask !== undefined &&
178
+ props.showMask != null &&
179
+ props.showMask === true
180
+ ) {
181
+ mask.hide();
182
+ }
183
+ if (response !== "ERROR") {
184
+ if (
185
+ props.successCallBkFn !== undefined &&
186
+ props.successCallBkFn != null
187
+ ) {
188
+ props.successCallBkFn(response);
189
+ }
190
+ return response;
191
+ } else {
192
+ if (
193
+ props.failureCallBkFn !== undefined &&
194
+ props.failureCallBkFn != null
195
+ ) {
196
+ props.failureCallBkFn(response);
197
+ }
198
+ return "ERROR";
199
+ }
200
+ };
201
+ const handlePostRequest = async (props: APIRequest) => {
202
+ if (
203
+ props.showMask !== undefined &&
204
+ props.showMask != null &&
205
+ props.showMask === true
206
+ ) {
207
+ mask.show(props.loadingMessage);
208
+ }
209
+ let response: any = await axiosInstance.post(
210
+ props.endPointURI,
211
+ props.data,
212
+ {
213
+ params: props.parameters,
214
+ responseType: props?.responseType,
215
+ headers: props?.headers,
216
+ }
217
+ );
218
+ if (
219
+ props.showMask !== undefined &&
220
+ props.showMask != null &&
221
+ props.showMask === true
222
+ ) {
223
+ mask.hide();
224
+ }
225
+ if (response !== "ERROR") {
226
+ if (
227
+ props.successCallBkFn !== undefined &&
228
+ props.successCallBkFn != null
229
+ ) {
230
+ props.successCallBkFn(response);
231
+ }
232
+ return response;
233
+ } else {
234
+ if (
235
+ props.failureCallBkFn !== undefined &&
236
+ props.failureCallBkFn != null
237
+ ) {
238
+ props.failureCallBkFn(response);
239
+ }
240
+ return "ERROR";
241
+ }
242
+ };
243
+ const handleDeleteRequest = async (props: APIRequest) => {
244
+ if (
245
+ props.showMask !== undefined &&
246
+ props.showMask != null &&
247
+ props.showMask === true
248
+ ) {
249
+ mask.show(props.loadingMessage);
250
+ }
251
+ let response: any = await axiosInstance.delete(props.endPointURI, {
252
+ params: {
253
+ ...props.parameters,
254
+ },
255
+ responseType: props?.responseType,
256
+ headers: props?.headers,
257
+ });
258
+ if (
259
+ props.showMask !== undefined &&
260
+ props.showMask != null &&
261
+ props.showMask === true
262
+ ) {
263
+ mask.hide();
264
+ }
265
+ if (response !== "ERROR") {
266
+ if (
267
+ props.successCallBkFn !== undefined &&
268
+ props.successCallBkFn != null
269
+ ) {
270
+ props.successCallBkFn(response);
271
+ }
272
+ return response;
273
+ } else {
274
+ if (
275
+ props.failureCallBkFn !== undefined &&
276
+ props.failureCallBkFn != null
277
+ ) {
278
+ props.failureCallBkFn(response);
279
+ }
280
+ return "ERROR";
281
+ }
282
+ };
283
+
284
+ const handleUploadRequest = async (props: UploadAttachmentRequest) => {
285
+ if (props.files === null || props.files.length === 0) {
286
+ toast.error("You must add files to upload");
287
+ return "ERROR";
288
+ }
289
+ const formData = new FormData();
290
+ for (const file of props.files) {
291
+ formData.append("files", file);
292
+ }
293
+ if (
294
+ props.showMask !== undefined &&
295
+ props.showMask != null &&
296
+ props.showMask === true
297
+ ) {
298
+ mask.show(props.loadingMessage);
299
+ }
300
+ let response: any = await axiosInstance.post(props.endPointURI, formData, {
301
+ params: props?.parameters,
302
+ headers: {
303
+ "Content-Type": "multipart/form-data",
304
+ },
305
+ });
306
+ if (
307
+ props.showMask !== undefined &&
308
+ props.showMask != null &&
309
+ props.showMask === true
310
+ ) {
311
+ mask.hide();
312
+ }
313
+ if (response !== "ERROR") {
314
+ if (
315
+ props.successCallBkFn !== undefined &&
316
+ props.successCallBkFn != null
317
+ ) {
318
+ props.successCallBkFn(response);
319
+ }
320
+ return response;
321
+ } else {
322
+ if (
323
+ props.failureCallBkFn !== undefined &&
324
+ props.failureCallBkFn != null
325
+ ) {
326
+ props.failureCallBkFn(response);
327
+ }
328
+ return "ERROR";
329
+ }
330
+ };
331
+ return {
332
+ handleGetRequest,
333
+ handlePostRequest,
334
+ handleDeleteRequest,
335
+ HandleDownloadHTTPPostPDF,
336
+ handleUploadRequest,
337
+ };
338
+ };
339
+
340
+ export default useAxios;