Web: Files: Added creation of thumbnail on open Info Panel + hide loading Info Panel api share on Personal

This commit is contained in:
Alexey Safronov 2022-04-28 22:05:43 +03:00
parent f1574c1c99
commit 19e235d265
4 changed files with 90 additions and 43 deletions

View File

@ -343,3 +343,7 @@ export function getFolderOptions(folderId, filter) {
return options;
}
export function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}

View File

@ -1,5 +1,6 @@
import { FileType } from "@appserver/common/constants";
import { LANGUAGE } from "@appserver/common/constants";
import { sleep } from "@appserver/common/utils";
import Link from "@appserver/components/link";
import Text from "@appserver/components/text";
import Tooltip from "@appserver/components/tooltip";
@ -31,6 +32,8 @@ const SingleItem = (props) => {
dontShowLocation,
dontShowAccess,
personal,
createThumbnail,
getFileInfo,
} = props;
let updateSubscription = true;
@ -198,46 +201,70 @@ const SingleItem = (props) => {
const loadAsyncData = async (displayedItem, selectedItem) => {
if (!updateSubscription) return;
const updateLoadedItemProperties = async (displayedItem, selectedItem) => {
const parentFolderId = selectedItem.isFolder
? selectedItem.parentId
: selectedItem.folderId;
if (
!selectedItem.thumbnailUrl &&
!selectedItem.isFolder &&
selectedItem.thumbnailStatus === 0 &&
(selectedItem.fileType === FileType.Image ||
selectedItem.fileType === FileType.Spreadsheet ||
selectedItem.fileType === FileType.Presentation ||
selectedItem.fileType === FileType.Document)
) {
await createThumbnail(selectedItem.id);
const noLocationProperties = [...displayedItem.properties].filter(
(dip) => dip.id !== "Location"
);
await sleep(5000);
let result;
await getFolderInfo(parentFolderId)
.catch(() => {
result = noLocationProperties;
})
.then((data) => {
if (!data) {
result = noLocationProperties;
return;
}
result = [...displayedItem.properties].map((dip) =>
dip.id === "Location"
? {
id: "Location",
title: t("Location"),
content: (
<Link
className="property-content"
href={`/products/files/filter?folder=${parentFolderId}`}
isHovered={true}
>
{data.title}
</Link>
),
}
: dip
);
const newFileInfo = await getFileInfo(selectedItem.id);
if (newFileInfo.thumbnailUrl) {
displayedItem.thumbnailUrl = newFileInfo.thumbnailUrl;
setItem({
...displayedItem,
});
}
}
return result;
};
// const updateLoadedItemProperties = async (displayedItem, selectedItem) => {
// const parentFolderId = selectedItem.isFolder
// ? selectedItem.parentId
// : selectedItem.folderId;
// const noLocationProperties = [...displayedItem.properties].filter(
// (dip) => dip.id !== "Location"
// );
// let result;
// await getFolderInfo(parentFolderId)
// .catch(() => {
// result = noLocationProperties;
// })
// .then((data) => {
// if (!data) {
// result = noLocationProperties;
// return;
// }
// result = [...displayedItem.properties].map((dip) =>
// dip.id === "Location"
// ? {
// id: "Location",
// title: t("Location"),
// content: (
// <Link
// className="property-content"
// href={`/products/files/filter?folder=${parentFolderId}`}
// isHovered={true}
// >
// {data.title}
// </Link>
// ),
// }
// : dip
// );
// });
// return result;
// };
const updateLoadedItemAccess = async (selectedItem) => {
const accesses = await getShareUsers(
@ -283,12 +310,14 @@ const SingleItem = (props) => {
return;
}
const access = await updateLoadedItemAccess(selectedItem);
setItem({
...displayedItem,
// properties: properties,
access: access,
});
if (!personal) {
const access = await updateLoadedItemAccess(selectedItem);
setItem({
...displayedItem,
// properties: properties,
access: access,
});
}
};
const openSharingPanel = () => {
@ -310,7 +339,7 @@ const SingleItem = (props) => {
<Text className="text">{item.title}</Text>
</StyledTitle>
{selectedItem.thumbnailUrl ? (
{item.thumbnailUrl ? (
<StyledThumbnail>
<img src={item.thumbnailUrl} alt="" />
</StyledThumbnail>

View File

@ -25,6 +25,8 @@ const InfoPanelBodyContent = ({
isGallery,
gallerySelected,
personal,
createThumbnail,
getFileInfo,
}) => {
const singleItem = (item) => {
const dontShowLocation = item.isFolder && item.parentId === 0;
@ -49,6 +51,8 @@ const InfoPanelBodyContent = ({
dontShowSize={dontShowSize}
dontShowAccess={dontShowAccess}
personal={personal}
createThumbnail={createThumbnail}
getFileInfo={getFileInfo}
/>
);
};
@ -99,6 +103,8 @@ export default inject(
getFolderInfo,
getShareUsers,
gallerySelected,
createThumbnail,
getFileInfo,
} = filesStore;
const { getIcon, getFolderIcon } = settingsStore;
const { onSelectItem } = filesActionsStore;
@ -130,6 +136,8 @@ export default inject(
isFavoritesFolder,
gallerySelected,
personal,
createThumbnail,
getFileInfo,
};
}
)(

View File

@ -1955,6 +1955,12 @@ class FilesStore {
if (fileIds.length) return api.files.createThumbnails(fileIds);
};
createThumbnail = async (fileId) => {
if (!fileId) return;
await api.files.createThumbnails([fileId]);
};
setIsUpdatingRowItem = (updating) => {
this.isUpdatingRowItem = updating;
};