[MM-61144][MM-60704] Show badges and allow Edit Server modal for permissions for pre-defined servers (#3175)

This commit is contained in:
Devin Binnie
2024-10-24 13:12:53 -04:00
committed by GitHub
parent 97a872a925
commit 0652f7ff80
3 changed files with 107 additions and 94 deletions

View File

@@ -171,7 +171,9 @@ export class ServerViewState {
mainWindow);
modalPromise.then((data) => {
if (!server.isPredefined) {
ServerManager.editServer(id, data.server);
}
PermissionsManager.setForServer(server, data.permissions);
}).catch((e) => {
// e is undefined for user cancellation

View File

@@ -313,6 +313,13 @@ class NewServerModal extends React.PureComponent<Props, State> {
};
save = () => {
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;
}
@@ -330,6 +337,7 @@ class NewServerModal extends React.PureComponent<Props, State> {
id: this.state.serverId,
}, this.state.permissions);
});
}
};
getSaveButtonLabel() {
@@ -413,6 +421,8 @@ class NewServerModal extends React.PureComponent<Props, State> {
</Modal.Header>
<Modal.Body>
{!(this.props.editMode && this.props.server?.isPredefined) &&
<>
<form>
<FormGroup>
<FormLabel>
@@ -480,6 +490,8 @@ class NewServerModal extends React.PureComponent<Props, State> {
{this.getServerNameMessage()}
{this.getServerURLMessage()}
</div>
</>
}
{this.props.editMode &&
<>
<hr/>

View File

@@ -209,9 +209,6 @@ class ServerDropdown extends React.PureComponent<Record<string, never>, State> {
};
editServer = (serverId: string) => {
if (this.serverIsPredefined(serverId)) {
return () => {};
}
return (event: React.MouseEvent<HTMLButtonElement>) => {
event.stopPropagation();
window.desktop.serverDropdown.showEditServerModal(serverId);
@@ -333,23 +330,25 @@ class ServerDropdown extends React.PureComponent<Record<string, never>, State> {
{this.isActiveServer(server) ? <i className='icon-check'/> : <i className='icon-server-variant'/>}
<span>{server.name}</span>
</div>
{!server.isPredefined && <div className='ServerDropdown__indicators'>
<div className='ServerDropdown__indicators'>
<button
className='ServerDropdown__button-edit'
onClick={this.editServer(server.id!)}
>
<i className='icon-pencil-outline'/>
</button>
{!server.isPredefined &&
<button
className='ServerDropdown__button-remove'
onClick={this.removeServer(server.id!)}
>
<i className='icon-trash-can-outline'/>
</button>
}
{badgeDiv && <div className='ServerDropdown__badge'>
{badgeDiv}
</div>}
</div>}
</div>
</button>
)}
</Draggable>