1- import React , { useEffect , useState } from "react" ;
2- import { Card , Divider , Typography , Grid } from "@arco-design/web-react" ;
3- import { DatabaseConnectionConfig } from "../../../types" ;
4- import axios from "axios" ;
1+ import React from "react" ;
2+ import { Card , Divider , Typography , Grid , Skeleton } from "@arco-design/web-react" ;
53import Redis from "./blocks/redis" ;
64import Postgres from "./blocks/postgre" ;
75import CreateDatabase from "./create-database-editor" ;
6+ import { useDatabase } from "@/api" ;
87
98
109const { Row, Col } = Grid ;
1110const { Title } = Typography ;
1211
1312const Overview = ( ) => {
1413
15- // TODO extract to a hook
16- const [ data , setData ] = useState < DatabaseConnectionConfig [ ] > ( [ ] ) ;
17-
18- const fetchData = ( ) => {
19- axios . get ( '/admin/v1/database' ) . then ( ( res ) => {
20- setData ( res . data . dataSourceConfig ) ;
21- } ) ;
22- }
14+ const { database, isLoading} = useDatabase ( ) ;
2315
24- useEffect ( ( ) => {
25- fetchData ( )
26- } , [ ] ) ;
2716 return (
2817 < Card >
2918 < Typography . Title heading = { 5 } >
@@ -34,36 +23,40 @@ const Overview = () => {
3423
3524 < Title heading = { 6 } > Redis</ Title >
3625
37- < Row >
26+ < Row gutter = { 20 } >
27+ < Skeleton loading = { isLoading } text = { { rows : 2 , width : 60 } } animation >
3828 {
39- data
29+ database
4030 . filter ( ( item ) => item . databaseType === 'redis' )
4131 . map ( ( item ) => (
4232 < Col key = { `database-item-${ item . id } ` } span = { 6 } >
4333 < Redis config = { item } />
4434 </ Col >
4535 ) )
4636 }
37+ </ Skeleton >
4738 </ Row >
4839
4940 < Divider />
5041
5142 < div >
5243 < Title heading = { 6 } > Postgres</ Title >
5344
54- < Row >
55- {
56- data
57- . filter ( ( item ) => item . databaseType === 'postgres' )
58- . map ( ( item ) => (
59- < >
60- < Col key = { item . id } span = { 6 } >
61- < Postgres config = { item } />
62- </ Col >
63- </ >
64- ) )
65- }
66- </ Row >
45+ < Row gutter = { 20 } >
46+ < Skeleton loading = { isLoading } text = { { rows : 2 , width : 60 } } animation >
47+ {
48+ database
49+ . filter ( ( item ) => item . databaseType === 'postgres' )
50+ . map ( ( item ) => (
51+ < >
52+ < Col key = { item . id } span = { 6 } >
53+ < Postgres config = { item } />
54+ </ Col >
55+ </ >
56+ ) )
57+ }
58+ </ Skeleton >
59+ </ Row >
6760 </ div >
6861
6962
0 commit comments