Skip to content

Commit bfb2713

Browse files
authored
v3.4.4 20250112 [Frontend Module] (#309)
## Background As users, i want to upload any file that i want to proceed without any worries regarding non-standarize name on file or not ## Current condition iLovePDF seems have sensitive case regarding non-standarize or duplicate characters on file name that want to proceed, so whenever any file that have non-standarize or duplicate characters on it. It will return error and crash iLovePDF logics with error `({"error":{"type":"ServerError","message":"Something on our end went wrong, probably we are not catching some exception we should catch! We are logging this and we will fix it.","code":"500"}})` ## Next condition Handle properly on the front-end services to rename any uploaded file before serve to the backend, this is better approach and less modification on source code. Due change renaming logic on backend could be hectic and risky.
2 parents 0298ab1 + d7f5484 commit bfb2713

File tree

7 files changed

+152
-138
lines changed

7 files changed

+152
-138
lines changed

composer.lock

+11-8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package-lock.json

+106-106
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/build/assets/kao-logic-D2bKg_qq.js public/build/assets/kao-logic-DCZcVOCu.js

+5-5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/build/manifest.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
]
2929
},
3030
"resources/js/kao-logic.js": {
31-
"file": "assets/kao-logic-D2bKg_qq.js",
31+
"file": "assets/kao-logic-DCZcVOCu.js",
3232
"name": "kao-logic",
3333
"src": "resources/js/kao-logic.js",
3434
"isEntry": true,

resources/js/kao-logic.js

+27-16
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ const options = {
2929
const adobeClientID = "STATIC_CLIENT_ID";
3030
const appMajorVer = 3;
3131
const appMinorVer = 4;
32-
const appPatchVer = 3;
32+
const appPatchVer = 4;
3333
const apiUrl = "http://192.168.0.2";
3434
const bearerToken = "STATIC_BEARER";
3535
const errModal = new Modal($errModal, options);
@@ -242,6 +242,9 @@ if (uploadDropzone) {
242242
let uploadDropzone = new Dropzone("#dropzoneArea", {
243243
url: `${apiUrl}/api/v1/file/upload`,
244244
paramName: "file",
245+
renameFile: function (file) {
246+
return fileNameFormat(fileNameFormat(file.name));
247+
},
245248
maxFilesize: 25,
246249
maxFiles: 5,
247250
acceptedFiles: "application/pdf",
@@ -443,7 +446,7 @@ if (uploadDropzone) {
443446
}
444447

445448
if (file) {
446-
const filePath = uploadPath + file.name;
449+
const filePath = uploadPath + fileNameFormat(file.name);
447450

448451
if (xhrScsUploads > 0) {
449452
let dzErrorMessage =
@@ -454,7 +457,7 @@ if (uploadDropzone) {
454457
xhrScsUploads = xhrScsUploads - 1;
455458
}
456459
uploadedFile = uploadedFile.filter(
457-
(item) => !file.name.includes(item)
460+
(item) => !fileNameFormat(file.name).includes(item)
458461
);
459462
}
460463

@@ -488,7 +491,7 @@ if (uploadDropzone) {
488491
});
489492

490493
this.on("success", function (response) {
491-
var uploadedFileName = response.name;
494+
var uploadedFileName = fileNameFormat(response.name);
492495
uploadedFile.push(uploadedFileName);
493496

494497
xhrScsUploads = xhrScsUploads + 1;
@@ -534,7 +537,7 @@ if (uploadDropzone) {
534537
this.on("timeout", function (file) {
535538
uploadDropzone.removeFile(file);
536539
uploadedFile = uploadedFile.filter(
537-
(item) => !file.name.includes(item)
540+
(item) => !fileNameFormat(file.name).includes(item)
538541
);
539542
errMessage.innerText = "Connection timeout !";
540543
errSubMessage.innerText = "Please try again later";
@@ -571,6 +574,9 @@ if (uploadDropzoneAlt) {
571574
let uploadDropzoneAlt = new Dropzone("#dropzoneAreaCnv", {
572575
url: `${apiUrl}/api/v1/file/upload`,
573576
paramName: "file",
577+
renameFile: function (file) {
578+
return fileNameFormat(file.name);
579+
},
574580
maxFilesize: 25,
575581
maxFiles: 5,
576582
acceptedFiles: ".xlsx, .xls, .ppt, .pptx, .docx, .doc, image/*",
@@ -750,7 +756,7 @@ if (uploadDropzoneAlt) {
750756
}
751757

752758
if (file) {
753-
const filePath = uploadPath + file.name;
759+
const filePath = uploadPath + fileNameFormat(file.name);
754760

755761
if (xhrScsUploads > 0) {
756762
let dzErrorMessage =
@@ -761,7 +767,7 @@ if (uploadDropzoneAlt) {
761767
xhrScsUploads = xhrScsUploads - 1;
762768
}
763769
uploadedFile = uploadedFile.filter(
764-
(item) => !file.name.includes(item)
770+
(item) => !fileNameFormat(file.name).includes(item)
765771
);
766772
}
767773

@@ -795,7 +801,7 @@ if (uploadDropzoneAlt) {
795801
});
796802

797803
this.on("success", function (file) {
798-
var uploadedFileName = file.name;
804+
var uploadedFileName = fileNameFormat(file.name);
799805
uploadedFile.push(uploadedFileName);
800806

801807
xhrScsUploads = xhrScsUploads + 1;
@@ -807,7 +813,7 @@ if (uploadDropzoneAlt) {
807813
}
808814

809815
if (!file.type.startsWith("image/")) {
810-
generateThumbnail(file.name)
816+
generateThumbnail(fileNameFormat(file.name))
811817
.then(function (thumbnailURL) {
812818
file.previewElement
813819
.querySelector("#loadingThumbnail")
@@ -881,7 +887,7 @@ if (uploadDropzoneAlt) {
881887

882888
this.on("thumbnail", function (file) {
883889
if (file.type.startsWith("image/")) {
884-
getTemporaryURL(file.name)
890+
getTemporaryURL(fileNameFormat(file.name))
885891
.then(function (temporaryURL) {
886892
file.previewElement
887893
.querySelector("#loadingThumbnail")
@@ -919,7 +925,7 @@ if (uploadDropzoneAlt) {
919925
this.on("timeout", function (file) {
920926
uploadDropzoneAlt.removeFile(file);
921927
uploadedFile = uploadedFile.filter(
922-
(item) => !file.name.includes(item)
928+
(item) => !fileNameFormat(file.name).includes(item)
923929
);
924930
file.previewElement
925931
.querySelector("#loadingThumbnail")
@@ -956,6 +962,9 @@ if (uploadDropzoneSingle) {
956962
let uploadDropzoneSingle = new Dropzone("#dropzoneAreaSingle", {
957963
url: `${apiUrl}/api/v1/file/upload`,
958964
paramName: "file",
965+
renameFile: function (file) {
966+
return fileNameFormat(file.name);
967+
},
959968
maxFilesize: 25,
960969
maxFiles: 1,
961970
acceptedFiles: "application/pdf",
@@ -1154,7 +1163,7 @@ if (uploadDropzoneSingle) {
11541163
}
11551164

11561165
if (file) {
1157-
const filePath = uploadPath + file.name;
1166+
const filePath = uploadPath + fileNameFormat(file.name);
11581167

11591168
if (xhrScsUploads > 0) {
11601169
let dzErrorMessage =
@@ -1165,7 +1174,7 @@ if (uploadDropzoneSingle) {
11651174
xhrScsUploads = xhrScsUploads - 1;
11661175
}
11671176
uploadedFile = uploadedFile.filter(
1168-
(item) => !file.name.includes(item)
1177+
(item) => !fileNameFormat(file.name).includes(item)
11691178
);
11701179
}
11711180

@@ -1199,7 +1208,7 @@ if (uploadDropzoneSingle) {
11991208
});
12001209

12011210
this.on("success", function (response) {
1202-
var uploadedFileName = response.name;
1211+
var uploadedFileName = fileNameFormat(response.name);
12031212
uploadedFile.push(uploadedFileName);
12041213

12051214
xhrScsUploads = xhrScsUploads + 1;
@@ -1244,7 +1253,7 @@ if (uploadDropzoneSingle) {
12441253
this.on("timeout", function (file) {
12451254
uploadDropzoneSingle.removeFile(file);
12461255
uploadedFile = uploadedFile.filter(
1247-
(item) => !file.name.includes(item)
1256+
(item) => !fileNameFormat(file.name).includes(item)
12481257
);
12491258
errMessage.innerText = "Connection timeout !";
12501259
errSubMessage.innerText = "Please try again later";
@@ -1444,7 +1453,9 @@ function fetchVersion() {
14441453

14451454
function fileNameFormat(fileName) {
14461455
let trimmedFileName = fileName.trim();
1447-
let newFileName = trimmedFileName.replace(/\s+/g, "_");
1456+
let newFileName = trimmedFileName
1457+
.replace(/[^\w.]+/g, "_")
1458+
.replace(/_+/g, "_");
14481459

14491460
return newFileName;
14501461
}
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<html lang="en" class="scroll-smooth"><head>@include('includes.head')<header>@include('includes.header')</header></head><body class="bg-origin-padding bg-top bg-scroll bg-cover bg-dt1 bg-no-repeat" style="background-image:url('{{ asset('assets/home.avif') }}')">@include('includes.modal') @include('includes.pdf-preview')<div id="content" class="flex flex-col min-h-screen justify-between">@yield('content')</div><script async type="module" src="{{asset('build/assets/kao-logic-D2bKg_qq.js')}}"></script><script async type="module" src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.8.69/pdf.min.mjs"></script><script async type="module" src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.8.69/pdf.worker.min.mjs"></script><script async type="text/javascript" src="{{asset('ext-js/kao-controller.js')}}"></script><script async type="text/javascript" src="{{asset('ext-js/kao-main.js')}}"></script><script async type="text/javascript" src="https://unpkg.com/@material-tailwind/html@latest/scripts/ripple.js"></script></body><footer>@include('includes.footer')</footer></html>
1+
<html lang="en" class="scroll-smooth"><head>@include('includes.head')<header>@include('includes.header')</header></head><body class="bg-origin-padding bg-top bg-scroll bg-cover bg-dt1 bg-no-repeat" style="background-image:url('{{ asset('assets/home.avif') }}')">@include('includes.modal') @include('includes.pdf-preview')<div id="content" class="flex flex-col min-h-screen justify-between">@yield('content')</div><script async type="module" src="{{asset('build/assets/kao-logic-DCZcVOCu.js')}}"></script><script async type="module" src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.10.38/pdf.min.mjs"></script><script async type="module" src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.10.38/pdf.worker.min.mjs"></script><script async type="text/javascript" src="{{asset('ext-js/kao-controller.js')}}"></script><script async type="text/javascript" src="{{asset('ext-js/kao-main.js')}}"></script><script async type="text/javascript" src="https://unpkg.com/@material-tailwind/html@latest/scripts/ripple.js"></script></body><footer>@include('includes.footer')</footer></html>
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<html lang="en" class="scroll-smooth"><head>@include('includes.head')<header>@include('includes.header')</header></head><body class="bg-origin-padding bg-top bg-scroll bg-cover bg-dt1 bg-no-repeat" style="background-image:url('{{ asset('assets/home.avif') }}')">@include('includes.modal') @include('includes.pdf-preview')<div id="content" class="flex flex-col min-h-screen justify-between">@yield('content')</div><script async type="module" src="{{asset('build/assets/kao-logic-D2bKg_qq.js')}}"></script><script async type="text/javascript" src="{{asset('ext-js/kao-controller.js')}}"></script><script async type="text/javascript" src="{{asset('ext-js/kao-main.js')}}"></script><script async type="text/javascript" src="https://unpkg.com/@material-tailwind/html@latest/scripts/ripple.js"></script></body></html>
1+
<html lang="en" class="scroll-smooth"><head>@include('includes.head')<header>@include('includes.header')</header></head><body class="bg-origin-padding bg-top bg-scroll bg-cover bg-dt1 bg-no-repeat" style="background-image:url('{{ asset('assets/home.avif') }}')">@include('includes.modal') @include('includes.pdf-preview')<div id="content" class="flex flex-col min-h-screen justify-between">@yield('content')</div><script async type="module" src="{{asset('build/assets/kao-logic-DCZcVOCu.js')}}"></script><script async type="text/javascript" src="{{asset('ext-js/kao-controller.js')}}"></script><script async type="text/javascript" src="{{asset('ext-js/kao-main.js')}}"></script><script async type="text/javascript" src="https://unpkg.com/@material-tailwind/html@latest/scripts/ripple.js"></script></body></html>

0 commit comments

Comments
 (0)