Client:EmptyView Added empty screen for collaboration room

This commit is contained in:
Akmal Isomadinov 2024-08-05 18:00:19 +05:00
parent 88b4c17bb5
commit 6bd9b469e0
4 changed files with 93 additions and 54 deletions

View File

@ -1,4 +1,5 @@
{ {
"CollaborationRoomEmptyTitle": "Welcome to the Collaboration room",
"CollaboratorEmptyTitle": "The room is empty.", "CollaboratorEmptyTitle": "The room is empty.",
"CreateDocument": "Create a new document", "CreateDocument": "Create a new document",
"CreateDocumentDescription": "Take advantage of vast word processing functionality.", "CreateDocumentDescription": "Take advantage of vast word processing functionality.",
@ -16,6 +17,7 @@
"FormFolderDefaultUserDescription": "The forms uploaded by the administrators will be appeared here.", "FormFolderDefaultUserDescription": "The forms uploaded by the administrators will be appeared here.",
"FormFolderDefaultUserTitle": "No forms in this folder yet", "FormFolderDefaultUserTitle": "No forms in this folder yet",
"FormRoomEmptyTitle": "Welcome to the Form filling room", "FormRoomEmptyTitle": "Welcome to the Form filling room",
"InviteUsersCollaborationOptionDescription": "Add members for joint editing in the room.",
"InviteUsersOptionDescription": "Add portal members for joint editing in the room", "InviteUsersOptionDescription": "Add portal members for joint editing in the room",
"InviteUsersOptionTitle": "Inviting Attendees", "InviteUsersOptionTitle": "Inviting Attendees",
"PublicRoomEmptyTitle": "Welcome to the Public room", "PublicRoomEmptyTitle": "Welcome to the Public room",

View File

@ -28,11 +28,8 @@ import { useCallback, useMemo } from "react";
import { inject, observer } from "mobx-react"; import { inject, observer } from "mobx-react";
import { withTranslation } from "react-i18next"; import { withTranslation } from "react-i18next";
import { FolderType, RoomsType } from "@docspace/shared/enums";
import EmptyContainer from "./EmptyContainer"; import EmptyContainer from "./EmptyContainer";
import CommonButtons from "./sub-components/CommonButtons"; import CommonButtons from "./sub-components/CommonButtons";
import EmptyViewContainer from "./sub-components/EmptyViewContainer/EmptyViewContainer";
import { import {
getDescriptionText, getDescriptionText,
getEmptyScreenType, getEmptyScreenType,
@ -79,17 +76,6 @@ const EmptyFolderContainer = ({
[t, canCreateFiles, type], [t, canCreateFiles, type],
); );
return (
<EmptyViewContainer
type={roomType}
folderType={type}
isFolder={!isRoom}
folderId={folderId}
parentRoomType={parentRoomType}
isArchiveFolderRoot={isArchiveFolderRoot}
/>
);
return ( return (
<EmptyContainer <EmptyContainer
headerText={headerText} headerText={headerText}

View File

@ -31,9 +31,10 @@ import { Events, FileExtensions } from "@docspace/shared/enums";
import RootFolderContainer from "./RootFolderContainer"; import RootFolderContainer from "./RootFolderContainer";
import EmptyFilterContainer from "./EmptyFilterContainer"; import EmptyFilterContainer from "./EmptyFilterContainer";
import EmptyFolderContainer from "./EmptyFolderContainer";
import RoomNoAccessContainer from "./RoomNoAccessContainer"; import RoomNoAccessContainer from "./RoomNoAccessContainer";
import EmptyViewContainer from "./sub-components/EmptyViewContainer/EmptyViewContainer";
const linkStyles = { const linkStyles = {
isHovered: true, isHovered: true,
type: "action", type: "action",
@ -56,9 +57,15 @@ const EmptyContainer = ({
isRoot, isRoot,
isPublicRoom, isPublicRoom,
isEmptyPage, isEmptyPage,
roomType,
parentRoomType,
folderId,
isArchiveFolderRoot,
}) => { }) => {
//const location = useLocation(); //const location = useLocation();
const isRoom = !!roomType;
linkStyles.color = theme.filesEmptyContainer.linkColor; linkStyles.color = theme.filesEmptyContainer.linkColor;
const onCreate = (e) => { const onCreate = (e) => {
@ -101,22 +108,26 @@ const EmptyContainer = ({
//isLoading && location?.state ? location.state?.isRoot : parentId === 0; //isLoading && location?.state ? location.state?.isRoot : parentId === 0;
return isFiltered ? ( if (isFiltered) return <EmptyFilterContainer linkStyles={linkStyles} />;
<EmptyFilterContainer linkStyles={linkStyles} />
) : isRootEmptyPage ? ( if (isRootEmptyPage)
<RootFolderContainer return (
onCreate={onCreate} <RootFolderContainer
linkStyles={linkStyles} onCreate={onCreate}
onCreateRoom={onCreateRoom} linkStyles={linkStyles}
sectionWidth={sectionWidth} onCreateRoom={onCreateRoom}
/> sectionWidth={sectionWidth}
) : ( />
<EmptyFolderContainer );
sectionWidth={sectionWidth}
onCreate={onCreate} return (
linkStyles={linkStyles} <EmptyViewContainer
type={type} type={roomType}
isEmptyPage={isEmptyPage} folderType={type}
isFolder={!isRoom}
folderId={folderId}
parentRoomType={parentRoomType}
isArchiveFolderRoot={isArchiveFolderRoot}
/> />
); );
}; };
@ -131,6 +142,7 @@ export default inject(
clientLoadingStore, clientLoadingStore,
currentTariffStatusStore, currentTariffStatusStore,
publicRoomStore, publicRoomStore,
treeFoldersStore,
}) => { }) => {
const { isErrorRoomNotAvailable, isFiltered } = filesStore; const { isErrorRoomNotAvailable, isFiltered } = filesStore;
const { isLoading } = clientLoadingStore; const { isLoading } = clientLoadingStore;
@ -143,6 +155,9 @@ export default inject(
const isRoomNotFoundOrMoved = const isRoomNotFoundOrMoved =
isFiltered === null && isErrorRoomNotAvailable; isFiltered === null && isErrorRoomNotAvailable;
const { roomType, id: folderId, parentRoomType } = selectedFolderStore;
const { isArchiveFolderRoot } = treeFoldersStore;
const isRoot = selectedFolderStore.pathParts?.length === 1; const isRoot = selectedFolderStore.pathParts?.length === 1;
return { return {
@ -157,6 +172,10 @@ export default inject(
type: selectedFolderStore.type, type: selectedFolderStore.type,
isRoot, isRoot,
isPublicRoom, isPublicRoom,
roomType,
parentRoomType,
folderId,
isArchiveFolderRoot,
}; };
}, },
)(observer(EmptyContainer)); )(observer(EmptyContainer));

View File

@ -12,26 +12,31 @@ import {
import EmptyFormRoomDarkIcon from "PUBLIC_DIR/images/emptyview/empty.form.room.dark.svg"; import EmptyFormRoomDarkIcon from "PUBLIC_DIR/images/emptyview/empty.form.room.dark.svg";
import EmptyFormRoomLightIcon from "PUBLIC_DIR/images/emptyview/empty.form.room.light.svg"; import EmptyFormRoomLightIcon from "PUBLIC_DIR/images/emptyview/empty.form.room.light.svg";
import EmptyFormRoomCollaboratorDarkIcon from "PUBLIC_DIR/images/emptyview/empty.form.room.collaborator.dark.svg";
import EmptyFormRoomCollaboratorLightIcon from "PUBLIC_DIR/images/emptyview/empty.form.room.collaborator.light.svg";
import EmptyFormRoomFillingDarkIcon from "PUBLIC_DIR/images/emptyview/empty.form.room.filling.dark.svg";
import EmptyFormRoomFillingLightIcon from "PUBLIC_DIR/images/emptyview/empty.form.room.filling.light.svg";
import EmptyCustomRoomDarkIcon from "PUBLIC_DIR/images/emptyview/empty.custom.room.dark.svg"; import EmptyCustomRoomDarkIcon from "PUBLIC_DIR/images/emptyview/empty.custom.room.dark.svg";
import EmptyCustomRoomLightIcon from "PUBLIC_DIR/images/emptyview/empty.custom.room.light.svg"; import EmptyCustomRoomLightIcon from "PUBLIC_DIR/images/emptyview/empty.custom.room.light.svg";
import EmptyCustomRoomCollaboratorDarkIcon from "PUBLIC_DIR/images/emptyview/empty.custom.room.collaborator.dark.svg";
import EmptyCustomRoomCollaboratorLightIcon from "PUBLIC_DIR/images/emptyview/empty.custom.room.collaborator.light.svg";
import EmptyPublicRoomDarkIcon from "PUBLIC_DIR/images/emptyview/empty.public.room.dark.svg"; import EmptyPublicRoomDarkIcon from "PUBLIC_DIR/images/emptyview/empty.public.room.dark.svg";
import EmptyPublicRoomLightIcon from "PUBLIC_DIR/images/emptyview/empty.public.room.light.svg"; import EmptyPublicRoomLightIcon from "PUBLIC_DIR/images/emptyview/empty.public.room.light.svg";
import EmptyPublicRoomCollaboratorDarkIcon from "PUBLIC_DIR/images/emptyview/empty.public.room.collaborator.dark.svg"; import EmptyPublicRoomCollaboratorDarkIcon from "PUBLIC_DIR/images/emptyview/empty.public.room.collaborator.dark.svg";
import EmptyPublicRoomCollaboratorLightIcon from "PUBLIC_DIR/images/emptyview/empty.public.room.collaborator.light.svg"; import EmptyPublicRoomCollaboratorLightIcon from "PUBLIC_DIR/images/emptyview/empty.public.room.collaborator.light.svg";
import EmptyFormRoomCollaboratorDarkIcon from "PUBLIC_DIR/images/emptyview/empty.form.room.collaborator.dark.svg"; import EmptyCollaborationRoomDarkIcon from "PUBLIC_DIR/images/emptyview/empty.collaboration.room.dark.svg";
import EmptyFormRoomCollaboratorLightIcon from "PUBLIC_DIR/images/emptyview/empty.form.room.collaborator.light.svg"; import EmptyCollaborationRoomLightIcon from "PUBLIC_DIR/images/emptyview/empty.collaboration.room.light.svg";
import EmptyCollaborationRoomCollaboratorDarkIcon from "PUBLIC_DIR/images/emptyview/empty.collaboration.room.collaborator.dark.svg";
import EmptyCollaborationRoomCollaboratorLightIcon from "PUBLIC_DIR/images/emptyview/empty.collaboration.room.collaborator.light.svg";
import EmptyCustomRoomCollaboratorDarkIcon from "PUBLIC_DIR/images/emptyview/empty.custom.room.collaborator.dark.svg"; // import EmptyCustomRoomOtherDarkIcon from "PUBLIC_DIR/images/emptyview/empty.custom.room.other.dark.svg";
import EmptyCustomRoomCollaboratorLightIcon from "PUBLIC_DIR/images/emptyview/empty.custom.room.collaborator.light.svg"; // import EmptyCustomRoomOtherLightIcon from "PUBLIC_DIR/images/emptyview/empty.custom.room.other.light.svg";
import EmptyCustomRoomOtherDarkIcon from "PUBLIC_DIR/images/emptyview/empty.custom.room.other.dark.svg";
import EmptyCustomRoomOtherLightIcon from "PUBLIC_DIR/images/emptyview/empty.custom.room.other.light.svg";
import EmptyFormRoomFillingDarkIcon from "PUBLIC_DIR/images/emptyview/empty.form.room.filling.dark.svg";
import EmptyFormRoomFillingLightIcon from "PUBLIC_DIR/images/emptyview/empty.form.room.filling.light.svg";
import CreateNewFormIcon from "PUBLIC_DIR/images/emptyview/create.new.form.svg"; import CreateNewFormIcon from "PUBLIC_DIR/images/emptyview/create.new.form.svg";
import CreateNewSpreadsheetIcon from "PUBLIC_DIR/images/emptyview/create.new.spreadsheet.svg"; import CreateNewSpreadsheetIcon from "PUBLIC_DIR/images/emptyview/create.new.spreadsheet.svg";
@ -90,8 +95,6 @@ export const getDescription = (
parentRoomType: Nullable<FolderType>, parentRoomType: Nullable<FolderType>,
isArchiveFolderRoot: boolean, isArchiveFolderRoot: boolean,
): string => { ): string => {
const isCollaborator = access === ShareAccessRights.Collaborator;
const isNotAdmin = isUser(access); const isNotAdmin = isUser(access);
if (isFolder) { if (isFolder) {
@ -189,7 +192,7 @@ export const getTitle = (
case RoomsType.FormRoom: case RoomsType.FormRoom:
return t("EmptyView:FormRoomEmptyTitle"); return t("EmptyView:FormRoomEmptyTitle");
case RoomsType.EditingRoom: case RoomsType.EditingRoom:
return ""; return t("EmptyView:CollaborationRoomEmptyTitle");
case RoomsType.PublicRoom: case RoomsType.PublicRoom:
return t("EmptyView:PublicRoomEmptyTitle"); return t("EmptyView:PublicRoomEmptyTitle");
case RoomsType.CustomRoom: case RoomsType.CustomRoom:
@ -242,8 +245,25 @@ export const getRoomIcon = (
.with([RoomsType.FormRoom, P._], () => .with([RoomsType.FormRoom, P._], () =>
isBaseTheme ? <EmptyFormRoomLightIcon /> : <EmptyFormRoomDarkIcon />, isBaseTheme ? <EmptyFormRoomLightIcon /> : <EmptyFormRoomDarkIcon />,
) )
.with(
.with([RoomsType.EditingRoom, P._], () => <div />) [
RoomsType.EditingRoom,
P.union(ShareAccessRights.None, ShareAccessRights.RoomManager),
],
() =>
isBaseTheme ? (
<EmptyCollaborationRoomLightIcon />
) : (
<EmptyCollaborationRoomDarkIcon />
),
)
.with([RoomsType.EditingRoom, ShareAccessRights.Collaborator], () =>
isBaseTheme ? (
<EmptyCollaborationRoomCollaboratorLightIcon />
) : (
<EmptyCollaborationRoomCollaboratorDarkIcon />
),
)
.with( .with(
[ [
RoomsType.PublicRoom, RoomsType.PublicRoom,
@ -282,12 +302,8 @@ export const getRoomIcon = (
<EmptyCustomRoomCollaboratorDarkIcon /> <EmptyCustomRoomCollaboratorDarkIcon />
), ),
) )
.with([RoomsType.CustomRoom, P._], () => .with([P._, P.when(isUser)], () =>
isBaseTheme ? ( isBaseTheme ? <DefaultFolderUserLight /> : <DefaultFolderUserDark />,
<EmptyCustomRoomOtherLightIcon />
) : (
<EmptyCustomRoomOtherDarkIcon />
),
) )
// eslint-disable-next-line react/jsx-no-useless-fragment // eslint-disable-next-line react/jsx-no-useless-fragment
.otherwise(() => <></>) .otherwise(() => <></>)
@ -426,6 +442,11 @@ export const getOptions = (
t("EmptyView:InviteUsersOptionDescription"), t("EmptyView:InviteUsersOptionDescription"),
); );
const inviteUserEditingRoom = createInviteOption(
t("EmptyView:InviteUsersOptionTitle"),
t("EmptyView:InviteUsersCollaborationOptionDescription"),
);
const shareFillingRoom = { const shareFillingRoom = {
title: t("EmptyView:ShareOptionTitle"), title: t("EmptyView:ShareOptionTitle"),
description: t("EmptyView:ShareOptionDescription"), description: t("EmptyView:ShareOptionDescription"),
@ -548,7 +569,17 @@ export const getOptions = (
return [uploadPDFFromDocSpace, uploadFromDevicePDF, shareFillingRoom]; return [uploadPDFFromDocSpace, uploadFromDevicePDF, shareFillingRoom];
case RoomsType.EditingRoom: case RoomsType.EditingRoom:
return []; if (isNotAdmin) return [];
if (isCollaborator)
return [createFile, uploadAllFromDocSpace, uploadFromDeviceAnyFile];
return [
createFile,
inviteUserEditingRoom,
uploadAllFromDocSpace,
uploadFromDeviceAnyFile,
];
case RoomsType.PublicRoom: case RoomsType.PublicRoom:
if (isNotAdmin) return []; if (isNotAdmin) return [];
@ -564,7 +595,8 @@ export const getOptions = (
case RoomsType.CustomRoom: case RoomsType.CustomRoom:
if (isNotAdmin) return []; if (isNotAdmin) return [];
if (isCollaborator) return [createFile, uploadFromDeviceAnyFile]; if (isCollaborator)
return [createFile, uploadAllFromDocSpace, uploadFromDeviceAnyFile];
return [ return [
createFile, createFile,