added srcToFile conversion for IconEditor and fixed after edit folder update in EditRoom

This commit is contained in:
mushka 2022-08-25 05:02:23 +03:00
parent fd49bd9cb7
commit d1ee9b7264
2 changed files with 57 additions and 53 deletions

View File

@ -2,6 +2,7 @@ import React, { useState, useEffect } from "react";
import { inject, observer } from "mobx-react";
import { useTranslation } from "react-i18next";
import { EditRoomDialog } from "../dialogs";
import { Encoder } from "@docspace/common/utils/encoder";
const EditRoomEvent = ({
visible,
@ -17,24 +18,24 @@ const EditRoomEvent = ({
getThirdPartyIcon,
calculateRoomLogoParams,
uploadRoomLogo,
setFolder,
removeLogoFromRoom,
addLogoToRoom,
currrentFolderId,
currentFolderId,
updateCurrentFolder,
}) => {
const { t } = useTranslation(["CreateEditRoomDialog", "Common", "Files"]);
const [fetchedTags, setFetchedTags] = useState([]);
const [fetchedImage, setFetchedImage] = useState(null);
const [isLoading, setIsLoading] = useState(false);
const roomId = item.id;
const startTags = Object.values(item.tags);
const startObjTags = startTags.map((tag, i) => ({ id: i, name: tag }));
// const startuploadedFile =
const fetchedRoomParams = {
title: item.title,
type: item.roomType,
@ -52,12 +53,11 @@ const EditRoomEvent = ({
tmpFile: "",
x: 0.5,
y: 0.5,
width: 216,
height: 216,
zoom: 1,
},
};
// console.log(item);
console.log(item);
const onSave = async (roomParams) => {
console.log(roomParams);
@ -76,54 +76,58 @@ const EditRoomEvent = ({
try {
setIsLoading(true);
await editRoom(roomId, editRoomParams);
const room = await editRoom(item.id, editRoomParams);
for (let i = 0; i < newTags.length; i++) await createTag(newTags[i]);
await addTagsToRoom(roomId, tags);
await removeTagsFromRoom(roomId, removedTags);
await addTagsToRoom(room.id, tags);
await removeTagsFromRoom(room.id, removedTags);
console.log(roomParams.icon.uploadedFile);
if (!roomParams.icon.uploadedFile) await removeLogoFromRoom(roomId);
if (!!item.logo.original && !roomParams.icon.uploadedFile)
await removeLogoFromRoom(room.id);
if (roomParams.icon.uploadedFile)
if (roomParams.icon.uploadedFile) {
await setFolder({
...room,
logo: { big: item.logo.small },
});
await uploadRoomLogo(uploadLogoData).then((response) => {
const url = URL.createObjectURL(roomParams.icon.uploadedFile);
const img = new Image();
img.onload = async () => {
const tmpFile = response.data;
const { x, y, zoom } = roomParams.icon;
const imgWidth = Math.min(1280, img.width);
const imgHeight = Math.round(img.height / (img.width / imgWidth));
const dimensions = Math.round(imgHeight / zoom);
const croppedX = Math.round(x * imgWidth - dimensions / 2);
const croppedY = Math.round(y * imgHeight - dimensions / 2);
await addLogoToRoom(roomId, {
tmpFile,
x: croppedX,
y: croppedY,
width: dimensions,
height: dimensions,
await addLogoToRoom(room.id, {
tmpFile: response.data,
...calculateRoomLogoParams(img, x, y, zoom),
});
await updateCurrentFolder(null, currrentFolderId);
URL.revokeObjectURL(img.src);
};
img.src = url;
});
await updateCurrentFolder(null, currrentFolderId);
}
} catch (err) {
console.log(err);
} finally {
await updateCurrentFolder(null, currentFolderId);
setIsLoading(false);
onClose();
}
};
useEffect(async () => {
const imgExst = item.logo.original.slice(".")[1];
if (item.logo.original) {
const file = await fetch(item.logo.original)
.then((res) => res.arrayBuffer())
.then(
(buf) =>
new File([buf], "fetchedFile", {
type: `image/${imgExst}`,
})
);
setFetchedImage(file);
}
}, []);
useEffect(async () => {
const tags = await fetchTags();
setFetchedTags(tags);
@ -137,6 +141,7 @@ const EditRoomEvent = ({
fetchedRoomParams={fetchedRoomParams}
onSave={onSave}
fetchedTags={fetchedTags}
fetchedImage={fetchedImage}
isLoading={isLoading}
/>
);
@ -154,13 +159,15 @@ export default inject(
editRoom,
addTagsToRoom,
removeTagsFromRoom,
calculateRoomLogoParams,
uploadRoomLogo,
setFolder,
addLogoToRoom,
removeLogoFromRoom,
} = filesStore;
const { createTag, fetchTags } = tagsStore;
const { id: currrentFolderId } = selectedFolderStore;
const { id: currentFolderId } = selectedFolderStore;
const { updateCurrentFolder } = filesActionsStore;
const { getThirdPartyIcon } = settingsStore.thirdPartyStore;
@ -174,11 +181,13 @@ export default inject(
getThirdPartyIcon,
calculateRoomLogoParams,
setFolder,
uploadRoomLogo,
removeLogoFromRoom,
addLogoToRoom,
currrentFolderId,
currentFolderId,
updateCurrentFolder,
};
}

View File

@ -1,4 +1,4 @@
import React, { useState } from "react";
import React, { useState, useEffect } from "react";
import TagHandler from "./handlers/tagHandler";
import SetRoomParams from "./sub-components/SetRoomParams";
@ -15,11 +15,14 @@ const EditRoomDialog = ({
isLoading,
fetchedRoomParams,
fetchedTags,
fetchedImage,
folderFormValidation,
}) => {
const [isScrollLocked, setIsScrollLocked] = useState(false);
const [roomParams, setRoomParams] = useState({ ...fetchedRoomParams });
const [roomParams, setRoomParams] = useState({
...fetchedRoomParams,
});
const setRoomTags = (newTags) =>
setRoomParams({ ...roomParams, tags: newTags });
@ -34,21 +37,13 @@ const EditRoomDialog = ({
const onEditRoom = () => onSave(roomParams);
// useEffect(async () => {
// console.log(fetchedRoomParams.uploadedFileSrc);
// if (fetchedRoomParams.uploadedFileSrc)
// await fetch(
// "http://192.168.0.100:8092/storage/room_logos/root/sbox9DOCSPACE%20CUSTOM%20ROOM%209_orig_887-339.jpeg"
// ).then((res) => {
// const buf = res.arrayBuffer();
// const file = new File([buf], "fetchedImage", { type: "image/png" });
// console.log(file);
// setRoomParams({
// ...roomParams,
// icon: { ...roomParams.icon, uploadedFile: file },
// });
// });
// }, []);
useEffect(async () => {
if (fetchedImage)
setRoomParams({
...roomParams,
icon: { ...roomParams.icon, uploadedFile: fetchedImage },
});
}, [fetchedImage]);
return (
<ModalDialog