mirror of https://github.com/cocosolos/ixion.git
Move api connection from Home to Header
This commit is contained in:
parent
08094b8683
commit
9b0a1701d4
|
|
@ -36,14 +36,7 @@ export function App() {
|
||||||
<Routes>
|
<Routes>
|
||||||
<Route
|
<Route
|
||||||
path="/"
|
path="/"
|
||||||
element={
|
element={<Home servers={servers} searchState={searchState} />}
|
||||||
<Home
|
|
||||||
servers={servers}
|
|
||||||
setServers={setServers}
|
|
||||||
searchState={searchState}
|
|
||||||
setAlertInfo={setAlertInfo}
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
/>
|
/>
|
||||||
<Route
|
<Route
|
||||||
path="/server/:id"
|
path="/server/:id"
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,10 @@ export const fetchDemo = async () => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const fetchData = async (dir = 'servers', queryParams = {}) => {
|
export const fetchDataFromBackend = async (
|
||||||
|
dir = 'servers',
|
||||||
|
queryParams = {}
|
||||||
|
) => {
|
||||||
const queryString = new URLSearchParams(queryParams).toString();
|
const queryString = new URLSearchParams(queryParams).toString();
|
||||||
const url = `${import.meta.env.PROD ? 'https://api.ixion.dev' : 'http://localhost:8000'}/${dir}/${queryString ? `?${queryString}` : ''}`;
|
const url = `${import.meta.env.PROD ? 'https://api.ixion.dev' : 'http://localhost:8000'}/${dir}/${queryString ? `?${queryString}` : ''}`;
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,9 @@ import {
|
||||||
Typography,
|
Typography,
|
||||||
} from '@mui/material';
|
} from '@mui/material';
|
||||||
import IconButton from '@mui/material/IconButton';
|
import IconButton from '@mui/material/IconButton';
|
||||||
import { useState } from 'react';
|
import { useCallback, useEffect, useState } from 'react';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
import { fetchData } from '../apiUtil';
|
import { fetchDataFromBackend } from '../apiUtil';
|
||||||
import SearchState from '../data/SearchState';
|
import SearchState from '../data/SearchState';
|
||||||
import ServerData from '../data/ServerData';
|
import ServerData from '../data/ServerData';
|
||||||
import AddServer from './AddServer';
|
import AddServer from './AddServer';
|
||||||
|
|
@ -36,11 +36,11 @@ export default function Header({
|
||||||
setShowSearchServer((prev) => !prev);
|
setShowSearchServer((prev) => !prev);
|
||||||
};
|
};
|
||||||
|
|
||||||
const fetchServerData = async () => {
|
const fetchServerData = useCallback(async () => {
|
||||||
let data: ServerData[] = [];
|
let data: ServerData[] = [];
|
||||||
try {
|
try {
|
||||||
setFetchLoading(25);
|
setFetchLoading(25);
|
||||||
data = await fetchData();
|
data = await fetchDataFromBackend();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (err instanceof Error) {
|
if (err instanceof Error) {
|
||||||
setAlertInfo({
|
setAlertInfo({
|
||||||
|
|
@ -59,7 +59,11 @@ export default function Header({
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
setFetchLoading(0);
|
setFetchLoading(0);
|
||||||
}, 500);
|
}, 500);
|
||||||
};
|
}, [setFetchLoading, setAlertInfo, setServers]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
fetchServerData();
|
||||||
|
}, [fetchServerData]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Box>
|
<Box>
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import { Info } from '@mui/icons-material';
|
||||||
import { Card, IconButton, Tooltip, Typography } from '@mui/material';
|
import { Card, IconButton, Tooltip, Typography } from '@mui/material';
|
||||||
import Modal from '@mui/material/Modal';
|
import Modal from '@mui/material/Modal';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import { fetchData } from '../apiUtil';
|
import { fetchDataFromBackend } from '../apiUtil';
|
||||||
import ServerData from '../data/ServerData';
|
import ServerData from '../data/ServerData';
|
||||||
import ServerSettingsDataGrid from './ServerSettingsDataGrid';
|
import ServerSettingsDataGrid from './ServerSettingsDataGrid';
|
||||||
|
|
||||||
|
|
@ -15,7 +15,7 @@ export default function ServerDetailsModal({ id }: { id: number }) {
|
||||||
let data: ServerData;
|
let data: ServerData;
|
||||||
const fetchServerData = async () => {
|
const fetchServerData = async () => {
|
||||||
try {
|
try {
|
||||||
data = await fetchData(`server/${id}`);
|
data = await fetchDataFromBackend(`server/${id}`);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (err instanceof Error) {
|
if (err instanceof Error) {
|
||||||
setError(err.message);
|
setError(err.message);
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,4 @@
|
||||||
import { Box } from '@mui/material';
|
import { Box } from '@mui/material';
|
||||||
import { useEffect, useState } from 'react';
|
|
||||||
import { fetchData } from '../apiUtil';
|
|
||||||
import { AlertResponse } from '../components/Alert';
|
|
||||||
import ErrorCard from '../components/ErrorCard';
|
import ErrorCard from '../components/ErrorCard';
|
||||||
import ServerCard from '../components/ServerCard';
|
import ServerCard from '../components/ServerCard';
|
||||||
import SearchState from '../data/SearchState';
|
import SearchState from '../data/SearchState';
|
||||||
|
|
@ -9,39 +6,11 @@ import ServerData from '../data/ServerData';
|
||||||
|
|
||||||
export default function Home({
|
export default function Home({
|
||||||
servers,
|
servers,
|
||||||
setServers,
|
|
||||||
searchState,
|
searchState,
|
||||||
setAlertInfo,
|
|
||||||
}: {
|
}: {
|
||||||
servers: ServerData[];
|
servers: ServerData[];
|
||||||
setServers: React.Dispatch<React.SetStateAction<ServerData[]>>;
|
|
||||||
searchState: SearchState;
|
searchState: SearchState;
|
||||||
setAlertInfo: React.Dispatch<React.SetStateAction<AlertResponse>>;
|
|
||||||
}) {
|
}) {
|
||||||
const [error, setError] = useState<string>('');
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
const fetchServerData = async () => {
|
|
||||||
let data: ServerData[] = [];
|
|
||||||
try {
|
|
||||||
data = await fetchData();
|
|
||||||
} catch (err) {
|
|
||||||
if (err instanceof Error) {
|
|
||||||
setAlertInfo({
|
|
||||||
message: err.message,
|
|
||||||
severity: 'error',
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
setError('An unknown error occurred.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
setServers(data);
|
|
||||||
};
|
|
||||||
|
|
||||||
fetchServerData();
|
|
||||||
}, [setAlertInfo, setServers]);
|
|
||||||
|
|
||||||
const filterServers = (server: ServerData): boolean => {
|
const filterServers = (server: ServerData): boolean => {
|
||||||
if (searchState.name.length > 0) {
|
if (searchState.name.length > 0) {
|
||||||
const serverName = server.name.toLowerCase();
|
const serverName = server.name.toLowerCase();
|
||||||
|
|
@ -156,8 +125,8 @@ export default function Home({
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Box>
|
<Box>
|
||||||
{error || filteredServers.length === 0 ? (
|
{filteredServers.length === 0 ? (
|
||||||
<ErrorCard error={error} />
|
<ErrorCard error="" />
|
||||||
) : (
|
) : (
|
||||||
filteredServers.map((server: ServerData) => (
|
filteredServers.map((server: ServerData) => (
|
||||||
<ServerCard key={server.id} server={server} />
|
<ServerCard key={server.id} server={server} />
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ import {
|
||||||
} from '@mui/material';
|
} from '@mui/material';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { Link, useParams } from 'react-router-dom';
|
import { Link, useParams } from 'react-router-dom';
|
||||||
import { fetchData, fetchDemo } from '../apiUtil';
|
import { fetchDataFromBackend, fetchDemo } from '../apiUtil';
|
||||||
import { AlertResponse } from '../components/Alert';
|
import { AlertResponse } from '../components/Alert';
|
||||||
import ErrorCard from '../components/ErrorCard';
|
import ErrorCard from '../components/ErrorCard';
|
||||||
import ExpansionBar from '../components/ExpansionsBar';
|
import ExpansionBar from '../components/ExpansionsBar';
|
||||||
|
|
@ -41,7 +41,7 @@ export default function ServerDetails({
|
||||||
if (id === 'demo') {
|
if (id === 'demo') {
|
||||||
data = await fetchDemo();
|
data = await fetchDemo();
|
||||||
} else {
|
} else {
|
||||||
data = await fetchData(`server/${id}`);
|
data = await fetchDataFromBackend(`server/${id}`);
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (err instanceof Error) {
|
if (err instanceof Error) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue