[settingsSync] IJPL-165434 add dummy default provider

GitOrigin-RevId: e7fd2c1060ac1697ca158fc6ff173c2bfd84ab15
This commit is contained in:
Sergey Pak
2025-01-21 14:16:38 +01:00
committed by intellij-monorepo-bot
parent 2ef96d8dee
commit 7592919609
3 changed files with 54 additions and 2 deletions

View File

@@ -75,6 +75,9 @@ status.action.settings.sync.failed=Failed
# logout.dialog.button=Log Out
plugins.bundled=Bundled plugins
subcategory.config.link=Configure
#temporary message
settings.jba.plugin.required.text=Please download JetBrains "Backup and Sync" plugin from the Plugins page
settings.jba.plugin.required.title=Plugin download required
settings.category.ui.editor.font=Editor font
settings.sync.info.message=Sync UI, Code and System settings, Keymaps, Plugins, and Tools.

View File

@@ -1,11 +1,19 @@
package com.intellij.settingsSync.core.communicator
import com.intellij.icons.AllIcons
import com.intellij.openapi.application.EDT
import com.intellij.openapi.diagnostic.logger
import com.intellij.openapi.ui.Messages
import com.intellij.settingsSync.core.SettingsSyncBundle
import com.intellij.settingsSync.core.SettingsSyncEventListener
import com.intellij.settingsSync.core.SettingsSyncLocalSettings
import com.intellij.settingsSync.core.SettingsSyncRemoteCommunicator
import com.intellij.settingsSync.core.auth.SettingsSyncAuthService
import com.intellij.util.resettableLazy
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.jetbrains.annotations.ApiStatus
import java.awt.Component
@ApiStatus.Internal
object RemoteCommunicatorHolder : SettingsSyncEventListener {
@@ -69,10 +77,18 @@ object RemoteCommunicatorHolder : SettingsSyncEventListener {
}
fun getAvailableProviders(): List<SettingsSyncCommunicatorProvider> {
val extensionList = SettingsSyncCommunicatorProvider.PROVIDER_EP.extensionList
val extensionList = arrayListOf<SettingsSyncCommunicatorProvider>()
extensionList.addAll(SettingsSyncCommunicatorProvider.PROVIDER_EP.extensionList)
if (extensionList.find { it.providerCode == DEFAULT_PROVIDER_CODE } == null) {
extensionList.add(DummyDefaultCommunicatorProvider)
}
return extensionList
}
fun getExternalProviders(): List<SettingsSyncCommunicatorProvider> {
return getAvailableProviders().filter { it.providerCode != DEFAULT_PROVIDER_CODE }
}
fun getDefaultProvider(): SettingsSyncCommunicatorProvider? {
return getProvider(DEFAULT_PROVIDER_CODE)
}
@@ -89,4 +105,37 @@ object RemoteCommunicatorHolder : SettingsSyncEventListener {
val providerCode = SettingsSyncLocalSettings.getInstance().providerCode ?: return null
return getProvider(providerCode)
}
private object DummyAuthService: SettingsSyncAuthService {
override val providerCode = DEFAULT_PROVIDER_CODE
override val providerName = "JetBrains"
override val icon = AllIcons.Ultimate.IdeaUltimatePromo
override suspend fun login(parentComponent: Component?): SettingsSyncUserData? {
return withContext(Dispatchers.EDT) {
if (parentComponent != null) {
Messages.showInfoMessage(parentComponent, SettingsSyncBundle.message("settings.jba.plugin.required.text"),
SettingsSyncBundle.message("settings.jba.plugin.required.title"))
} else {
Messages.showInfoMessage(SettingsSyncBundle.message("settings.jba.plugin.required.text"),
SettingsSyncBundle.message("settings.jba.plugin.required.title"))
}
null
}
}
override fun getUserData(userId: String): SettingsSyncUserData? = null
override fun getAvailableUserAccounts(): List<SettingsSyncUserData> = emptyList()
}
private object DummyDefaultCommunicatorProvider : SettingsSyncCommunicatorProvider {
override val providerCode: String
get() = DEFAULT_PROVIDER_CODE
override val authService = DummyAuthService
override fun createCommunicator(userId: String): SettingsSyncRemoteCommunicator? {
return null
}
}
}

View File

@@ -59,7 +59,7 @@ internal class SettingsSyncConfigurable(private val coroutineScope: CoroutineSco
private val wasUsedBefore = AtomicBooleanProperty(SettingsSyncLocalSettings.getInstance().userId != null)
private val userAccountsList = arrayListOf<UserProviderHolder>()
private val syncPanelHolder = SettingsSyncPanelHolder()
private val hasMultipleProviders = AtomicBooleanProperty(RemoteCommunicatorHolder.getAvailableProviders().size > 1)
private val hasMultipleProviders = AtomicBooleanProperty(RemoteCommunicatorHolder.getExternalProviders().isNotEmpty())
init {
syncEnabler.addListener(this)