fix: Support passing the default app mode when creating an app (#25142)
Co-authored-by: 王博 <wangbo@localhost.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
'use client'
|
'use client'
|
||||||
|
|
||||||
import { useCallback, useRef, useState } from 'react'
|
import { useCallback, useEffect, useRef, useState } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
|
|
||||||
import { useRouter } from 'next/navigation'
|
import { useRouter } from 'next/navigation'
|
||||||
@@ -35,14 +35,15 @@ type CreateAppProps = {
|
|||||||
onSuccess: () => void
|
onSuccess: () => void
|
||||||
onClose: () => void
|
onClose: () => void
|
||||||
onCreateFromTemplate?: () => void
|
onCreateFromTemplate?: () => void
|
||||||
|
defaultAppMode?: AppMode
|
||||||
}
|
}
|
||||||
|
|
||||||
function CreateApp({ onClose, onSuccess, onCreateFromTemplate }: CreateAppProps) {
|
function CreateApp({ onClose, onSuccess, onCreateFromTemplate, defaultAppMode }: CreateAppProps) {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const { push } = useRouter()
|
const { push } = useRouter()
|
||||||
const { notify } = useContext(ToastContext)
|
const { notify } = useContext(ToastContext)
|
||||||
|
|
||||||
const [appMode, setAppMode] = useState<AppMode>('advanced-chat')
|
const [appMode, setAppMode] = useState<AppMode>(defaultAppMode || 'advanced-chat')
|
||||||
const [appIcon, setAppIcon] = useState<AppIconSelection>({ type: 'emoji', icon: '🤖', background: '#FFEAD5' })
|
const [appIcon, setAppIcon] = useState<AppIconSelection>({ type: 'emoji', icon: '🤖', background: '#FFEAD5' })
|
||||||
const [showAppIconPicker, setShowAppIconPicker] = useState(false)
|
const [showAppIconPicker, setShowAppIconPicker] = useState(false)
|
||||||
const [name, setName] = useState('')
|
const [name, setName] = useState('')
|
||||||
@@ -55,6 +56,11 @@ function CreateApp({ onClose, onSuccess, onCreateFromTemplate }: CreateAppProps)
|
|||||||
|
|
||||||
const isCreatingRef = useRef(false)
|
const isCreatingRef = useRef(false)
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (appMode === 'chat' || appMode === 'agent-chat' || appMode === 'completion')
|
||||||
|
setIsAppTypeExpanded(true)
|
||||||
|
}, [appMode])
|
||||||
|
|
||||||
const onCreate = useCallback(async () => {
|
const onCreate = useCallback(async () => {
|
||||||
if (!appMode) {
|
if (!appMode) {
|
||||||
notify({ type: 'error', message: t('app.newApp.appTypeRequired') })
|
notify({ type: 'error', message: t('app.newApp.appTypeRequired') })
|
||||||
@@ -264,7 +270,7 @@ function CreateApp({ onClose, onSuccess, onCreateFromTemplate }: CreateAppProps)
|
|||||||
type CreateAppDialogProps = CreateAppProps & {
|
type CreateAppDialogProps = CreateAppProps & {
|
||||||
show: boolean
|
show: boolean
|
||||||
}
|
}
|
||||||
const CreateAppModal = ({ show, onClose, onSuccess, onCreateFromTemplate }: CreateAppDialogProps) => {
|
const CreateAppModal = ({ show, onClose, onSuccess, onCreateFromTemplate, defaultAppMode }: CreateAppDialogProps) => {
|
||||||
return (
|
return (
|
||||||
<FullScreenModal
|
<FullScreenModal
|
||||||
overflowVisible
|
overflowVisible
|
||||||
@@ -272,7 +278,7 @@ const CreateAppModal = ({ show, onClose, onSuccess, onCreateFromTemplate }: Crea
|
|||||||
open={show}
|
open={show}
|
||||||
onClose={onClose}
|
onClose={onClose}
|
||||||
>
|
>
|
||||||
<CreateApp onClose={onClose} onSuccess={onSuccess} onCreateFromTemplate={onCreateFromTemplate} />
|
<CreateApp onClose={onClose} onSuccess={onSuccess} onCreateFromTemplate={onCreateFromTemplate} defaultAppMode={defaultAppMode} />
|
||||||
</FullScreenModal>
|
</FullScreenModal>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -211,14 +211,14 @@ const List = () => {
|
|||||||
{(data && data[0].total > 0)
|
{(data && data[0].total > 0)
|
||||||
? <div className='relative grid grow grid-cols-1 content-start gap-4 px-12 pt-2 sm:grid-cols-1 md:grid-cols-2 xl:grid-cols-4 2xl:grid-cols-5 2k:grid-cols-6'>
|
? <div className='relative grid grow grid-cols-1 content-start gap-4 px-12 pt-2 sm:grid-cols-1 md:grid-cols-2 xl:grid-cols-4 2xl:grid-cols-5 2k:grid-cols-6'>
|
||||||
{isCurrentWorkspaceEditor
|
{isCurrentWorkspaceEditor
|
||||||
&& <NewAppCard ref={newAppCardRef} onSuccess={mutate} />}
|
&& <NewAppCard ref={newAppCardRef} onSuccess={mutate} selectedAppType={activeTab} />}
|
||||||
{data.map(({ data: apps }) => apps.map(app => (
|
{data.map(({ data: apps }) => apps.map(app => (
|
||||||
<AppCard key={app.id} app={app} onRefresh={mutate} />
|
<AppCard key={app.id} app={app} onRefresh={mutate} />
|
||||||
)))}
|
)))}
|
||||||
</div>
|
</div>
|
||||||
: <div className='relative grid grow grid-cols-1 content-start gap-4 overflow-hidden px-12 pt-2 sm:grid-cols-1 md:grid-cols-2 xl:grid-cols-4 2xl:grid-cols-5 2k:grid-cols-6'>
|
: <div className='relative grid grow grid-cols-1 content-start gap-4 overflow-hidden px-12 pt-2 sm:grid-cols-1 md:grid-cols-2 xl:grid-cols-4 2xl:grid-cols-5 2k:grid-cols-6'>
|
||||||
{isCurrentWorkspaceEditor
|
{isCurrentWorkspaceEditor
|
||||||
&& <NewAppCard ref={newAppCardRef} className='z-10' onSuccess={mutate} />}
|
&& <NewAppCard ref={newAppCardRef} className='z-10' onSuccess={mutate} selectedAppType={activeTab} />}
|
||||||
<Empty />
|
<Empty />
|
||||||
</div>}
|
</div>}
|
||||||
|
|
||||||
|
|||||||
@@ -26,12 +26,14 @@ export type CreateAppCardProps = {
|
|||||||
className?: string
|
className?: string
|
||||||
onSuccess?: () => void
|
onSuccess?: () => void
|
||||||
ref: React.RefObject<HTMLDivElement | null>
|
ref: React.RefObject<HTMLDivElement | null>
|
||||||
|
selectedAppType?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
const CreateAppCard = ({
|
const CreateAppCard = ({
|
||||||
ref,
|
ref,
|
||||||
className,
|
className,
|
||||||
onSuccess,
|
onSuccess,
|
||||||
|
selectedAppType,
|
||||||
}: CreateAppCardProps) => {
|
}: CreateAppCardProps) => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const { onPlanInfoChanged } = useProviderContext()
|
const { onPlanInfoChanged } = useProviderContext()
|
||||||
@@ -86,6 +88,7 @@ const CreateAppCard = ({
|
|||||||
setShowNewAppTemplateDialog(true)
|
setShowNewAppTemplateDialog(true)
|
||||||
setShowNewAppModal(false)
|
setShowNewAppModal(false)
|
||||||
}}
|
}}
|
||||||
|
defaultAppMode={selectedAppType !== 'all' ? selectedAppType as any : undefined}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{showNewAppTemplateDialog && (
|
{showNewAppTemplateDialog && (
|
||||||
|
|||||||
Reference in New Issue
Block a user