1111import com .microsoft .azure .toolkit .intellij .legacy .common .AzureSettingsEditor ;
1212import com .microsoft .azure .toolkit .intellij .legacy .function .runner .deploy .ui .FunctionDeploymentPanel ;
1313import com .microsoft .azure .toolkit .lib .common .form .AzureValidationInfo ;
14+ import com .microsoft .azure .toolkit .lib .common .utils .TailingDebouncer ;
1415import org .jetbrains .annotations .NotNull ;
1516import reactor .core .scheduler .Schedulers ;
1617
1718import java .util .Objects ;
19+ import java .util .Optional ;
1820
1921public class FunctionDeploymentSettingEditor extends AzureSettingsEditor <FunctionDeployConfiguration > {
2022
2123 private final FunctionDeploymentPanel mainPanel ;
2224 private final FunctionDeployConfiguration functionDeployConfiguration ;
2325
26+ private final TailingDebouncer debouncer = new TailingDebouncer (this ::updateValidationInfo , 1000 );
27+
2428 public FunctionDeploymentSettingEditor (Project project , @ NotNull FunctionDeployConfiguration functionDeployConfiguration ) {
2529 super (project );
2630 this .mainPanel = new FunctionDeploymentPanel (project , functionDeployConfiguration );
@@ -34,12 +38,22 @@ protected void applyEditorTo(@NotNull FunctionDeployConfiguration conf) throws C
3438 .filter (i -> !i .isValid ())
3539 .findAny ().orElse (null );
3640 if (Objects .nonNull (error )) {
37- mainPanel . validateAllInputsAsync (). subscribeOn ( Schedulers . boundedElastic ()). subscribe ( ignore -> this . fireEditorStateChanged () );
41+ this . debouncer . debounce ( );
3842 final String message = error .getType () == AzureValidationInfo .Type .PENDING ? "Validating..." : error .getMessage ();
3943 throw new ConfigurationException (message );
4044 }
4145 }
4246
47+ private void updateValidationInfo () {
48+ this .mainPanel .validateAllInputsAsync ()
49+ .subscribeOn (Schedulers .boundedElastic ())
50+ .subscribe (info -> {
51+ if (info .isValid ()) {
52+ this .fireEditorStateChanged ();
53+ }
54+ });
55+ }
56+
4357 @ Override
4458 @ NotNull
4559 protected AzureSettingPanel <FunctionDeployConfiguration > getPanel () {
0 commit comments