feat: disable moving flow to a folder
This commit is contained in:
committed by
Ali BARIN
parent
b27a10c897
commit
0ffc8dd96f
@@ -13,6 +13,8 @@ import IconButton from '@mui/material/IconButton';
|
|||||||
import CloseIcon from '@mui/icons-material/Close';
|
import CloseIcon from '@mui/icons-material/Close';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
|
|
||||||
|
import useFlow from 'hooks/useFlow';
|
||||||
|
import useCurrentUser from 'hooks/useCurrentUser';
|
||||||
import useFolders from 'hooks/useFolders';
|
import useFolders from 'hooks/useFolders';
|
||||||
import useFormatMessage from 'hooks/useFormatMessage';
|
import useFormatMessage from 'hooks/useFormatMessage';
|
||||||
import useFlowFolder from 'hooks/useFlowFolder';
|
import useFlowFolder from 'hooks/useFlowFolder';
|
||||||
@@ -25,8 +27,13 @@ function FlowFolderChangeDialog(props) {
|
|||||||
const { data: folders, isLoading: isFoldersLoading } = useFolders();
|
const { data: folders, isLoading: isFoldersLoading } = useFolders();
|
||||||
const { data: flowFolder, isLoading: isFlowFolderLoading } =
|
const { data: flowFolder, isLoading: isFlowFolderLoading } =
|
||||||
useFlowFolder(flowId);
|
useFlowFolder(flowId);
|
||||||
|
const { data: flowData, isPending: isFlowPending } = useFlow(flowId);
|
||||||
|
const flow = flowData?.data;
|
||||||
|
const { data: userData, isPending: isCurrentUserPending } = useCurrentUser();
|
||||||
|
const currentUser = userData?.data;
|
||||||
|
|
||||||
const [selectedFolder, setSelectedFolder] = React.useState(null);
|
const [selectedFolder, setSelectedFolder] = React.useState(null);
|
||||||
|
const [canMoveFlow, setCanMoveFlow] = React.useState(false);
|
||||||
|
|
||||||
const uncategorizedFolder = { id: null, name: 'Uncategorized' };
|
const uncategorizedFolder = { id: null, name: 'Uncategorized' };
|
||||||
|
|
||||||
@@ -54,6 +61,16 @@ function FlowFolderChangeDialog(props) {
|
|||||||
[flowFolder],
|
[flowFolder],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
React.useEffect(
|
||||||
|
function updateCanMoveFlow() {
|
||||||
|
if (flow?.user_id && currentUser?.id) {
|
||||||
|
// TODO: flow.user_id is currently unavailable, preventing this from running. Remove this comment once it becomes available.
|
||||||
|
setCanMoveFlow(flow.user_id === currentUser.id);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
[currentUser?.id, flow?.user_id],
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Dialog open={open} onClose={onClose}>
|
<Dialog open={open} onClose={onClose}>
|
||||||
<DialogTitle>{formatMessage('flowFolderChangeDialog.title')}</DialogTitle>
|
<DialogTitle>{formatMessage('flowFolderChangeDialog.title')}</DialogTitle>
|
||||||
@@ -88,7 +105,13 @@ function FlowFolderChangeDialog(props) {
|
|||||||
isOptionEqualToValue={(option, value) => option.id === value.id}
|
isOptionEqualToValue={(option, value) => option.id === value.id}
|
||||||
getOptionLabel={(option) => option.name}
|
getOptionLabel={(option) => option.name}
|
||||||
loading={isFoldersLoading || isFlowFolderLoading}
|
loading={isFoldersLoading || isFlowFolderLoading}
|
||||||
disabled={isFoldersLoading || isFlowFolderLoading}
|
disabled={
|
||||||
|
isFoldersLoading ||
|
||||||
|
isFlowFolderLoading ||
|
||||||
|
isCurrentUserPending ||
|
||||||
|
isFlowPending
|
||||||
|
}
|
||||||
|
readOnly={!canMoveFlow}
|
||||||
renderInput={(params) => (
|
renderInput={(params) => (
|
||||||
<TextField
|
<TextField
|
||||||
{...params}
|
{...params}
|
||||||
@@ -116,11 +139,18 @@ function FlowFolderChangeDialog(props) {
|
|||||||
onClick={handleConfirm}
|
onClick={handleConfirm}
|
||||||
data-test="flow-folder-change-dialog-confirm-button"
|
data-test="flow-folder-change-dialog-confirm-button"
|
||||||
loading={isUpdateFlowFolderPending}
|
loading={isUpdateFlowFolderPending}
|
||||||
|
disabled={!canMoveFlow}
|
||||||
>
|
>
|
||||||
{formatMessage('flowFolderChangeDialog.confirm')}
|
{formatMessage('flowFolderChangeDialog.confirm')}
|
||||||
</LoadingButton>
|
</LoadingButton>
|
||||||
</DialogActions>
|
</DialogActions>
|
||||||
|
|
||||||
|
{!canMoveFlow && (
|
||||||
|
<Alert severity="info">
|
||||||
|
{formatMessage('flowFolder.cannotMoveFlow')}
|
||||||
|
</Alert>
|
||||||
|
)}
|
||||||
|
|
||||||
{createUpdateFlowFolderError && (
|
{createUpdateFlowFolderError && (
|
||||||
<Alert
|
<Alert
|
||||||
data-test="flow-folder-change-dialog-error-alert"
|
data-test="flow-folder-change-dialog-error-alert"
|
||||||
|
|||||||
@@ -372,6 +372,7 @@
|
|||||||
"flowFolderChangeDialog.uncategorizedFolder": "Uncategorized",
|
"flowFolderChangeDialog.uncategorizedFolder": "Uncategorized",
|
||||||
"flowFolderChangeDialog.successfullyUpdatedFolder": "The flow has been successfully moved to the new folder!",
|
"flowFolderChangeDialog.successfullyUpdatedFolder": "The flow has been successfully moved to the new folder!",
|
||||||
"flowFolder.uncategorized": "Uncategorized",
|
"flowFolder.uncategorized": "Uncategorized",
|
||||||
|
"flowFolder.cannotMoveFlow": "A flow can only be moved to a folder by the flow owner.",
|
||||||
"footer.docsLinkText": "Documentation",
|
"footer.docsLinkText": "Documentation",
|
||||||
"footer.tosLinkText": "Terms of Service",
|
"footer.tosLinkText": "Terms of Service",
|
||||||
"footer.privacyPolicyLinkText": "Privacy",
|
"footer.privacyPolicyLinkText": "Privacy",
|
||||||
|
|||||||
Reference in New Issue
Block a user