| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 | 
							- import {
 -   memo,
 -   useCallback,
 -   useState,
 - } from 'react'
 - import { RiArrowDownSLine } from '@remixicon/react'
 - import { useTranslation } from 'react-i18next'
 - import Authorize from './authorize'
 - import Authorized from './authorized'
 - import type {
 -   Credential,
 -   PluginPayload,
 - } from './types'
 - import { usePluginAuth } from './hooks/use-plugin-auth'
 - import Button from '@/app/components/base/button'
 - import Indicator from '@/app/components/header/indicator'
 - import cn from '@/utils/classnames'
 - 
 - type PluginAuthInAgentProps = {
 -   pluginPayload: PluginPayload
 -   credentialId?: string
 -   onAuthorizationItemClick?: (id: string) => void
 - }
 - const PluginAuthInAgent = ({
 -   pluginPayload,
 -   credentialId,
 -   onAuthorizationItemClick,
 - }: PluginAuthInAgentProps) => {
 -   const { t } = useTranslation()
 -   const [isOpen, setIsOpen] = useState(false)
 -   const {
 -     isAuthorized,
 -     canOAuth,
 -     canApiKey,
 -     credentials,
 -     disabled,
 -     invalidPluginCredentialInfo,
 -     notAllowCustomCredential,
 -   } = usePluginAuth(pluginPayload, true)
 - 
 -   const extraAuthorizationItems: Credential[] = [
 -     {
 -       id: '__workspace_default__',
 -       name: t('plugin.auth.workspaceDefault'),
 -       provider: '',
 -       is_default: !credentialId,
 -       isWorkspaceDefault: true,
 -     },
 -   ]
 - 
 -   const handleAuthorizationItemClick = useCallback((id: string) => {
 -     onAuthorizationItemClick?.(id)
 -     setIsOpen(false)
 -   }, [
 -     onAuthorizationItemClick,
 -     setIsOpen,
 -   ])
 - 
 -   const renderTrigger = useCallback((isOpen?: boolean) => {
 -     let label = ''
 -     let removed = false
 -     let unavailable = false
 -     let color = 'green'
 -     if (!credentialId) {
 -       label = t('plugin.auth.workspaceDefault')
 -     }
 -     else {
 -       const credential = credentials.find(c => c.id === credentialId)
 -       label = credential ? credential.name : t('plugin.auth.authRemoved')
 -       removed = !credential
 -       unavailable = !!credential?.not_allowed_to_use && !credential?.from_enterprise
 -       if (removed)
 -         color = 'red'
 -       else if (unavailable)
 -         color = 'gray'
 -     }
 -     return (
 -       <Button
 -         className={cn(
 -           'w-full',
 -           isOpen && 'bg-components-button-secondary-bg-hover',
 -           removed && 'text-text-destructive',
 -         )}>
 -         <Indicator
 -           className='mr-2'
 -           color={color as any}
 -         />
 -         {label}
 -         {
 -           unavailable && t('plugin.auth.unavailable')
 -         }
 -         <RiArrowDownSLine className='ml-0.5 h-4 w-4' />
 -       </Button>
 -     )
 -   }, [credentialId, credentials, t])
 - 
 -   return (
 -     <>
 -       {
 -         !isAuthorized && (
 -           <Authorize
 -             pluginPayload={pluginPayload}
 -             canOAuth={canOAuth}
 -             canApiKey={canApiKey}
 -             disabled={disabled}
 -             onUpdate={invalidPluginCredentialInfo}
 -             notAllowCustomCredential={notAllowCustomCredential}
 -           />
 -         )
 -       }
 -       {
 -         isAuthorized && (
 -           <Authorized
 -             pluginPayload={pluginPayload}
 -             credentials={credentials}
 -             canOAuth={canOAuth}
 -             canApiKey={canApiKey}
 -             disabled={disabled}
 -             disableSetDefault
 -             onItemClick={handleAuthorizationItemClick}
 -             extraAuthorizationItems={extraAuthorizationItems}
 -             showItemSelectedIcon
 -             renderTrigger={renderTrigger}
 -             isOpen={isOpen}
 -             onOpenChange={setIsOpen}
 -             selectedCredentialId={credentialId || '__workspace_default__'}
 -             onUpdate={invalidPluginCredentialInfo}
 -             notAllowCustomCredential={notAllowCustomCredential}
 -           />
 -         )
 -       }
 -     </>
 -   )
 - }
 - 
 - export default memo(PluginAuthInAgent)
 
 
  |