diff --git a/frontend/package.json b/frontend/package.json
index 6805e412..bf3c6702 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -35,6 +35,7 @@
"react": "^16.14.0",
"react-alert": "^5.5.0",
"react-alert-template-basic": "^1.0.0",
+ "react-avatar-editor": "^11.1.0",
"react-beforeunload": "^2.2.1",
"react-chartjs-2": "^2.11.1",
"react-cookie": "^4.0.1",
diff --git a/frontend/src/views/AppCreator.jsx b/frontend/src/views/AppCreator.jsx
index 6d62055e..0b251832 100644
--- a/frontend/src/views/AppCreator.jsx
+++ b/frontend/src/views/AppCreator.jsx
@@ -12,6 +12,13 @@ import ChipInput from 'material-ui-chip-input'
import { useAlert } from "react-alert";
import words from "shellwords"
+import AvatarEditor from 'react-avatar-editor';
+import AddAPhotoIcon from '@material-ui/icons/AddAPhoto';
+import AddAPhotoOutlinedIcon from '@material-ui/icons/AddAPhotoOutlined';
+import ZoomInOutlinedIcon from '@material-ui/icons/ZoomInOutlined';
+import ZoomOutOutlinedIcon from '@material-ui/icons/ZoomOutOutlined';
+import LoopIcon from '@material-ui/icons/Loop';
+
const surfaceColor = "#27292D"
const inputColor = "#383B40"
@@ -45,6 +52,18 @@ const boxStyle = {
backgroundColor: surfaceColor,
}
+const dividerStyle = {
+ marginBottom: "10px",
+ marginTop: "10px",
+ height: "1px",
+ width: "100%",
+ backgroundColor: "grey",
+}
+
+const appIconStyle = {
+ marginLeft: "5px",
+}
+
const useStyles = makeStyles({
notchedOutline: {
borderColor: "#f85a3e !important"
@@ -2162,8 +2181,114 @@ const AppCreator = (props) => {
// :
//
- const imageData = file.length > 0 ? file : fileBase64
+ const [imageUploadError, setImageUploadError] = useState("");
+ const [openImageModal, setOpenImageModal] = useState("");
+ const [scale, setScale] = useState(1);
+ const [rotate, setRotatation] = useState(0);
+ const [disableImageUpload, setDisableImageUpload] = useState(true);
+
+ let imageData = fileBase64;
+ let croppedData = file.length > 0 ? file : fileBase64
+
const imageInfo =
+
+ const zoomIn = () => {
+ setScale(scale+0.1);
+ }
+ const zoomOut = () => {
+ setScale(scale-0.1);
+ }
+ const rotatation = () => {
+ setRotatation(rotate+10);
+ }
+
+ const onPositionChange = () => {
+ setDisableImageUpload(false);
+ }
+
+ const onCancelSaveAppIcon = () => {
+ setFile("");
+ setOpenImageModal(false)
+ setImageUploadError("")
+ }
+
+ let editor;
+ const setEditorRef = (imgEditor) => { editor = imgEditor; }
+
+ const onSaveAppIcon = () => {
+ if(editor){
+ setFile("");
+ const canvas = editor.getImageScaledToCanvas();
+ setFileBase64(canvas.toDataURL());
+ setOpenImageModal(false)
+ setDisableImageUpload(true);
+ }
+ }
+
+ const errorText = imageUploadError.length > 0 ?