From 308cdf8b736c79b49507d36bbede1c05b01ff0bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81d=C3=A1m?= Date: Sun, 24 Mar 2024 20:17:44 +0100 Subject: [PATCH] Registry widget fix --- .../src/views/environment/registryWidgets.jsx | 98 ++++++++++++++----- 1 file changed, 76 insertions(+), 22 deletions(-) diff --git a/web/dashboard/src/views/environment/registryWidgets.jsx b/web/dashboard/src/views/environment/registryWidgets.jsx index a8b573216..9aba1698d 100644 --- a/web/dashboard/src/views/environment/registryWidgets.jsx +++ b/web/dashboard/src/views/environment/registryWidgets.jsx @@ -9,18 +9,23 @@ export class GhcrRegistryWidget extends Component { super(props); this.state = { - login: "", + enabled: props.formData.enabled, + login: props.formData.login ?? "", token: "", - sealed: props.formData ? true : false, + sealed: props.formData.encryptedDockerconfigjson !== "" ? true : false, }; } - componentDidUpdate(prevProps) { - if (prevProps.formData !== this.props.formData) { + componentDidUpdate(prevProps, prevState) { + if (prevProps.formData.encryptedDockerconfigjson !== this.props.formData.encryptedDockerconfigjson) { this.setState({ - sealed: this.props.formData ? true : false, + sealed: this.props.formData.encryptedDockerconfigjson !== "" ? true : false }); } + + if (prevState.enabled !== this.state.enabled) { + this.props.onChange({ "enabled": this.state.enabled, "encryptedDockerconfigjson": this.props.formData.encryptedDockerconfigjson, "login": this.props.formData.login }) + } } resetPopupWindowAfterThreeSeconds() { @@ -33,7 +38,7 @@ export class GhcrRegistryWidget extends Component { }; seal() { - const { email, login, token } = this.state; + const { enabled, email, login, token } = this.state; const { gimletClient, store, env } = this.props; const configjson = { @@ -48,7 +53,7 @@ export class GhcrRegistryWidget extends Component { return () => { gimletClient.seal(env, JSON.stringify(configjson)) .then(data => { - this.props.onChange(data); + this.props.onChange({ "enabled": enabled, "encryptedDockerconfigjson": data, "login": login }) }, () => { store.dispatch({ type: ACTION_TYPE_POPUPWINDOWERROR, payload: { @@ -63,7 +68,7 @@ export class GhcrRegistryWidget extends Component { reset() { return () => { - this.props.onChange("") + this.props.onChange({ "enabled": this.state.enabled, "encryptedDockerconfigjson": "", "login": this.state.login }) }; } @@ -74,6 +79,17 @@ export class GhcrRegistryWidget extends Component { if (sealed) { return ( <> + this.setState(prevState => ({ + enabled: !prevState.enabled + }))} + > + +