Commit fd018586 authored by StyleZhang's avatar StyleZhang

fix: create app & dataset in nav

parent ff7f161a
import { useCallback, useState } from 'react' import { useCallback, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useParams } from 'next/navigation' import { useParams } from 'next/navigation'
import useSWR from 'swr'
import useSWRInfinite from 'swr/infinite' import useSWRInfinite from 'swr/infinite'
import { flatten } from 'lodash-es' import { flatten } from 'lodash-es'
import Nav from '../nav' import Nav from '../nav'
import { fetchAppList } from '@/service/apps' import { fetchAppDetail, fetchAppList } from '@/service/apps'
import NewAppDialog from '@/app/(commonLayout)/apps/NewAppDialog' import NewAppDialog from '@/app/(commonLayout)/apps/NewAppDialog'
import { Container } from '@/app/components/base/icons/src/vender/line/development' import { Container } from '@/app/components/base/icons/src/vender/line/development'
import { Container as ContainerSolid } from '@/app/components/base/icons/src/vender/solid/development' import { Container as ContainerSolid } from '@/app/components/base/icons/src/vender/solid/development'
...@@ -20,15 +21,13 @@ const AppNav = () => { ...@@ -20,15 +21,13 @@ const AppNav = () => {
const { t } = useTranslation() const { t } = useTranslation()
const [showNewAppDialog, setShowNewAppDialog] = useState(false) const [showNewAppDialog, setShowNewAppDialog] = useState(false)
const { appId } = useParams() const { appId } = useParams()
const { data: appsData, isLoading, setSize } = useSWRInfinite(appId ? getKey : () => null, fetchAppList, { revalidateFirstPage: false }) const { data: currentApp } = useSWR(appId ? { url: '/apps', id: appId } : null, fetchAppDetail)
const { data: appsData, setSize } = useSWRInfinite(appId ? getKey : () => null, fetchAppList, { revalidateFirstPage: false })
const appItems = flatten(appsData?.map(appData => appData.data)) const appItems = flatten(appsData?.map(appData => appData.data))
const handleLoadmore = useCallback(() => { const handleLoadmore = useCallback(() => {
if (isLoading)
return
setSize(size => size + 1) setSize(size => size + 1)
}, [setSize, isLoading]) }, [setSize])
return ( return (
<> <>
...@@ -38,7 +37,7 @@ const AppNav = () => { ...@@ -38,7 +37,7 @@ const AppNav = () => {
text={t('common.menus.apps')} text={t('common.menus.apps')}
activeSegment={['apps', 'app']} activeSegment={['apps', 'app']}
link='/apps' link='/apps'
curNav={appItems.find(appItem => appItem.id === appId)} curNav={currentApp}
navs={appItems.map(item => ({ navs={appItems.map(item => ({
id: item.id, id: item.id,
name: item.name, name: item.name,
......
import { useCallback } from 'react' import { useCallback } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useParams, useRouter } from 'next/navigation' import { useParams, useRouter } from 'next/navigation'
import useSWR from 'swr'
import useSWRInfinite from 'swr/infinite' import useSWRInfinite from 'swr/infinite'
import { flatten } from 'lodash-es' import { flatten } from 'lodash-es'
import Nav from '../nav' import Nav from '../nav'
import { fetchDatasets } from '@/service/datasets' import { fetchDataDetail, fetchDatasets } from '@/service/datasets'
import { Database01 } from '@/app/components/base/icons/src/vender/line/development' import { Database01 } from '@/app/components/base/icons/src/vender/line/development'
import { Database02 } from '@/app/components/base/icons/src/vender/solid/development' import { Database02 } from '@/app/components/base/icons/src/vender/solid/development'
import type { DataSetListResponse } from '@/models/datasets' import type { DataSetListResponse } from '@/models/datasets'
...@@ -19,15 +20,13 @@ const DatasetNav = () => { ...@@ -19,15 +20,13 @@ const DatasetNav = () => {
const { t } = useTranslation() const { t } = useTranslation()
const router = useRouter() const router = useRouter()
const { datasetId } = useParams() const { datasetId } = useParams()
const { data: datasetsData, isLoading, setSize } = useSWRInfinite(datasetId ? getKey : () => null, fetchDatasets, { revalidateFirstPage: false }) const { data: currentDataset } = useSWR(datasetId || null, fetchDataDetail)
const { data: datasetsData, setSize } = useSWRInfinite(datasetId ? getKey : () => null, fetchDatasets, { revalidateFirstPage: true })
const datasetItems = flatten(datasetsData?.map(datasetData => datasetData.data)) const datasetItems = flatten(datasetsData?.map(datasetData => datasetData.data))
const handleLoadmore = useCallback(() => { const handleLoadmore = useCallback(() => {
if (isLoading)
return
setSize(size => size + 1) setSize(size => size + 1)
}, [setSize, isLoading]) }, [setSize])
return ( return (
<Nav <Nav
...@@ -36,7 +35,7 @@ const DatasetNav = () => { ...@@ -36,7 +35,7 @@ const DatasetNav = () => {
text={t('common.menus.datasets')} text={t('common.menus.datasets')}
activeSegment='datasets' activeSegment='datasets'
link='/datasets' link='/datasets'
curNav={datasetItems.find(datasetItem => datasetItem.id === datasetId)} curNav={currentDataset}
navs={datasetItems.map(dataset => ({ navs={datasetItems.map(dataset => ({
id: dataset.id, id: dataset.id,
name: dataset.name, name: dataset.name,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment