fix: update permission driven ctas to handle auto save update changes (#18609)

This commit is contained in:
Sangeeth Sivan 2022-12-02 18:05:18 +05:30 committed by GitHub
parent 74dddd4701
commit 85db5cc965
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 31 additions and 5 deletions

View File

@ -10,16 +10,33 @@ import {
DialogComponent as Dialog,
Size,
} from "design-system";
import { TEMP_DATASOURCE_ID } from "constants/Datasource";
import { hasManageDatasourcePermission } from "@appsmith/utils/permissionHelpers";
interface SaveOrDiscardModalProps {
isOpen: boolean;
onDiscard(): void;
onSave?(): void;
onClose(): void;
datasourceId: string;
datasourcePermissions: string[];
}
function SaveOrDiscardDatasourceModal(props: SaveOrDiscardModalProps) {
const { isOpen, onClose, onDiscard, onSave } = props;
const {
datasourceId,
datasourcePermissions,
isOpen,
onClose,
onDiscard,
onSave,
} = props;
const createMode = datasourceId === TEMP_DATASOURCE_ID;
const canManageDatasources = hasManageDatasourcePermission(
datasourcePermissions,
);
const disableSaveButton = !createMode && !canManageDatasources;
return (
<Dialog
@ -43,7 +60,8 @@ function SaveOrDiscardDatasourceModal(props: SaveOrDiscardModalProps) {
/>
<Button
category={Category.primary}
onClick={onSave}
disabled={disableSaveButton}
onClick={!disableSaveButton && onSave}
size={Size.medium}
text="SAVE"
/>

View File

@ -420,6 +420,8 @@ class DatasourceEditorRouter extends React.Component<Props, State> {
renderSaveDisacardModal() {
return (
<SaveOrDiscardDatasourceModal
datasourceId={this.props.datasourceId}
datasourcePermissions={this.props.datasource?.userPermissions || []}
isOpen={this.state.showDialog}
onClose={this.closeDialog}
onDiscard={this.onDiscard}

View File

@ -318,6 +318,8 @@ class DatasourceSaaSEditor extends JSONtoForm<Props, State> {
)}
</form>
<SaveOrDiscardDatasourceModal
datasourceId={datasourceId}
datasourcePermissions={datasource?.userPermissions || []}
isOpen={this.state.showDialog}
onClose={this.closeDialog}
onDiscard={this.onDiscard}

View File

@ -264,13 +264,15 @@ function DatasourceAuth({
}
};
const createMode = datasourceId === TEMP_DATASOURCE_ID;
const datasourceButtonsComponentMap = (buttonType: string): JSX.Element => {
return {
[DatasourceButtonType.DELETE]: (
<ActionButton
category={Category.primary}
className="t--delete-datasource"
disabled={!canDeleteDatasource || datasourceId === TEMP_DATASOURCE_ID}
disabled={createMode || !canDeleteDatasource}
key={buttonType}
loading={isDeleting}
onClick={() => {
@ -303,7 +305,9 @@ function DatasourceAuth({
<ActionButton
category={Category.primary}
className="t--save-datasource"
disabled={isInvalid || !isFormDirty || !canManageDatasource}
disabled={
isInvalid || !isFormDirty || (!createMode && !canManageDatasource)
}
filled
key={buttonType}
loading={isSaving}
@ -318,7 +322,7 @@ function DatasourceAuth({
<StyledButton
category={Category.primary}
className="t--save-datasource"
disabled={isInvalid || !canManageDatasource}
disabled={isInvalid || (!createMode && !canManageDatasource)}
filled
fluidWidth
isLoading={isSaving}