fix(integrations): remove unnecessary Refresh control
Data already reloads on mount, after mutations, and after Apply & Restart, so the section Refresh button was redundant noise. Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>
This commit is contained in:
committed by
Cursor Agent
co-authored by
Serhii Dziupin
parent
22ffc4c87f
commit
0e0580f95c
+14
-46
@@ -52,7 +52,6 @@ export const ThirdPartyIntegrationsSection: React.FC<ThirdPartyIntegrationsSecti
|
||||
const {
|
||||
entries,
|
||||
registryInfo,
|
||||
isLoadingRegistry,
|
||||
loadPlugins,
|
||||
loadRegistryInfo,
|
||||
createEntry,
|
||||
@@ -62,7 +61,6 @@ export const ThirdPartyIntegrationsSection: React.FC<ThirdPartyIntegrationsSecti
|
||||
useShallow((state) => ({
|
||||
entries: state.entries,
|
||||
registryInfo: state.registryInfo,
|
||||
isLoadingRegistry: state.isLoadingRegistry,
|
||||
loadPlugins: state.loadPlugins,
|
||||
loadRegistryInfo: state.loadRegistryInfo,
|
||||
createEntry: state.createEntry,
|
||||
@@ -71,7 +69,6 @@ export const ThirdPartyIntegrationsSection: React.FC<ThirdPartyIntegrationsSecti
|
||||
})),
|
||||
);
|
||||
|
||||
const [isRefreshing, setIsRefreshing] = React.useState(false);
|
||||
const [registryLoadFailed, setRegistryLoadFailed] = React.useState(false);
|
||||
const [pendingAction, setPendingAction] = React.useState<{
|
||||
pluginId: string;
|
||||
@@ -87,26 +84,21 @@ export const ThirdPartyIntegrationsSection: React.FC<ThirdPartyIntegrationsSecti
|
||||
const [openPluginIds, setOpenPluginIds] = React.useState<ReadonlySet<string>>(() => new Set());
|
||||
|
||||
const refresh = React.useCallback(async () => {
|
||||
setIsRefreshing(true);
|
||||
try {
|
||||
const pluginsLoaded = await loadPlugins({ force: true });
|
||||
if (!pluginsLoaded) {
|
||||
setRegistryLoadFailed(true);
|
||||
return;
|
||||
}
|
||||
|
||||
const latestEntries = usePluginsStore.getState().entries;
|
||||
const specs = new Set(THIRD_PARTY_PLUGINS.map((plugin) => plugin.packageName));
|
||||
for (const entry of latestEntries) {
|
||||
if (THIRD_PARTY_PLUGINS.some((plugin) => entry.spec === plugin.packageName || entry.spec.startsWith(`${plugin.packageName}@`))) {
|
||||
specs.add(entry.spec);
|
||||
}
|
||||
}
|
||||
const registryLoaded = await loadRegistryInfo({ specs: [...specs], force: true });
|
||||
setRegistryLoadFailed(!registryLoaded);
|
||||
} finally {
|
||||
setIsRefreshing(false);
|
||||
const pluginsLoaded = await loadPlugins({ force: true });
|
||||
if (!pluginsLoaded) {
|
||||
setRegistryLoadFailed(true);
|
||||
return;
|
||||
}
|
||||
|
||||
const latestEntries = usePluginsStore.getState().entries;
|
||||
const specs = new Set(THIRD_PARTY_PLUGINS.map((plugin) => plugin.packageName));
|
||||
for (const entry of latestEntries) {
|
||||
if (THIRD_PARTY_PLUGINS.some((plugin) => entry.spec === plugin.packageName || entry.spec.startsWith(`${plugin.packageName}@`))) {
|
||||
specs.add(entry.spec);
|
||||
}
|
||||
}
|
||||
const registryLoaded = await loadRegistryInfo({ specs: [...specs], force: true });
|
||||
setRegistryLoadFailed(!registryLoaded);
|
||||
}, [loadPlugins, loadRegistryInfo]);
|
||||
|
||||
React.useEffect(() => {
|
||||
@@ -383,18 +375,6 @@ export const ThirdPartyIntegrationsSection: React.FC<ThirdPartyIntegrationsSecti
|
||||
) : null}
|
||||
{primaryLabel}
|
||||
</Button>
|
||||
{registryUnavailable ? (
|
||||
<Button
|
||||
type="button"
|
||||
size="sm"
|
||||
variant="outline"
|
||||
onClick={() => void refresh()}
|
||||
disabled={isRefreshing || isLoadingRegistry || isPending}
|
||||
>
|
||||
{isRefreshing || isLoadingRegistry ? <Icon name="loader-4" className="size-3.5 animate-spin" /> : null}
|
||||
{t('settings.integrations.thirdParty.actions.refresh')}
|
||||
</Button>
|
||||
) : null}
|
||||
<Button
|
||||
type="button"
|
||||
size="sm"
|
||||
@@ -431,18 +411,6 @@ export const ThirdPartyIntegrationsSection: React.FC<ThirdPartyIntegrationsSecti
|
||||
info={t('settings.integrations.thirdParty.info')}
|
||||
divider={false}
|
||||
settingsItem="integrations.third-party"
|
||||
headerAction={(
|
||||
<Button
|
||||
type="button"
|
||||
size="xs"
|
||||
variant="outline"
|
||||
onClick={() => void refresh()}
|
||||
disabled={isRefreshing || isLoadingRegistry}
|
||||
>
|
||||
{isRefreshing || isLoadingRegistry ? <Icon name="loader-4" className="size-3.5 animate-spin" /> : null}
|
||||
{t('settings.integrations.thirdParty.actions.refresh')}
|
||||
</Button>
|
||||
)}
|
||||
contentClassName="space-y-3"
|
||||
>
|
||||
{THIRD_PARTY_PLUGINS.map(renderPlugin)}
|
||||
|
||||
@@ -15,7 +15,6 @@ export const thirdPartyIntegrationI18n = {
|
||||
'settings.integrations.thirdParty.actions.update': 'Update',
|
||||
'settings.integrations.thirdParty.actions.setup': 'Set up',
|
||||
'settings.integrations.thirdParty.actions.remove': 'Remove',
|
||||
'settings.integrations.thirdParty.actions.refresh': 'Refresh',
|
||||
'settings.integrations.thirdParty.actions.docs': 'Docs',
|
||||
'settings.integrations.thirdParty.actions.managePlugins': 'Manage plugins',
|
||||
'settings.integrations.thirdParty.status.notInstalled': 'Not installed',
|
||||
@@ -57,7 +56,6 @@ export const thirdPartyIntegrationI18n = {
|
||||
'settings.integrations.thirdParty.actions.update': 'Aktualisieren',
|
||||
'settings.integrations.thirdParty.actions.setup': 'Einrichten',
|
||||
'settings.integrations.thirdParty.actions.remove': 'Entfernen',
|
||||
'settings.integrations.thirdParty.actions.refresh': 'Aktualisieren',
|
||||
'settings.integrations.thirdParty.actions.docs': 'Dokumentation',
|
||||
'settings.integrations.thirdParty.actions.managePlugins': 'Plugins verwalten',
|
||||
'settings.integrations.thirdParty.status.notInstalled': 'Nicht installiert',
|
||||
@@ -99,7 +97,6 @@ export const thirdPartyIntegrationI18n = {
|
||||
'settings.integrations.thirdParty.actions.update': 'Mettre à jour',
|
||||
'settings.integrations.thirdParty.actions.setup': 'Configurer',
|
||||
'settings.integrations.thirdParty.actions.remove': 'Supprimer',
|
||||
'settings.integrations.thirdParty.actions.refresh': 'Actualiser',
|
||||
'settings.integrations.thirdParty.actions.docs': 'Documentation',
|
||||
'settings.integrations.thirdParty.actions.managePlugins': 'Gérer les plugins',
|
||||
'settings.integrations.thirdParty.status.notInstalled': 'Non installé',
|
||||
@@ -141,7 +138,6 @@ export const thirdPartyIntegrationI18n = {
|
||||
'settings.integrations.thirdParty.actions.update': 'Actualizar',
|
||||
'settings.integrations.thirdParty.actions.setup': 'Configurar',
|
||||
'settings.integrations.thirdParty.actions.remove': 'Quitar',
|
||||
'settings.integrations.thirdParty.actions.refresh': 'Actualizar',
|
||||
'settings.integrations.thirdParty.actions.docs': 'Documentación',
|
||||
'settings.integrations.thirdParty.actions.managePlugins': 'Administrar plugins',
|
||||
'settings.integrations.thirdParty.status.notInstalled': 'No instalado',
|
||||
@@ -183,7 +179,6 @@ export const thirdPartyIntegrationI18n = {
|
||||
'settings.integrations.thirdParty.actions.update': '更新',
|
||||
'settings.integrations.thirdParty.actions.setup': '設定',
|
||||
'settings.integrations.thirdParty.actions.remove': '削除',
|
||||
'settings.integrations.thirdParty.actions.refresh': '再読み込み',
|
||||
'settings.integrations.thirdParty.actions.docs': 'ドキュメント',
|
||||
'settings.integrations.thirdParty.actions.managePlugins': 'プラグインを管理',
|
||||
'settings.integrations.thirdParty.status.notInstalled': '未インストール',
|
||||
@@ -225,7 +220,6 @@ export const thirdPartyIntegrationI18n = {
|
||||
'settings.integrations.thirdParty.actions.update': '업데이트',
|
||||
'settings.integrations.thirdParty.actions.setup': '설정',
|
||||
'settings.integrations.thirdParty.actions.remove': '제거',
|
||||
'settings.integrations.thirdParty.actions.refresh': '새로 고침',
|
||||
'settings.integrations.thirdParty.actions.docs': '문서',
|
||||
'settings.integrations.thirdParty.actions.managePlugins': '플러그인 관리',
|
||||
'settings.integrations.thirdParty.status.notInstalled': '설치되지 않음',
|
||||
@@ -267,7 +261,6 @@ export const thirdPartyIntegrationI18n = {
|
||||
'settings.integrations.thirdParty.actions.update': 'Aktualizuj',
|
||||
'settings.integrations.thirdParty.actions.setup': 'Skonfiguruj',
|
||||
'settings.integrations.thirdParty.actions.remove': 'Usuń',
|
||||
'settings.integrations.thirdParty.actions.refresh': 'Odśwież',
|
||||
'settings.integrations.thirdParty.actions.docs': 'Dokumentacja',
|
||||
'settings.integrations.thirdParty.actions.managePlugins': 'Zarządzaj wtyczkami',
|
||||
'settings.integrations.thirdParty.status.notInstalled': 'Nie zainstalowano',
|
||||
@@ -309,7 +302,6 @@ export const thirdPartyIntegrationI18n = {
|
||||
'settings.integrations.thirdParty.actions.update': 'Atualizar',
|
||||
'settings.integrations.thirdParty.actions.setup': 'Configurar',
|
||||
'settings.integrations.thirdParty.actions.remove': 'Remover',
|
||||
'settings.integrations.thirdParty.actions.refresh': 'Atualizar',
|
||||
'settings.integrations.thirdParty.actions.docs': 'Documentação',
|
||||
'settings.integrations.thirdParty.actions.managePlugins': 'Gerenciar plugins',
|
||||
'settings.integrations.thirdParty.status.notInstalled': 'Não instalado',
|
||||
@@ -351,7 +343,6 @@ export const thirdPartyIntegrationI18n = {
|
||||
'settings.integrations.thirdParty.actions.update': 'Оновити',
|
||||
'settings.integrations.thirdParty.actions.setup': 'Налаштувати',
|
||||
'settings.integrations.thirdParty.actions.remove': 'Видалити',
|
||||
'settings.integrations.thirdParty.actions.refresh': 'Оновити',
|
||||
'settings.integrations.thirdParty.actions.docs': 'Документація',
|
||||
'settings.integrations.thirdParty.actions.managePlugins': 'Керувати плагінами',
|
||||
'settings.integrations.thirdParty.status.notInstalled': 'Не встановлено',
|
||||
@@ -393,7 +384,6 @@ export const thirdPartyIntegrationI18n = {
|
||||
'settings.integrations.thirdParty.actions.update': '更新',
|
||||
'settings.integrations.thirdParty.actions.setup': '设置',
|
||||
'settings.integrations.thirdParty.actions.remove': '移除',
|
||||
'settings.integrations.thirdParty.actions.refresh': '刷新',
|
||||
'settings.integrations.thirdParty.actions.docs': '文档',
|
||||
'settings.integrations.thirdParty.actions.managePlugins': '管理插件',
|
||||
'settings.integrations.thirdParty.status.notInstalled': '未安装',
|
||||
@@ -435,7 +425,6 @@ export const thirdPartyIntegrationI18n = {
|
||||
'settings.integrations.thirdParty.actions.update': '更新',
|
||||
'settings.integrations.thirdParty.actions.setup': '設定',
|
||||
'settings.integrations.thirdParty.actions.remove': '移除',
|
||||
'settings.integrations.thirdParty.actions.refresh': '重新整理',
|
||||
'settings.integrations.thirdParty.actions.docs': '文件',
|
||||
'settings.integrations.thirdParty.actions.managePlugins': '管理外掛',
|
||||
'settings.integrations.thirdParty.status.notInstalled': '未安裝',
|
||||
|
||||
Reference in New Issue
Block a user