impaktapps-ui-builder 1.0.180 → 1.0.181-test

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.
@@ -3,3 +3,4 @@ export declare function downloadFile({ data, name }: {
3
3
  name: string;
4
4
  }): void;
5
5
  export declare const downloadFileFromUrl: (response: any, service: any) => void;
6
+ export declare const downloadFileStream: (params: any) => Promise<void>;
@@ -5,6 +5,7 @@ export interface handlersProps {
5
5
  dynamicData: any;
6
6
  userValue: any;
7
7
  service: any;
8
+ fetchservice?: any;
8
9
  serviceHolder: any;
9
10
  eventGroups?: any;
10
11
  parentEventOutput?: any;
@@ -3,6 +3,7 @@ interface funcParamsProps {
3
3
  store: any;
4
4
  dynamicData: any;
5
5
  service: any;
6
+ fetchservice: any;
6
7
  userValue: any;
7
8
  pageDataProvider: any;
8
9
  functionsProvider?: Record<string, any>;
@@ -32,5 +33,6 @@ declare const _default: (funcParams: funcParamsProps) => {
32
33
  callHandler: (eventType: string, functionParameters?: any) => void;
33
34
  downloadFile: typeof downloadFile;
34
35
  downloadFileFromUrl: (response: any, service: any) => void;
36
+ downloadFileStream: (params: any) => Promise<void>;
35
37
  };
36
38
  export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "impaktapps-ui-builder",
3
- "version": "1.0.180",
3
+ "version": "1.0.181-test",
4
4
  "scripts": {
5
5
  "dev": "vite",
6
6
  "build": "tsc && vite build",
@@ -73,6 +73,7 @@ export const EventSchema = {
73
73
  oneOf: [
74
74
  { title: "RankProvider", const: "RankProvider" },
75
75
  { title: "Download File", const: "downloadFile" },
76
+ { title: "Download File Stream", const: "downloadFileStream" },
76
77
  { title: "downloadFileFromUrl", const: "downloadFileFromUrl" },
77
78
  ]
78
79
  },
@@ -44,4 +44,84 @@ export const downloadFileFromUrl = (response: any, service) => {
44
44
  link.parentNode.removeChild(link);
45
45
  };
46
46
 
47
+ export const downloadFileStream = async (params: any) => {
48
+ try {
49
+ let response: Response;
47
50
 
51
+ if (params.method === "GET") {
52
+ response = await params.fetchservice.getStream(
53
+ params.url,
54
+ params.config
55
+ );
56
+ } else if (params.method === "POST") {
57
+ response = await params.fetchservice.postStream(
58
+ params.url,
59
+ params.body,
60
+ params.config
61
+ );
62
+ } else {
63
+ throw new Error(
64
+ `Unsupported HTTP method: ${params.method}. Only GET and POST are supported.`
65
+ );
66
+ }
67
+
68
+ if (!response.ok) {
69
+ throw new Error("Download failed");
70
+ }
71
+
72
+ // Notify when download starts
73
+ params.store.setNotify({
74
+ SuccessMessage: "File Download Started Successfully",
75
+ Success: true,
76
+ });
77
+
78
+ const fileName =
79
+ response.headers.get("filename") || "downloaded_file";
80
+
81
+ const extension = fileName.includes(".")
82
+ ? fileName.substring(fileName.lastIndexOf("."))
83
+ : "";
84
+
85
+ const reader = response.body!.getReader();
86
+
87
+ //@ts-ignore
88
+ const fileHandle = await window.showSaveFilePicker({
89
+ suggestedName: fileName,
90
+ types: extension
91
+ ? [
92
+ {
93
+ description: "File",
94
+ accept: {
95
+ "application/octet-stream": [extension],
96
+ },
97
+ },
98
+ ]
99
+ : undefined,
100
+ });
101
+
102
+ const writable = await fileHandle.createWritable();
103
+
104
+ while (true) {
105
+ const { done, value } = await reader.read();
106
+
107
+ if (done) break;
108
+
109
+ await writable.write(value);
110
+ }
111
+
112
+ await writable.close();
113
+
114
+ // Notify when download completes
115
+ params.store.setNotify({
116
+ SuccessMessage: `File "${fileHandle.name}" downloaded successfully.`,
117
+ Success: true,
118
+ });
119
+ } catch (e) {
120
+ params.store.setNotify({
121
+ FailMessage: "File Download Failed",
122
+ Fail: true,
123
+ });
124
+
125
+ console.error(e);
126
+ }
127
+ };
@@ -126,10 +126,13 @@ function executeInBuiltFunctionHandler(params: handlersProps) {
126
126
  let parameter = {};
127
127
  if (params.config.funcParametersCode) {
128
128
  const makeFunc = eval(params.config.funcParametersCode)
129
- parameter = makeFunc(params.store, params.dynamicData, params.userValue, params.parentEventOutput, params.service);
130
- params.serviceHolder[params.config.inBuiltFunctionType](parameter, params.service)
129
+ parameter = makeFunc(params.store, params.dynamicData, params.userValue, params.parentEventOutput, params.service, params.fetchservice);
130
+ params.serviceHolder[params.config.inBuiltFunctionType](
131
+ parameter,
132
+ params.service
133
+ );
131
134
  } else {
132
- params.serviceHolder[params.config.inBuiltFunctionType](params.store, params.dynamicData, params.userValue, params.parentEventOutput, params.service)
135
+ params.serviceHolder[params.config.inBuiltFunctionType](params.store, params.dynamicData, params.userValue, params.parentEventOutput, params.service, params.fetchservice)
133
136
  }
134
137
  }
135
138
 
@@ -5,6 +5,7 @@ export interface handlersProps {
5
5
  dynamicData: any,
6
6
  userValue: any,
7
7
  service: any,
8
+ fetchservice?: any,
8
9
  serviceHolder: any,
9
10
  eventGroups?: any,
10
11
  parentEventOutput?: any,
@@ -1,5 +1,5 @@
1
1
  import _, { isEmpty } from "lodash";
2
- import { downloadFileFromUrl, downloadFile } from "./downloadFile";
2
+ import { downloadFileFromUrl, downloadFile, downloadFileStream } from "./downloadFile";
3
3
  import { executeEvents, executeRefreshHandler } from "./events";
4
4
  import { handlersProps } from "./interface";
5
5
  let compType: string;
@@ -17,6 +17,7 @@ interface funcParamsProps {
17
17
  store: any,
18
18
  dynamicData: any,
19
19
  service: any,
20
+ fetchservice: any,
20
21
  userValue: any,
21
22
  pageDataProvider: any,
22
23
  functionsProvider?: Record<string, any>,
@@ -65,8 +66,8 @@ export default (funcParams: funcParamsProps) => {
65
66
  const formDataHolder = {};
66
67
  let executeEventsParameters: handlersProps = {
67
68
  config: {}, componentName: "",
68
- store: funcParams.store, dynamicData: funcParams.dynamicData, userValue: funcParams.userValue, service: funcParams.service,
69
- serviceHolder: { downloadFile, download: downloadFileFromUrl, ...funcParams.functionsProvider }, eventGroups,
69
+ store: funcParams.store, dynamicData: funcParams.dynamicData, userValue: funcParams.userValue, service: funcParams.service, fetchservice: funcParams.fetchservice,
70
+ serviceHolder: { downloadFile, download: downloadFileFromUrl, downloadFileStream, ...funcParams.functionsProvider }, eventGroups,
70
71
  functionsProvider: funcParams.functionsProvider, formDataHolder
71
72
  };
72
73
  return {
@@ -313,6 +314,7 @@ export default (funcParams: funcParamsProps) => {
313
314
  },
314
315
  downloadFile: downloadFile,
315
316
  downloadFileFromUrl: downloadFileFromUrl,
317
+ downloadFileStream: downloadFileStream,
316
318
  ...funcParams.functionsProvider
317
319
  };
318
320
  };