diff --git a/web/app/components/plugins/plugin-detail-panel/subscription-list/create/oauth-client.tsx b/web/app/components/plugins/plugin-detail-panel/subscription-list/create/oauth-client.tsx index 375c6001b4..7ba6e393eb 100644 --- a/web/app/components/plugins/plugin-detail-panel/subscription-list/create/oauth-client.tsx +++ b/web/app/components/plugins/plugin-detail-panel/subscription-list/create/oauth-client.tsx @@ -1,6 +1,6 @@ 'use client' import Button from '@/app/components/base/button' -import Form from '@/app/components/base/form/form-scenarios/auth' +import { BaseForm } from '@/app/components/base/form/components/base' import type { FormRefObject } from '@/app/components/base/form/types' import Modal from '@/app/components/base/modal/modal' import Toast from '@/app/components/base/toast' @@ -18,7 +18,7 @@ import { RiClipboardLine, RiInformation2Fill, } from '@remixicon/react' -import React, { useEffect, useState } from 'react' +import React, { useEffect, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import { usePluginStore } from '../store' @@ -42,14 +42,24 @@ enum ClientTypeEnum { export const OAuthClientSettingsModal = ({ oauthConfig, onClose, showOAuthCreateModal }: Props) => { const { t } = useTranslation() const detail = usePluginStore(state => state.detail) + const { configured, custom_enabled, system_configured, params } = oauthConfig || {} const [subscriptionBuilder, setSubscriptionBuilder] = useState() const [authorizationStatus, setAuthorizationStatus] = useState() - const [clientType, setClientType] = useState(oauthConfig?.custom_enabled ? ClientTypeEnum.Custom : ClientTypeEnum.Default) + const [clientType, setClientType] = useState(((configured && !custom_enabled) || (!configured && system_configured)) ? ClientTypeEnum.Default : ClientTypeEnum.Custom) const clientFormRef = React.useRef(null) - const oauthClientSchema = detail?.declaration.trigger?.subscription_constructor?.oauth_schema?.client_schema || [] + const oauthClientSchema = useMemo(() => { + const clientSchema = detail?.declaration.trigger?.subscription_constructor?.oauth_schema?.client_schema || [] + const oauthConfigPramaKeys = Object.keys(params || {}) + for (const schema of clientSchema) { + if (oauthConfigPramaKeys.includes(schema.name)) + schema.default = params?.[schema.name] + } + return clientSchema + }, [detail, params]) + const providerName = detail?.provider || '' const { mutate: initiateOAuth } = useInitiateTriggerOAuth() const { mutate: verifyBuilder } = useVerifyTriggerSubscriptionBuilder() @@ -192,7 +202,7 @@ export const OAuthClientSettingsModal = ({ oauthConfig, onClose, showOAuthCreate } >
{t('pluginTrigger.subscription.addType.options.oauth.clientTitle')}
-
+ {oauthConfig?.system_configured &&
{[ClientTypeEnum.Default, ClientTypeEnum.Custom].map(option => ( ))} -
+
} {clientType === ClientTypeEnum.Custom && oauthConfig?.redirect_uri && (
@@ -232,10 +242,11 @@ export const OAuthClientSettingsModal = ({ oauthConfig, onClose, showOAuthCreate
)} {clientType === ClientTypeEnum.Custom && oauthClientSchema.length > 0 && ( -
)} diff --git a/web/app/components/workflow/block-selector/types.ts b/web/app/components/workflow/block-selector/types.ts index dcc40308a5..e990695b15 100644 --- a/web/app/components/workflow/block-selector/types.ts +++ b/web/app/components/workflow/block-selector/types.ts @@ -269,7 +269,9 @@ export type TriggerOAuthConfig = { params: { client_id: string client_secret: string + [key: string]: any } + system_configured: boolean } export type TriggerOAuthClientParams = {