Skip to content

Commit 726f810

Browse files
authored
Bug browser image upload issues (#1001)
* add brave detect function * remove logs
1 parent 8179e2f commit 726f810

File tree

4 files changed

+57
-5
lines changed

4 files changed

+57
-5
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
"browserslist": "4.14.6",
5959
"buffer": "6.0.3",
6060
"chalk": "5.0.1",
61+
"compressorjs": "^1.2.1",
6162
"constants-browserify": "1.0.0",
6263
"crypto-browserify": "^3.12.0",
6364
"crypto-js": "4.0.0",

src/components/UploadLogo.jsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ const UploadLogo = ({
5050
};
5151

5252
const handleFile = async (file, path) => {
53-
console.log("This is called",file);
5453
setCroppedImage(undefined);
5554
setView(true);
5655

src/primaries/ImageClipper.js

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,19 @@ import React, {
1111
import Cropper from "react-easy-crop";
1212
import styledComponents from "styled-components";
1313
import Pica from 'pica';
14+
import Compressor from "compressorjs";
15+
16+
export function isBrave() {
17+
if (window.navigator.brave != undefined) {
18+
if (window.navigator.brave.isBrave.name == "isBrave") {
19+
return true;
20+
} else {
21+
return false;
22+
}
23+
} else {
24+
return false;
25+
}
26+
}
1427

1528
const ImageClipper = forwardRef((props, ref) => {
1629
// const [imageSrc, setImageSrc] = useState(null);
@@ -29,7 +42,10 @@ const ImageClipper = forwardRef((props, ref) => {
2942
if (imageSrc) {
3043
const croppedImage = await getCroppedImg(imageSrc, croppedAreaPixels);
3144
const clean = await convertBlobToBase64(croppedImage);
32-
const image = await resizeImage(clean);
45+
//because pica has compatiblity issues on brave, we use pica on chrome and comprressorjs on brave after checking if window is opened on brave or chrome.
46+
const image = isBrave() ? await resizeImageOnBrave(croppedImage) : await resizeImage(clean);
47+
48+
3349
const finalImage = await convertBlobToBase64(image);
3450
onImageCropped(finalImage);
3551
} else {
@@ -43,14 +59,11 @@ const ImageClipper = forwardRef((props, ref) => {
4359

4460
async function resizeImage(clean) {
4561
const pica = Pica();
46-
4762
let file = await createImage(clean);
48-
4963
const canvas = document.createElement("canvas");
5064

5165
canvas.height = 128;
5266
canvas.width = 128;
53-
5467
return new Promise(resolve => {
5568

5669
resolve(
@@ -66,6 +79,20 @@ const ImageClipper = forwardRef((props, ref) => {
6679
});
6780
}
6881

82+
async function resizeImageOnBrave(clean){
83+
return new Promise((resolve, reject) => {
84+
new Compressor(clean, {
85+
quality: 1,
86+
strict: true,
87+
maxWidth: 128,
88+
maxHeight: 128,
89+
checkOrientation: false,
90+
success: resolve,
91+
error: reject
92+
});
93+
})
94+
}
95+
6996
const convertBlobToBase64 = async (blob) => { // blob data
7097
return await blobToBase64(blob);
7198
}

yarn.lock

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4743,6 +4743,7 @@ __metadata:
47434743
browserslist: 4.14.6
47444744
buffer: 6.0.3
47454745
chalk: 5.0.1
4746+
compressorjs: ^1.2.1
47464747
constants-browserify: 1.0.0
47474748
crypto-browserify: ^3.12.0
47484749
crypto-js: 4.0.0
@@ -9917,6 +9918,13 @@ __metadata:
99179918
languageName: node
99189919
linkType: hard
99199920

9921+
"blueimp-canvas-to-blob@npm:^3.29.0":
9922+
version: 3.29.0
9923+
resolution: "blueimp-canvas-to-blob@npm:3.29.0"
9924+
checksum: 6a55b90fbe958b75f7c78ff9e7617c01254d29cc8567ea6c853cd26a52518b3dfce28635f6964130ac738ee8ff9fb9c0ca094db2ceeaa021ff0432c1985416eb
9925+
languageName: node
9926+
linkType: hard
9927+
99209928
"bmp-js@npm:^0.1.0":
99219929
version: 0.1.0
99229930
resolution: "bmp-js@npm:0.1.0"
@@ -11307,6 +11315,16 @@ __metadata:
1130711315
languageName: node
1130811316
linkType: hard
1130911317

11318+
"compressorjs@npm:^1.2.1":
11319+
version: 1.2.1
11320+
resolution: "compressorjs@npm:1.2.1"
11321+
dependencies:
11322+
blueimp-canvas-to-blob: ^3.29.0
11323+
is-blob: ^2.1.0
11324+
checksum: 8b25fc29b7908216f7029e807623ae9c034fb0e77a72a752686bdd255bd3b1a5cc004b6651cf7ca948c1f86f3151ac3fc00800119d17f8a248d2f0a54570c8b8
11325+
languageName: node
11326+
linkType: hard
11327+
1131011328
"concat-map@npm:0.0.1":
1131111329
version: 0.0.1
1131211330
resolution: "concat-map@npm:0.0.1"
@@ -17540,6 +17558,13 @@ __metadata:
1754017558
languageName: node
1754117559
linkType: hard
1754217560

17561+
"is-blob@npm:^2.1.0":
17562+
version: 2.1.0
17563+
resolution: "is-blob@npm:2.1.0"
17564+
checksum: ce24917bf50a52736e37702a14bc729a0e1eab6bf61ac0b8e6ee86caf33d73eba297131736f8e54615732d08168859493ba7ced4fc840bb5b7c2ae21a5de6861
17565+
languageName: node
17566+
linkType: hard
17567+
1754317568
"is-boolean-object@npm:^1.1.0":
1754417569
version: 1.1.2
1754517570
resolution: "is-boolean-object@npm:1.1.2"

0 commit comments

Comments
 (0)