From 5a3bc6504acfb3cb2173f631f5eeb0ba2f4465e4 Mon Sep 17 00:00:00 2001 From: Anna Rakhmukova Date: Thu, 10 Apr 2025 14:45:34 +0200 Subject: [PATCH] [gig] Add an account menu to the welcome screen GitOrigin-RevId: 0bc1bb8f74ab10f650c6dae1f3fafe8f379fb466 --- .../github/authentication/GHAccountsUtil.kt | 16 +++++++++++++++- .../ui/GHAccountsDetailsProvider.kt | 4 +++- .../ui/GitLabAccountsDetailsProvider.kt | 6 ++++-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/plugins/github/github-core/src/org/jetbrains/plugins/github/authentication/GHAccountsUtil.kt b/plugins/github/github-core/src/org/jetbrains/plugins/github/authentication/GHAccountsUtil.kt index 0d153410abd0..2d8691441361 100644 --- a/plugins/github/github-core/src/org/jetbrains/plugins/github/authentication/GHAccountsUtil.kt +++ b/plugins/github/github-core/src/org/jetbrains/plugins/github/authentication/GHAccountsUtil.kt @@ -105,6 +105,13 @@ object GHAccountsUtil { fun createBrowserLoginAction( model: GHLoginModel, project: Project, parentComponent: JComponent ): AnAction = DumbAwareAction.create(GithubBundle.message("action.Github.Accounts.AddGHAccount.text")) { + loginViaBrowser(model, project, parentComponent) + } + + @ApiStatus.Internal + fun loginViaBrowser( + model: GHLoginModel, project: Project, parentComponent: JComponent? + ) { scopedDialog(project) { GHLoginDialog.OAuth(model, project, this, parentComponent).apply { setServer(GithubServerPath.DEFAULT_HOST, false) @@ -114,8 +121,15 @@ object GHAccountsUtil { @ApiStatus.Internal fun createTokenLoginAction( - model: GHLoginModel, project: Project, parentComponent: JComponent + model: GHLoginModel, project: Project, parentComponent: JComponent, ): AnAction = DumbAwareAction.create(GithubBundle.message("action.Github.Accounts.AddGHAccountWithToken.text")) { + loginViaToken(model, project, parentComponent) + } + + @ApiStatus.Internal + fun loginViaToken( + model: GHLoginModel, project: Project, parentComponent: JComponent?, + ) { scopedDialog(project) { GHLoginDialog.Token(model, project, this, parentComponent).apply { title = GithubBundle.message("dialog.title.add.github.account") diff --git a/plugins/github/github-core/src/org/jetbrains/plugins/github/authentication/ui/GHAccountsDetailsProvider.kt b/plugins/github/github-core/src/org/jetbrains/plugins/github/authentication/ui/GHAccountsDetailsProvider.kt index cd2a59fe1156..0138936b357a 100644 --- a/plugins/github/github-core/src/org/jetbrains/plugins/github/authentication/ui/GHAccountsDetailsProvider.kt +++ b/plugins/github/github-core/src/org/jetbrains/plugins/github/authentication/ui/GHAccountsDetailsProvider.kt @@ -8,6 +8,7 @@ import com.intellij.collaboration.ui.ExceptionUtil import com.intellij.openapi.components.service import icons.CollaborationToolsIcons import kotlinx.coroutines.CoroutineScope +import org.jetbrains.annotations.ApiStatus import org.jetbrains.plugins.github.api.GithubApiRequestExecutor import org.jetbrains.plugins.github.api.GithubApiRequests import org.jetbrains.plugins.github.api.data.GithubUserDetailed @@ -18,7 +19,8 @@ import org.jetbrains.plugins.github.exceptions.GithubAuthenticationException import org.jetbrains.plugins.github.util.CachingGHUserAvatarLoader import java.awt.Image -internal class GHAccountsDetailsProvider( +@ApiStatus.Internal +class GHAccountsDetailsProvider( scope: CoroutineScope, private val executorSupplier: suspend (GithubAccount) -> GithubApiRequestExecutor? ) : LazyLoadingAccountsDetailsProvider(scope, CollaborationToolsIcons.Review.DefaultAvatar) { diff --git a/plugins/gitlab/gitlab-core/src/org/jetbrains/plugins/gitlab/authentication/ui/GitLabAccountsDetailsProvider.kt b/plugins/gitlab/gitlab-core/src/org/jetbrains/plugins/gitlab/authentication/ui/GitLabAccountsDetailsProvider.kt index 2f5f6b70c385..8ad3a8699eec 100644 --- a/plugins/gitlab/gitlab-core/src/org/jetbrains/plugins/gitlab/authentication/ui/GitLabAccountsDetailsProvider.kt +++ b/plugins/gitlab/gitlab-core/src/org/jetbrains/plugins/gitlab/authentication/ui/GitLabAccountsDetailsProvider.kt @@ -9,6 +9,7 @@ import com.intellij.openapi.components.service import icons.CollaborationToolsIcons import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CoroutineScope +import org.jetbrains.annotations.ApiStatus import org.jetbrains.plugins.gitlab.GitLabServersManager import org.jetbrains.plugins.gitlab.api.GitLabApi import org.jetbrains.plugins.gitlab.api.dto.GitLabUserDTO @@ -20,12 +21,13 @@ import org.jetbrains.plugins.gitlab.mergerequest.ui.toolwindow.GitLabSelectorErr import org.jetbrains.plugins.gitlab.util.GitLabBundle import java.awt.Image -internal class GitLabAccountsDetailsProvider private constructor( +@ApiStatus.Internal +class GitLabAccountsDetailsProvider private constructor( scope: CoroutineScope, private val apiClientSupplier: suspend (GitLabAccount) -> GitLabApi? ) : LazyLoadingAccountsDetailsProvider(scope, CollaborationToolsIcons.Review.DefaultAvatar) { - constructor( + internal constructor( scope: CoroutineScope, accountsModel: GitLabAccountsListModel, apiClientSupplier: suspend (GitLabAccount) -> GitLabApi?