Web: Files: applied contextOptionsStore in row

This commit is contained in:
Artem Tarasov 2021-03-30 01:11:04 +03:00
parent 72e1e7a08f
commit a50af59dd1
5 changed files with 52 additions and 400 deletions

View File

@ -8,6 +8,7 @@ import { isMobile } from "react-device-detect";
const FilesRowContainer = (props) => { const FilesRowContainer = (props) => {
const { isLoaded, isLoading, getFilesContextOptions } = props; const { isLoaded, isLoading, getFilesContextOptions } = props;
console.log("render container");
return !isLoaded || (isMobile && isLoading) ? ( return !isLoaded || (isMobile && isLoading) ? (
<Loaders.Rows /> <Loaders.Rows />
) : ( ) : (

View File

@ -1,4 +1,4 @@
import React, { useCallback } from "react"; import React from "react";
import { ReactSVG } from "react-svg"; import { ReactSVG } from "react-svg";
import styled from "styled-components"; import styled from "styled-components";
import { inject, observer } from "mobx-react"; import { inject, observer } from "mobx-react";
@ -9,11 +9,6 @@ import DragAndDrop from "@appserver/components/drag-and-drop";
import Row from "@appserver/components/row"; import Row from "@appserver/components/row";
import FilesRowContent from "./FilesRowContent"; import FilesRowContent from "./FilesRowContent";
import { withRouter } from "react-router-dom"; import { withRouter } from "react-router-dom";
import toastr from "studio/toastr";
import { FileAction, AppServerConfig } from "@appserver/common/constants";
import copy from "copy-to-clipboard";
import config from "../../../../../../../package.json";
import { combineUrl } from "@appserver/common/utils";
const StyledSimpleFilesRow = styled(Row)` const StyledSimpleFilesRow = styled(Row)`
margin-top: -2px; margin-top: -2px;
@ -77,51 +72,26 @@ const SimpleFilesRow = (props) => {
isFolder, isFolder,
draggable, draggable,
isRootFolder, isRootFolder,
homepage,
isTabletView,
actionId, actionId,
selectedFolderId, selectedFolderId,
setSharingPanelVisible, setSharingPanelVisible,
setChangeOwnerPanelVisible, setChangeOwnerPanelVisible,
setDeleteThirdPartyDialogVisible,
setRemoveItem,
setMoveToPanelVisible, setMoveToPanelVisible,
setCopyPanelVisible, setCopyPanelVisible,
openDocEditor,
setIsVerHistoryPanel,
fetchFileVersions,
setAction,
deleteFileAction,
deleteFolderAction,
lockFileAction,
duplicateAction,
finalizeVersionAction,
setFavoriteAction,
openLocationAction,
selectRowAction, selectRowAction,
setThirdpartyInfo,
setMediaViewerData,
setDragging, setDragging,
startUpload, startUpload,
onSelectItem, onSelectItem,
history,
} = props; } = props;
console.log("render row");
const { const {
id, id,
title,
fileExst, fileExst,
shared, shared,
access, access,
contextOptions, contextOptions,
icon, icon,
providerKey, providerKey,
folderId,
viewUrl,
webUrl,
canOpenPlayer,
locked,
} = item; } = item;
let value = fileExst ? `file_${id}` : `folder_${id}`; let value = fileExst ? `file_${id}` : `folder_${id}`;
@ -181,286 +151,10 @@ const SimpleFilesRow = (props) => {
); );
}; };
const onOpenLocation = () => {
const locationId = isFolder ? id : folderId;
openLocationAction(locationId, isFolder);
};
const showVersionHistory = () => {
if (!isTabletView) {
fetchFileVersions(id + "");
setIsVerHistoryPanel(true);
} else {
history.push(
combineUrl(AppServerConfig.proxyURL, homepage, `/${id}/history`)
);
}
};
const finalizeVersion = () =>
finalizeVersionAction(id).catch((err) => toastr.error(err));
const onClickFavorite = (e) => {
const { action } = e.currentTarget.dataset;
setFavoriteAction(action, id)
.then(() =>
action === "mark"
? toastr.success(t("MarkedAsFavorite"))
: toastr.success(t("RemovedFromFavorites"))
)
.catch((err) => toastr.error(err));
};
const lockFile = () =>
lockFileAction(id, !locked).catch((err) => toastr.error(err));
const onClickLinkForPortal = () => {
const isFile = !!fileExst;
copy(
isFile
? canOpenPlayer
? `${window.location.href}&preview=${id}`
: webUrl
: `${window.location.origin + homepage}/filter?folder=${id}`
);
toastr.success(t("LinkCopySuccess"));
};
const onClickLinkEdit = () => openDocEditor(id, providerKey);
const onClickDownload = () => window.open(viewUrl, "_blank");
const onDuplicate = () =>
duplicateAction(item, t("CopyOperation")).catch((err) => toastr.error(err));
const onClickRename = () => {
setAction({
type: FileAction.Rename,
extension: fileExst,
id,
});
};
const onChangeThirdPartyInfo = () => setThirdpartyInfo();
const onMediaFileClick = (fileId) => {
const itemId = typeof fileId !== "object" ? fileId : id;
setMediaViewerData({ visible: true, id: itemId });
};
const onClickDelete = () => {
if (isThirdPartyFolder) {
const splitItem = id.split("-");
setRemoveItem({ id: splitItem[splitItem.length - 1], title });
setDeleteThirdPartyDialogVisible(true);
return;
}
const translations = {
deleteOperation: t("DeleteOperation"),
};
item.fileExst
? deleteFileAction(item.id, item.folderId, translations)
.then(() => toastr.success(t("FileRemoved")))
.catch((err) => toastr.error(err))
: deleteFolderAction(item.id, item.parentId, translations)
.then(() => toastr.success(t("FolderRemoved")))
.catch((err) => toastr.error(err));
};
const rowContextClick = () => { const rowContextClick = () => {
onSelectItem(item); onSelectItem(item);
}; };
const getFilesContextOptions = useCallback(() => {
const isSharable = item.access !== 1 && item.access !== 0;
return contextOptions.map((option) => {
switch (option) {
case "open":
return {
key: option,
label: t("Open"),
icon: "images/catalog.folder.react.svg",
onClick: onOpenLocation,
disabled: false,
};
case "show-version-history":
return {
key: option,
label: t("ShowVersionHistory"),
icon: "images/history.react.svg",
onClick: showVersionHistory,
disabled: false,
};
case "finalize-version":
return {
key: option,
label: t("FinalizeVersion"),
icon: "images/history-finalized.react.svg",
onClick: finalizeVersion,
disabled: false,
};
case "separator0":
case "separator1":
case "separator2":
case "separator3":
return { key: option, isSeparator: true };
case "open-location":
return {
key: option,
label: t("OpenLocation"),
icon: "images/download-as.react.svg",
onClick: onOpenLocation,
disabled: false,
};
case "mark-as-favorite":
return {
key: option,
label: t("MarkAsFavorite"),
icon: "images/favorites.react.svg",
onClick: onClickFavorite,
disabled: false,
"data-action": "mark",
};
case "block-unblock-version":
return {
key: option,
label: t("UnblockVersion"),
icon: "images/lock.react.svg",
onClick: lockFile,
disabled: false,
};
case "sharing-settings":
return {
key: option,
label: t("SharingSettings"),
icon: "images/catalog.shared.react.svg",
onClick: onClickShare,
disabled: isSharable,
};
case "send-by-email":
return {
key: option,
label: t("SendByEmail"),
icon: "/static/images/mail.react.svg",
disabled: true,
};
case "owner-change":
return {
key: option,
label: t("ChangeOwner"),
icon: "images/catalog.user.react.svg",
onClick: onOwnerChange,
disabled: false,
};
case "link-for-portal-users":
return {
key: option,
label: t("LinkForPortalUsers"),
icon: "/static/images/invitation.link.react.svg",
onClick: onClickLinkForPortal,
disabled: false,
};
case "edit":
return {
key: option,
label: t("Edit"),
icon: "images/access.edit.react.svg",
onClick: onClickLinkEdit,
disabled: false,
};
case "preview":
return {
key: option,
label: t("Preview"),
icon: "EyeIcon",
onClick: onClickLinkEdit,
disabled: true,
};
case "view":
return {
key: option,
label: t("View"),
icon: "/static/images/eye.react.svg",
onClick: onMediaFileClick,
disabled: false,
};
case "download":
return {
key: option,
label: t("Download"),
icon: "images/download.react.svg",
onClick: onClickDownload,
disabled: false,
};
case "move":
return {
key: option,
label: t("MoveTo"),
icon: "images/move.react.svg",
onClick: onMoveAction,
disabled: false,
};
case "copy":
return {
key: option,
label: t("Copy"),
icon: "/static/images/copy.react.svg",
onClick: onCopyAction,
disabled: false,
};
case "duplicate":
return {
key: option,
label: t("Duplicate"),
icon: "/static/images/copy.react.svg",
onClick: onDuplicate,
disabled: false,
};
case "rename":
return {
key: option,
label: t("Rename"),
icon: "images/rename.react.svg",
onClick: onClickRename,
disabled: false,
};
case "change-thirdparty-info":
return {
key: option,
label: t("ThirdPartyInfo"),
icon: "images/access.edit.react.svg",
onClick: onChangeThirdPartyInfo,
disabled: false,
};
case "delete":
return {
key: option,
label: isThirdPartyFolder ? t("DeleteThirdParty") : t("Delete"),
icon: "/static/images/catalog.trash.react.svg",
onClick: onClickDelete,
disabled: false,
};
case "remove-from-favorites":
return {
key: option,
label: t("RemoveFromFavorites"),
icon: "images/favorites.react.svg",
onClick: onClickFavorite,
disabled: false,
"data-action": "remove",
};
default:
break;
}
return undefined;
});
}, [contextOptions, item]);
const onDropZoneUpload = (files, uploadToFolder) => { const onDropZoneUpload = (files, uploadToFolder) => {
const folderId = uploadToFolder ? uploadToFolder : selectedFolderId; const folderId = uploadToFolder ? uploadToFolder : selectedFolderId;
@ -484,7 +178,7 @@ const SimpleFilesRow = (props) => {
const contextOptionsProps = const contextOptionsProps =
!isEdit && contextOptions && contextOptions.length > 0 !isEdit && contextOptions && contextOptions.length > 0
? { ? {
contextOptions: props.getFilesContextOptions(item, isFolder), contextOptions: props.getContextOptions(item, t),
} }
: {}; : {};
@ -536,14 +230,12 @@ export default inject(
treeFoldersStore, treeFoldersStore,
selectedFolderStore, selectedFolderStore,
dialogsStore, dialogsStore,
versionHistoryStore,
filesActionsStore, filesActionsStore,
mediaViewerDataStore,
uploadDataStore, uploadDataStore,
contextOptionsStore,
}, },
{ item } { item }
) => { ) => {
const { isTabletView } = auth.settingsStore;
const { dragging, setDragging } = initFilesStore; const { dragging, setDragging } = initFilesStore;
const { type, extension, id } = filesStore.fileActionStore; const { type, extension, id } = filesStore.fileActionStore;
const { isRecycleBinFolder, isPrivacyFolder } = treeFoldersStore; const { isRecycleBinFolder, isPrivacyFolder } = treeFoldersStore;
@ -551,17 +243,13 @@ export default inject(
const { const {
setSharingPanelVisible, setSharingPanelVisible,
setChangeOwnerPanelVisible, setChangeOwnerPanelVisible,
setRemoveItem,
setDeleteThirdPartyDialogVisible,
setMoveToPanelVisible, setMoveToPanelVisible,
setCopyPanelVisible, setCopyPanelVisible,
} = dialogsStore; } = dialogsStore;
const { selection, canShare, openDocEditor, fileActionStore } = filesStore; const { selection, canShare, fileActionStore } = filesStore;
const { isRootFolder, id: selectedFolderId } = selectedFolderStore; const { isRootFolder, id: selectedFolderId } = selectedFolderStore;
const { setIsVerHistoryPanel, fetchFileVersions } = versionHistoryStore;
const { setAction } = fileActionStore;
const selectedItem = selection.find( const selectedItem = selection.find(
(x) => x.id === item.id && x.fileExst === item.fileExst (x) => x.id === item.id && x.fileExst === item.fileExst
@ -571,22 +259,12 @@ export default inject(
const draggable = const draggable =
!isRecycleBinFolder && selectedItem && selectedItem.id !== id; !isRecycleBinFolder && selectedItem && selectedItem.id !== id;
const { const { selectRowAction, onSelectItem } = filesActionsStore;
deleteFileAction,
deleteFolderAction,
lockFileAction,
finalizeVersionAction,
duplicateAction,
setFavoriteAction,
openLocationAction,
selectRowAction,
setThirdpartyInfo,
onSelectItem,
} = filesActionsStore;
const { setMediaViewerData } = mediaViewerDataStore;
const { startUpload } = uploadDataStore; const { startUpload } = uploadDataStore;
const { getContextOptions } = contextOptionsStore;
return { return {
dragging, dragging,
actionType: type, actionType: type,
@ -598,34 +276,20 @@ export default inject(
checked: selection.some((el) => el.id === item.id), checked: selection.some((el) => el.id === item.id),
isFolder, isFolder,
draggable, draggable,
isItemsSelected: !!selection.length, isItemsSelected: !!selection.length,
homepage: config.homepage,
isTabletView,
actionId: fileActionStore.id, actionId: fileActionStore.id,
setSharingPanelVisible, setSharingPanelVisible,
setChangeOwnerPanelVisible, setChangeOwnerPanelVisible,
setRemoveItem,
setDeleteThirdPartyDialogVisible,
setMoveToPanelVisible, setMoveToPanelVisible,
setCopyPanelVisible, setCopyPanelVisible,
openDocEditor,
setIsVerHistoryPanel,
fetchFileVersions,
setAction,
deleteFileAction,
deleteFolderAction,
lockFileAction,
finalizeVersionAction,
duplicateAction,
setFavoriteAction,
openLocationAction,
selectRowAction, selectRowAction,
setThirdpartyInfo,
setMediaViewerData,
selectedFolderId, selectedFolderId,
setDragging, setDragging,
startUpload, startUpload,
onSelectItem, onSelectItem,
getContextOptions,
}; };
} }
)(withTranslation("Home")(observer(withRouter(SimpleFilesRow)))); )(withTranslation("Home")(observer(withRouter(SimpleFilesRow))));

View File

@ -10,6 +10,7 @@ import FilesTileContainer from "./FilesTile/FilesTileContainer";
import EmptyContainer from "./EmptyContainer"; import EmptyContainer from "./EmptyContainer";
import { AppServerConfig, FileAction } from "@appserver/common/constants"; import { AppServerConfig, FileAction } from "@appserver/common/constants";
//import copy from "copy-to-clipboard";
import config from "../../../../../../package.json"; import config from "../../../../../../package.json";
import toastr from "studio/toastr"; import toastr from "studio/toastr";
import copy from "copy-to-clipboard"; import copy from "copy-to-clipboard";
@ -390,6 +391,21 @@ class SectionBodyContent extends React.Component {
// this.onCloseThirdPartyMoveDialog(); // this.onCloseThirdPartyMoveDialog();
// }; // };
getItemIcon = (isEdit, icon, fileExst) => {
const { isPrivacyFolder } = this.props;
const svgLoader = () => <div style={{ width: "24px" }}></div>;
return (
<>
<ReactSVG
className={`react-svg-icon${isEdit ? " is-edit" : ""}`}
src={icon}
loading={svgLoader}
/>
{isPrivacyFolder && fileExst && <EncryptedFileIcon isEdit={isEdit} />}
</>
);
};
getFilesContextOptions = (item, isFolder = null) => { getFilesContextOptions = (item, isFolder = null) => {
const { const {
t, t,
@ -416,6 +432,7 @@ class SectionBodyContent extends React.Component {
setDeleteThirdPartyDialogVisible, setDeleteThirdPartyDialogVisible,
deleteFileAction, deleteFileAction,
openLocationAction, openLocationAction,
deleteFolderAction,
} = this.props; } = this.props;
const { const {
@ -432,14 +449,16 @@ class SectionBodyContent extends React.Component {
webUrl, webUrl,
} = item; } = item;
const isSharable = item.access !== 1 && item.access !== 0;
const isThirdPartyFolder = providerKey && isRootFolder;
const onOpenLocation = () => { const onOpenLocation = () => {
const { selection } = this.props;
const { id } = selection[0];
const locationId = isFolder ? id : folderId; const locationId = isFolder ? id : folderId;
openLocationAction(locationId, isFolder); openLocationAction(locationId, isFolder);
}; };
const isSharable = item.access !== 1 && item.access !== 0;
const isThirdPartyFolder = providerKey && isRootFolder;
const showVersionHistory = () => { const showVersionHistory = () => {
if (!isTabletView) { if (!isTabletView) {
fetchFileVersions(id + ""); fetchFileVersions(id + "");
@ -582,7 +601,6 @@ class SectionBodyContent extends React.Component {
disabled: false, disabled: false,
"data-action": "mark", "data-action": "mark",
}; };
//
case "block-unblock-version": case "block-unblock-version":
return { return {
key: option, key: option,
@ -591,7 +609,6 @@ class SectionBodyContent extends React.Component {
onClick: lockFile, onClick: lockFile,
disabled: false, disabled: false,
}; };
//
case "sharing-settings": case "sharing-settings":
return { return {
key: option, key: option,
@ -600,7 +617,6 @@ class SectionBodyContent extends React.Component {
onClick: onClickShare, onClick: onClickShare,
disabled: isSharable, disabled: isSharable,
}; };
//
case "send-by-email": case "send-by-email":
return { return {
key: option, key: option,
@ -608,7 +624,6 @@ class SectionBodyContent extends React.Component {
icon: "/static/images/mail.react.svg", icon: "/static/images/mail.react.svg",
disabled: true, disabled: true,
}; };
//
case "owner-change": case "owner-change":
return { return {
key: option, key: option,
@ -617,7 +632,6 @@ class SectionBodyContent extends React.Component {
onClick: onOwnerChange, onClick: onOwnerChange,
disabled: false, disabled: false,
}; };
//
case "link-for-portal-users": case "link-for-portal-users":
return { return {
key: option, key: option,
@ -626,7 +640,6 @@ class SectionBodyContent extends React.Component {
onClick: onClickLinkForPortal, onClick: onClickLinkForPortal,
disabled: false, disabled: false,
}; };
//
case "edit": case "edit":
return { return {
key: option, key: option,
@ -635,7 +648,6 @@ class SectionBodyContent extends React.Component {
onClick: onClickLinkEdit, onClick: onClickLinkEdit,
disabled: false, disabled: false,
}; };
//
case "preview": case "preview":
return { return {
key: option, key: option,
@ -644,7 +656,6 @@ class SectionBodyContent extends React.Component {
onClick: onClickLinkEdit, onClick: onClickLinkEdit,
disabled: true, disabled: true,
}; };
//
case "view": case "view":
return { return {
key: option, key: option,
@ -653,7 +664,6 @@ class SectionBodyContent extends React.Component {
onClick: onMediaFileClick, onClick: onMediaFileClick,
disabled: false, disabled: false,
}; };
//
case "download": case "download":
return { return {
key: option, key: option,
@ -662,7 +672,6 @@ class SectionBodyContent extends React.Component {
onClick: onClickDownload, onClick: onClickDownload,
disabled: false, disabled: false,
}; };
//
case "move": case "move":
return { return {
key: option, key: option,
@ -671,7 +680,6 @@ class SectionBodyContent extends React.Component {
onClick: onMoveAction, onClick: onMoveAction,
disabled: false, disabled: false,
}; };
//
case "copy": case "copy":
return { return {
key: option, key: option,
@ -680,7 +688,6 @@ class SectionBodyContent extends React.Component {
onClick: onCopyAction, onClick: onCopyAction,
disabled: false, disabled: false,
}; };
//
case "duplicate": case "duplicate":
return { return {
key: option, key: option,
@ -689,7 +696,6 @@ class SectionBodyContent extends React.Component {
onClick: onDuplicate, onClick: onDuplicate,
disabled: false, disabled: false,
}; };
//
case "rename": case "rename":
return { return {
key: option, key: option,
@ -698,7 +704,6 @@ class SectionBodyContent extends React.Component {
onClick: onClickRename, onClick: onClickRename,
disabled: false, disabled: false,
}; };
//
case "change-thirdparty-info": case "change-thirdparty-info":
return { return {
key: option, key: option,
@ -707,7 +712,6 @@ class SectionBodyContent extends React.Component {
onClick: onChangeThirdPartyInfo, onClick: onChangeThirdPartyInfo,
disabled: false, disabled: false,
}; };
//
case "delete": case "delete":
return { return {
key: option, key: option,
@ -716,7 +720,6 @@ class SectionBodyContent extends React.Component {
onClick: onClickDelete, onClick: onClickDelete,
disabled: false, disabled: false,
}; };
//
case "remove-from-favorites": case "remove-from-favorites":
return { return {
key: option, key: option,
@ -734,21 +737,6 @@ class SectionBodyContent extends React.Component {
}); });
}; };
getItemIcon = (isEdit, icon, fileExst) => {
const { isPrivacyFolder } = this.props;
const svgLoader = () => <div style={{ width: "24px" }}></div>;
return (
<>
<ReactSVG
className={`react-svg-icon${isEdit ? " is-edit" : ""}`}
src={icon}
loading={svgLoader}
/>
{isPrivacyFolder && fileExst && <EncryptedFileIcon isEdit={isEdit} />}
</>
);
};
render() { render() {
const { const {
selection, selection,
@ -761,9 +749,11 @@ class SectionBodyContent extends React.Component {
tooltipValue, tooltipValue,
isLoading, isLoading,
isEmptyFilesList, isEmptyFilesList,
folderId,
} = this.props; } = this.props;
//console.log("Files Home SectionBodyContent render", this.props); console.log("Files Home SectionBodyContent render", this.props);
let fileMoveTooltip; let fileMoveTooltip;
if (dragging) { if (dragging) {
@ -787,12 +777,15 @@ class SectionBodyContent extends React.Component {
{viewAs === "tile" ? ( {viewAs === "tile" ? (
<FilesTileContainer <FilesTileContainer
t={t} t={t}
getFilesContextOptions={this.getFilesContextOptions} folderId={folderId}
getItemIcon={this.getItemIcon} getItemIcon={this.getItemIcon}
getFilesContextOptions={this.getFilesContextOptions}
/> />
) : ( ) : (
<FilesRowContainer <FilesRowContainer
getFilesContextOptions={this.getFilesContextOptions} t={t}
//getFilesContextOptions={this.getFilesContextOptions}
folderId={folderId}
/> />
)} )}
</> </>
@ -857,11 +850,12 @@ export default inject(
setThirdpartyInfo, setThirdpartyInfo,
deleteFileAction, deleteFileAction,
openLocationAction, openLocationAction,
deleteFolderAction,
} = filesActionsStore; } = filesActionsStore;
return { return {
isAdmin: auth.isAdmin, isAdmin: auth.isAdmin,
isTabletView: auth.settingsStore,
dragging, dragging,
fileActionId, fileActionId,
firstLoad, firstLoad,
@ -874,15 +868,20 @@ export default inject(
tooltipValue, tooltipValue,
isLoading, isLoading,
isEmptyFilesList: filesList.length <= 0, isEmptyFilesList: filesList.length <= 0,
homepage: config.homepage,
setDragging, setDragging,
setSecondaryProgressBarData, setSecondaryProgressBarData,
copyToAction, copyToAction,
moveToAction, moveToAction,
folderId: selectedFolderStore.id, folderId: selectedFolderStore.id,
isPrivacyFolder,
openLocationAction,
isTabletView: auth.settingsStore,
setIsVerHistoryPanel, setIsVerHistoryPanel,
fetchFileVersions, fetchFileVersions,
homepage: config.homepage,
setFavoriteAction, setFavoriteAction,
finalizeVersionAction, finalizeVersionAction,
lockFileAction, lockFileAction,
@ -896,12 +895,11 @@ export default inject(
duplicateAction, duplicateAction,
setAction, setAction,
setThirdpartyInfo, setThirdpartyInfo,
deleteFileAction,
isRootFolder: selectedFolderStore.isRootFolder, isRootFolder: selectedFolderStore.isRootFolder,
setRemoveItem, setRemoveItem,
setDeleteThirdPartyDialogVisible, setDeleteThirdPartyDialogVisible,
deleteFileAction, deleteFolderAction,
openLocationAction,
isPrivacyFolder,
}; };
} }
)(withRouter(withTranslation("Home")(observer(SectionBodyContent)))); )(withRouter(withTranslation("Home")(observer(SectionBodyContent))));

View File

@ -1,10 +0,0 @@
import React from 'react';
export default withGetContextOptions(WrappedComponent) => {
return class extends React.Component {
render() {
return <WrappedComponent {...this.props}/>
}
}
}

View File

@ -94,7 +94,6 @@ class SectionFilterContent extends React.Component {
onChangeViewAs = (view) => { onChangeViewAs = (view) => {
const { viewAs, setViewAs } = this.props; const { viewAs, setViewAs } = this.props;
console.log(view, "-----");
setViewAs(view); setViewAs(view);
}; };