From 0652f7ff80450aa72d6ca04af8f28aaba783adf7 Mon Sep 17 00:00:00 2001 From: Devin Binnie <52460000+devinbinnie@users.noreply.github.com> Date: Thu, 24 Oct 2024 13:12:53 -0400 Subject: [PATCH] [MM-61144][MM-60704] Show badges and allow Edit Server modal for permissions for pre-defined servers (#3175) --- src/app/serverViewState.ts | 4 +- src/renderer/components/NewServerModal.tsx | 176 +++++++++++---------- src/renderer/dropdown.tsx | 21 ++- 3 files changed, 107 insertions(+), 94 deletions(-) diff --git a/src/app/serverViewState.ts b/src/app/serverViewState.ts index 18e3d2f5..f0b52f9b 100644 --- a/src/app/serverViewState.ts +++ b/src/app/serverViewState.ts @@ -171,7 +171,9 @@ export class ServerViewState { mainWindow); modalPromise.then((data) => { - ServerManager.editServer(id, data.server); + if (!server.isPredefined) { + ServerManager.editServer(id, data.server); + } PermissionsManager.setForServer(server, data.permissions); }).catch((e) => { // e is undefined for user cancellation diff --git a/src/renderer/components/NewServerModal.tsx b/src/renderer/components/NewServerModal.tsx index 67ff0d20..d39e6e4d 100644 --- a/src/renderer/components/NewServerModal.tsx +++ b/src/renderer/components/NewServerModal.tsx @@ -313,23 +313,31 @@ class NewServerModal extends React.PureComponent { }; save = () => { - if (!this.state.validationResult) { - return; - } + if (this.props.editMode && this.props.server?.isPredefined) { + this.setState({ + saveStarted: true, + }, () => { + this.props.onSave?.(this.props.server!, this.state.permissions); + }); + } else { + if (!this.state.validationResult) { + return; + } - if (this.isServerURLErrored()) { - return; - } + if (this.isServerURLErrored()) { + return; + } - this.setState({ - saveStarted: true, - }, () => { - this.props.onSave?.({ - url: this.state.serverUrl, - name: this.state.serverName, - id: this.state.serverId, - }, this.state.permissions); - }); + this.setState({ + saveStarted: true, + }, () => { + this.props.onSave?.({ + url: this.state.serverUrl, + name: this.state.serverName, + id: this.state.serverId, + }, this.state.permissions); + }); + } }; getSaveButtonLabel() { @@ -413,73 +421,77 @@ class NewServerModal extends React.PureComponent { -
- - - - - ) => { - e.stopPropagation(); - }} - ref={(ref: HTMLInputElement) => { - this.serverUrlInputRef = ref; - if (this.props.setInputRef) { - this.props.setInputRef(ref); - } - }} - isInvalid={this.isServerURLErrored()} - autoFocus={true} - /> - - - - - - - - - - ) => { - e.stopPropagation(); - }} - isInvalid={!this.state.serverName.length} - /> - - - - - -
-
- {this.getServerNameMessage()} - {this.getServerURLMessage()} -
+ {!(this.props.editMode && this.props.server?.isPredefined) && + <> +
+ + + + + ) => { + e.stopPropagation(); + }} + ref={(ref: HTMLInputElement) => { + this.serverUrlInputRef = ref; + if (this.props.setInputRef) { + this.props.setInputRef(ref); + } + }} + isInvalid={this.isServerURLErrored()} + autoFocus={true} + /> + + + + + + + + + + ) => { + e.stopPropagation(); + }} + isInvalid={!this.state.serverName.length} + /> + + + + + +
+
+ {this.getServerNameMessage()} + {this.getServerURLMessage()} +
+ + } {this.props.editMode && <>
diff --git a/src/renderer/dropdown.tsx b/src/renderer/dropdown.tsx index b85b1966..b1d0c3e7 100644 --- a/src/renderer/dropdown.tsx +++ b/src/renderer/dropdown.tsx @@ -209,9 +209,6 @@ class ServerDropdown extends React.PureComponent, State> { }; editServer = (serverId: string) => { - if (this.serverIsPredefined(serverId)) { - return () => {}; - } return (event: React.MouseEvent) => { event.stopPropagation(); window.desktop.serverDropdown.showEditServerModal(serverId); @@ -333,23 +330,25 @@ class ServerDropdown extends React.PureComponent, State> { {this.isActiveServer(server) ? : } {server.name} - {!server.isPredefined &&
+
- + {!server.isPredefined && + + } {badgeDiv &&
{badgeDiv}
} -
} +
)}