feat: app custom

pull/198/head
金伟强 3 years ago
parent 78fbbded1a
commit 1523684bb9

@ -6,7 +6,8 @@ import ExploreContext from '@/context/explore-context'
import { App } from '@/models/explore' import { App } from '@/models/explore'
import Category from '@/app/components/explore/category' import Category from '@/app/components/explore/category'
import AppCard from '@/app/components/explore/app-card' import AppCard from '@/app/components/explore/app-card'
import { fetchAppList, installApp } from '@/service/explore' import { fetchAppList, installApp, fetchAppDetail } from '@/service/explore'
import { createApp } from '@/service/apps'
import CreateAppModal from '@/app/components/explore/create-app-modal' import CreateAppModal from '@/app/components/explore/create-app-modal'
import Loading from '@/app/components/base/loading' import Loading from '@/app/components/base/loading'
@ -43,10 +44,23 @@ const Apps: FC = ({ }) => {
setControlUpdateInstalledApps(Date.now()) setControlUpdateInstalledApps(Date.now())
} }
const [currApp, setCurrApp] = React.useState<any>(null) const [currApp, setCurrApp] = React.useState<App | null>(null)
const [isShowCreateModal, setIsShowCreateModal] = React.useState(false) const [isShowCreateModal, setIsShowCreateModal] = React.useState(false)
const onCreate = ({name}: any) => { const onCreate = async ({name}: any) => {
console.log({id: currApp.id, name}) const { app_model_config: model_config } = await fetchAppDetail(currApp?.app.id as string)
createApp({
name,
icon: '', // TODO
icon_background: '', // TODO
mode: currApp?.app.mode as any,
config: model_config,
})
Toast.notify({
type: 'success',
message: t('common.api.success'),
})
setIsShowCreateModal(false)
} }
if(!isLoaded) { if(!isLoaded) {
@ -93,7 +107,7 @@ const Apps: FC = ({ }) => {
{isShowCreateModal && ( {isShowCreateModal && (
<CreateAppModal <CreateAppModal
appName={currApp.name} appName={currApp?.app.name || ''}
show={isShowCreateModal} show={isShowCreateModal}
onConfirm={onCreate} onConfirm={onCreate}
onHide={() => setIsShowCreateModal(false)} onHide={() => setIsShowCreateModal(false)}

@ -16,8 +16,8 @@ export const fetchAppTemplates: Fetcher<AppTemplatesResponse, { url: string }> =
return get(url) as Promise<AppTemplatesResponse> return get(url) as Promise<AppTemplatesResponse>
} }
export const createApp: Fetcher<AppDetailResponse, { name: string; mode: AppMode; config?: ModelConfig }> = ({ name, mode, config }) => { export const createApp: Fetcher<AppDetailResponse, { name: string; mode: AppMode; icon?: string, icon_background?: string, config?: ModelConfig }> = ({ name, icon, icon_background, mode, config }) => {
return post('apps', { body: { name, mode, model_config: config } }) as Promise<AppDetailResponse> return post('apps', { body: { name, mode, icon, icon_background, model_config: config } }) as Promise<AppDetailResponse>
} }
export const deleteApp: Fetcher<CommonResponse, string> = (appID) => { export const deleteApp: Fetcher<CommonResponse, string> = (appID) => {

@ -4,6 +4,10 @@ export const fetchAppList = () => {
return get('/explore/apps') return get('/explore/apps')
} }
export const fetchAppDetail = (id: string) : Promise<any> => {
return get(`/explore/apps/${id}`)
}
export const fetchInstalledAppList = () => { export const fetchInstalledAppList = () => {
return get('/installed-apps') return get('/installed-apps')
} }

Loading…
Cancel
Save