@churchapps/apphelper 1.0.4 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"FileUpload.d.ts","sourceRoot":"","sources":["../../src/components/FileUpload.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAGnD,OAAO,EAAqB,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9D,UAAU,KAAK;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,qBA8FtC"}
1
+ {"version":3,"file":"FileUpload.d.ts","sourceRoot":"","sources":["../../src/components/FileUpload.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAGnD,OAAO,EAAqB,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9D,UAAU,KAAK;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,qBA+EtC"}
@@ -1,13 +1,14 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useState, useEffect } from "react";
4
- import axios from "axios";
4
+ import { FileHelper } from "@churchapps/helpers";
5
5
  import { LinearProgress } from "@mui/material";
6
6
  import { ApiHelper, Locale } from "../helpers";
7
7
  export function FileUpload(props) {
8
8
  const [file, setFile] = useState({});
9
9
  const [uploadedFile, setUploadedFile] = useState({});
10
10
  const [uploadProgress, setUploadProgress] = useState(-1);
11
+ const [uploadError, setUploadError] = useState(null);
11
12
  const handleChange = (e) => {
12
13
  e.preventDefault();
13
14
  if (e.target.files && e.target.files.length > 0) {
@@ -21,24 +22,36 @@ export function FileUpload(props) {
21
22
  fileReader.onerror = (error) => { reject(error); };
22
23
  });
23
24
  const handleSave = async () => {
25
+ setUploadError(null);
24
26
  const f = { ...file };
25
27
  f.size = uploadedFile.size;
26
28
  f.fileType = uploadedFile.type;
27
29
  f.fileName = uploadedFile.name;
28
30
  f.contentType = props.contentType;
29
31
  f.contentId = props.contentId;
30
- const preUploaded = await preUpload();
31
- if (!preUploaded) {
32
- const base64 = await convertBase64();
33
- f.fileContents = base64;
32
+ try {
33
+ const preUploaded = await preUpload();
34
+ if (!preUploaded) {
35
+ const base64 = await convertBase64();
36
+ f.fileContents = base64;
37
+ }
38
+ else if (preUploaded.externalId)
39
+ f.externalId = preUploaded.externalId;
40
+ const data = await ApiHelper.post("/files", [f], "ContentApi");
41
+ setFile({});
42
+ setUploadedFile({});
43
+ const el = document.getElementById("fileUpload");
44
+ if (el)
45
+ el.value = "";
46
+ props.saveCallback(data[0]);
47
+ }
48
+ catch (error) {
49
+ const isQuota = String(error?.message || error).includes("storage_quota_exceeded");
50
+ setUploadError(isQuota
51
+ ? Locale.label("fileUpload.quotaExceeded", "Storage quota exceeded. Delete unused files or upgrade your storage plan.")
52
+ : Locale.label("fileUpload.uploadFailed", "Upload failed. Please try again."));
53
+ setUploadProgress(-1);
34
54
  }
35
- const data = await ApiHelper.post("/files", [f], "ContentApi");
36
- setFile({});
37
- setUploadedFile({});
38
- const el = document.getElementById("fileUpload");
39
- if (el)
40
- el.value = "";
41
- props.saveCallback(data[0]);
42
55
  };
43
56
  const checkSave = () => {
44
57
  if (props.pendingSave) {
@@ -49,31 +62,13 @@ export function FileUpload(props) {
49
62
  }
50
63
  };
51
64
  const preUpload = async () => {
52
- const params = { fileName: uploadedFile.name, contentType: props.contentType, contentId: props.contentId };
65
+ const params = { fileName: uploadedFile.name, contentType: props.contentType, contentId: props.contentId, size: uploadedFile.size, mimeType: uploadedFile.type };
53
66
  const presigned = await ApiHelper.post("/files/postUrl", params, "ContentApi");
54
- const doUpload = presigned.key !== undefined;
55
- if (doUpload)
56
- await postPresignedFile(presigned);
57
- return doUpload;
58
- };
59
- const postPresignedFile = (presigned) => {
60
- const formData = new FormData();
61
- formData.append("acl", "public-read");
62
- formData.append("Content-Type", uploadedFile.type);
63
- for (const property in presigned.fields)
64
- formData.append(property, presigned.fields[property]);
65
- const f = document.getElementById("fileUpload");
66
- if (f?.files?.[0])
67
- formData.append("file", f.files[0]);
68
- const axiosConfig = {
69
- headers: { "Content-Type": "multipart/form-data" },
70
- onUploadProgress: (progressEvent) => {
71
- if (progressEvent.total) {
72
- setUploadProgress(Math.round((100 * progressEvent.loaded) / progressEvent.total));
73
- }
74
- }
75
- };
76
- return axios.post(presigned.url, formData, axiosConfig);
67
+ if (presigned.error)
68
+ throw new Error(presigned.error);
69
+ if (presigned.key === undefined)
70
+ return false;
71
+ return FileHelper.uploadPresignedFile(presigned, uploadedFile, setUploadProgress);
77
72
  };
78
73
  useEffect(checkSave, [props.pendingSave]);
79
74
  const getFileLink = () => {
@@ -82,6 +77,6 @@ export function FileUpload(props) {
82
77
  else if (file)
83
78
  return (_jsx("div", { children: _jsx("a", { href: file.contentPath, children: file.fileName }) }));
84
79
  };
85
- return (_jsxs(_Fragment, { children: [_jsx("label", { children: Locale.label("fileUpload.file") }), getFileLink(), _jsx("input", { id: "fileUpload", type: "file", onChange: handleChange, "data-testid": "file-upload-input" })] }));
80
+ return (_jsxs(_Fragment, { children: [_jsx("label", { children: Locale.label("fileUpload.file") }), uploadError && _jsx("div", { style: { color: "#d32f2f", fontSize: 13, marginBottom: 4 }, children: uploadError }), getFileLink(), _jsx("input", { id: "fileUpload", type: "file", onChange: handleChange, "data-testid": "file-upload-input" })] }));
86
81
  }
87
82
  //# sourceMappingURL=FileUpload.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileUpload.js","sourceRoot":"","sources":["../../src/components/FileUpload.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileUpload.js","sourceRoot":"","sources":["../../src/components/FileUpload.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,EAAiB,MAAM,YAAY,CAAC;AAS9D,MAAM,UAAU,UAAU,CAAC,KAAY;IACrC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAgB,EAAmB,CAAC,CAAC;IACrE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAO,EAAU,CAAC,CAAC;IACnE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAEpE,MAAM,YAAY,GAAG,CAAC,CAAsC,EAAE,EAAE;QAC9D,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1D,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QACpC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACvC,UAAU,CAAC,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,UAAU,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;QAC5B,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;QACtB,CAAC,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAC3B,CAAC,CAAC,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC;QAC/B,CAAC,CAAC,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC;QAC/B,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QAClC,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;gBACrC,CAAC,CAAC,YAAY,GAAG,MAAgB,CAAC;YACpC,CAAC;iBAAM,IAAI,WAAW,CAAC,UAAU;gBAAE,CAAC,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;YACzE,MAAM,IAAI,GAAoB,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;YAChF,OAAO,CAAC,EAAE,CAAC,CAAC;YACZ,eAAe,CAAC,EAAU,CAAC,CAAC;YAC5B,MAAM,EAAE,GAAG,QAAQ,CAAC,cAAc,CAAC,YAAY,CAA4B,CAAC;YAC5E,IAAI,EAAE;gBAAE,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;YACtB,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,MAAM,CAAE,KAAe,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;YAC9F,cAAc,CAAC,OAAO;gBACpB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,2EAA2E,CAAC;gBACvH,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,kCAAkC,CAAC,CAAC,CAAC;YACjF,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC;gBAAE,UAAU,EAAE,CAAC;;gBACnC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,IAA8C,EAAE;QACrE,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;QACjK,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QAC/E,IAAI,SAAS,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,SAAS,CAAC,GAAG,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC9C,OAAO,UAAU,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC;IACpF,CAAC,CAAC;IAEF,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAE1C,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,cAAc,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW;YAAE,OAAO,KAAC,cAAc,IAAC,KAAK,EAAE,cAAc,GAAI,CAAC;aAC1F,IAAI,IAAI;YAAE,OAAO,CAAC,wBAAK,YAAG,IAAI,EAAE,IAAI,CAAC,WAAW,YAAG,IAAI,CAAC,QAAQ,GAAK,GAAM,CAAC,CAAC;IACpF,CAAC,CAAC;IAEF,OAAO,CACL,8BACE,0BAAQ,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAS,EAC/C,WAAW,IAAI,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,YAAG,WAAW,GAAO,EACnG,WAAW,EAAE,EACd,gBAAO,EAAE,EAAC,YAAY,EAAC,IAAI,EAAC,MAAM,EAAC,QAAQ,EAAE,YAAY,iBAAc,mBAAmB,GAAG,IAC5F,CACJ,CAAC;AACJ,CAAC"}
@@ -210,7 +210,10 @@
210
210
  }
211
211
  },
212
212
  "fileUpload": {
213
- "file": "File"
213
+ "chooseFile": "Choose File",
214
+ "file": "File",
215
+ "quotaExceeded": "Storage quota exceeded. Delete unused files or upgrade your storage plan.",
216
+ "uploadFailed": "Upload failed. Please try again."
214
217
  },
215
218
  "formSubmissionEdit": {
216
219
  "back": "Back",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@churchapps/apphelper",
3
- "version": "1.0.4",
3
+ "version": "1.1.0",
4
4
  "description": "Library of helper functions, components, and feature modules (donations/forms/login/markdown/website) for React and NextJS ChurchApps",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -138,7 +138,7 @@
138
138
  "slug": "^11.0.0"
139
139
  },
140
140
  "devDependencies": {
141
- "@churchapps/helpers": "^2.0.0",
141
+ "@churchapps/helpers": "^2.1.0",
142
142
  "@eslint/js": "^10.0.1",
143
143
  "@stripe/react-stripe-js": "^3.10.0",
144
144
  "@stripe/stripe-js": "^7.9.0",