fix: update permission driven ctas to handle auto save update changes (#18609)
This commit is contained in:
parent
74dddd4701
commit
85db5cc965
|
|
@ -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"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user