import { memo, useCallback, useState, } from 'react' import { RiEqualizer2Line } from '@remixicon/react' import Button from '@/app/components/base/button' import type { ButtonProps } from '@/app/components/base/button' import OAuthClientSettings from './oauth-client-settings' import cn from '@/utils/classnames' import type { PluginPayload } from '../types' import { openOAuthPopup } from '@/hooks/use-oauth' import { useGetPluginOAuthUrlHook, } from '../hooks/use-credential' export type AddOAuthButtonProps = { pluginPayload: PluginPayload buttonVariant?: ButtonProps['variant'] buttonText?: string className?: string buttonLeftClassName?: string buttonRightClassName?: string dividerClassName?: string disabled?: boolean } const AddOAuthButton = ({ pluginPayload, buttonVariant = 'primary', buttonText = 'use oauth', className, buttonLeftClassName, buttonRightClassName, dividerClassName, disabled, }: AddOAuthButtonProps) => { const [isOAuthSettingsOpen, setIsOAuthSettingsOpen] = useState(false) const { mutateAsync: getPluginOAuthUrl } = useGetPluginOAuthUrlHook(pluginPayload) const handleOAuth = useCallback(async () => { const { authorization_url } = await getPluginOAuthUrl() if (authorization_url) { openOAuthPopup( authorization_url, () => { console.log('success') }, ) } }, [getPluginOAuthUrl]) return ( <> {buttonText} { e.stopPropagation() setIsOAuthSettingsOpen(true) }} > { isOAuthSettingsOpen && ( setIsOAuthSettingsOpen(false)} disabled={disabled} /> ) } > ) } export default memo(AddOAuthButton)