Skip to content

Commit 22f0732

Browse files
authored
Merge pull request #5406 from microsoft/bugfix-sp-clipboard
Fix bug: clip board doesn't work for sp login
2 parents 0726e6b + 2d37afe commit 22f0732

File tree

2 files changed

+9
-10
lines changed

2 files changed

+9
-10
lines changed

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/intellij/ui/ServicePrincipalLoginDialog.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.intellij.ui.EditorTextField;
2626
import com.intellij.ui.EditorTextFieldProvider;
2727
import com.intellij.ui.SoftWrapsEditorCustomization;
28+
import com.intellij.util.ui.UIUtil;
2829
import com.microsoft.azure.toolkit.intellij.common.AzureCommentLabel;
2930
import com.microsoft.azure.toolkit.intellij.common.AzureDialog;
3031
import com.microsoft.azure.toolkit.intellij.common.TextDocumentListenerAdapter;
@@ -90,8 +91,7 @@ protected ServicePrincipalLoginDialog(@Nonnull Project project) {
9091
init();
9192
super.setOKButtonText("Sign In");
9293

93-
pasteFromClipboard();
94-
uiTextComponents2Json();
94+
initJsonData();
9595

9696
// initialize cert file select
9797
FileChooserDescriptor pem = FileChooserDescriptorFactory.createSingleFileDescriptor("pem");
@@ -221,13 +221,15 @@ public List<AzureValidationInfo> validateData() {
221221
return Collections.emptyList();
222222
}
223223

224-
private void pasteFromClipboard() {
224+
private void initJsonData() {
225225
String textFromClip = findTextInClipboard(str ->
226-
StringUtils.contains(str, "appId") && StringUtils.contains(str, "tenant") && StringUtils.contains(str, "password")
226+
StringUtils.contains(str, "appId") && StringUtils.contains(str, "tenant") &&
227+
(StringUtils.contains(str, "password") || StringUtils.contains(str, "fileWithCertAndPrivateKey"))
227228
);
228229
if (StringUtils.isNotBlank(textFromClip)) {
229230
json2UIComponents(textFromClip);
230231
}
232+
uiTextComponents2Json();
231233
}
232234

233235
@javax.annotation.Nullable
@@ -279,7 +281,7 @@ private void json2UIComponents(String json) {
279281
try {
280282
Map<String, String> map = JsonUtils.fromJson(json, HashMap.class);
281283
if (map != null) {
282-
ApplicationManager.getApplication().invokeLater(() -> {
284+
UIUtil.invokeLaterIfNeeded(() -> {
283285
intermediateState = true;
284286
try {
285287
if (map.containsKey("appId")) {

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/intellij/ui/SignInWindow.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import com.intellij.openapi.project.Project;
1414
import com.intellij.openapi.ui.DialogWrapper;
1515
import com.intellij.ui.AnimatedIcon;
16+
import com.intellij.util.ui.UIUtil;
1617
import com.microsoft.azure.toolkit.lib.Azure;
1718
import com.microsoft.azure.toolkit.lib.auth.Account;
1819
import com.microsoft.azure.toolkit.lib.auth.AzureAccount;
@@ -171,11 +172,7 @@ public Single<AuthMethodDetails> login() {
171172
properties.putAll(signInSPProp);
172173
EventUtil.logEvent(EventType.info, ACCOUNT, SIGNIN, properties, null);
173174

174-
if (ApplicationManager.getApplication().isDispatchThread()) {
175-
call(this::doServicePrincipalLogin, "sp");
176-
} else {
177-
AzureTaskManager.getInstance().runAndWait(() -> call(this::doServicePrincipalLogin, "sp"));
178-
}
175+
UIUtil.invokeAndWaitIfNeeded(() -> call(this::doServicePrincipalLogin, "sp"));
179176
} else if (deviceLoginRadioButton.isSelected()) {
180177
authMethodDetailsResult = call(this::doDeviceLogin, "dc");
181178
} else if (azureCliRadioButton.isSelected()) {

0 commit comments

Comments
 (0)