diff --git a/service/src/airports/model.rs b/service/src/airports/model.rs index 8dd2e82..5641e57 100644 --- a/service/src/airports/model.rs +++ b/service/src/airports/model.rs @@ -190,8 +190,6 @@ pub enum QueryOrderField { Country, Region, Municipality, - Iata, - Local, } impl FromStr for QueryOrderField { @@ -204,8 +202,6 @@ impl FromStr for QueryOrderField { "iso_country" => Ok(QueryOrderField::Country), "iso_region" => Ok(QueryOrderField::Region), "municipality" => Ok(QueryOrderField::Municipality), - "iata_code" => Ok(QueryOrderField::Iata), - "local_code" => Ok(QueryOrderField::Local), _ => Err(()) } } @@ -229,8 +225,6 @@ impl QueryAirport { QueryOrderField::Country => format!("{}, iso_country ASC", query), QueryOrderField::Region => format!("{}, iso_region ASC", query), QueryOrderField::Municipality => format!("{}, municipality ASC", query), - QueryOrderField::Iata => format!("{}, iata_code ASC", query), - QueryOrderField::Local => format!("{}, local_code ASC", query), }; }; }, @@ -243,8 +237,6 @@ impl QueryAirport { QueryOrderField::Country => format!("{}, iso_country DESC", query), QueryOrderField::Region => format!("{}, iso_region DESC", query), QueryOrderField::Municipality => format!("{}, municipality DESC", query), - QueryOrderField::Iata => format!("{}, iata_code DESC", query), - QueryOrderField::Local => format!("{}, local_code DESC", query), }; }; } diff --git a/ui/src/api/airport.types.ts b/ui/src/api/airport.types.ts index f5d26b7..1682206 100644 --- a/ui/src/api/airport.types.ts +++ b/ui/src/api/airport.types.ts @@ -41,8 +41,6 @@ export enum AirportOrderField { ISO_COUNTRY = 'iso_country', ISO_REGION = 'iso_region', MUNICIPALITY = 'municipality', - IATA_CODE = 'iata_code', - LOCAL_CODE = 'local_code', } export interface Bounds { diff --git a/ui/src/app/admin/page.tsx b/ui/src/app/admin/page.tsx index 9a48920..4ee6c41 100644 --- a/ui/src/app/admin/page.tsx +++ b/ui/src/app/admin/page.tsx @@ -6,20 +6,12 @@ import CreateAirportPanel from "@/components/Admin/CreateAirportPanel"; import UpdateAirportModal from "@/components/Admin/UpdateAirportModal"; import { isAdminState } from "@/state/auth"; import { Container, Grid, SimpleGrid } from "@mantine/core"; -import { useRouter } from "next/navigation"; -import { useEffect, useState } from "react"; +import { useState } from "react"; import { useRecoilValue } from "recoil"; export default function Page() { const [airport, setAirport] = useState(undefined); const isAdmin = useRecoilValue(isAdminState); - const router = useRouter(); - - useEffect(() => { - if (!isAdmin) { - router.push('/'); - } - }, [airport]); return ( <> diff --git a/ui/src/app/layout.tsx b/ui/src/app/layout.tsx index d1e286b..82dd4c9 100644 --- a/ui/src/app/layout.tsx +++ b/ui/src/app/layout.tsx @@ -1,6 +1,6 @@ import React from 'react'; import RecoilRootWrapper from '@app/recoil-root-wrapper'; -import { MantineProvider } from '@mantine/core'; +import { MantineProvider, Skeleton } from '@mantine/core'; import { ModalsProvider } from '@mantine/modals'; import 'styles/globals.css'; import 'styles/leaflet.css'; @@ -24,9 +24,11 @@ export default function RootLayout({ children }: { children: React.ReactNode }) - - {children} - + }> + + {children} + + diff --git a/ui/src/app/profile/page.tsx b/ui/src/app/profile/page.tsx index 5f14b9c..8d9f360 100644 --- a/ui/src/app/profile/page.tsx +++ b/ui/src/app/profile/page.tsx @@ -16,13 +16,6 @@ import { userState } from "@/state/auth"; export default function Page() { const user = useRecoilValue(userState); - const router = useRouter(); - - useEffect(() => { - if (!user) { - router.push('/'); - } - }, []); return ( diff --git a/ui/src/components/Admin/AirportTablePanel.tsx b/ui/src/components/Admin/AirportTablePanel.tsx index 20547cb..07be768 100644 --- a/ui/src/components/Admin/AirportTablePanel.tsx +++ b/ui/src/components/Admin/AirportTablePanel.tsx @@ -44,8 +44,8 @@ export default function AirportTablePanel({ setAirport }: { setAirport: (airport {airport.iso_country} {airport.iso_region} {airport.municipality} - {airport.iata_code} - {airport.local_code} + {airport.iata} + {airport.local} )) diff --git a/ui/src/components/Admin/CreateAirportPanel.tsx b/ui/src/components/Admin/CreateAirportPanel.tsx index 93383bc..796210f 100644 --- a/ui/src/components/Admin/CreateAirportPanel.tsx +++ b/ui/src/components/Admin/CreateAirportPanel.tsx @@ -13,10 +13,14 @@ export default function CreateAirportPanel() { iso_country: '', iso_region: '', municipality: '', - iata_code: '', - local_code: '', + iata: '', + local: '', latitude: 0, longitude: 0, + has_tower: false, + has_beacon: false, + runways: [], + frequencies: [], } }); @@ -86,12 +90,12 @@ export default function CreateAirportPanel() { diff --git a/ui/src/components/Admin/UpdateAirportModal.tsx b/ui/src/components/Admin/UpdateAirportModal.tsx index 730b424..9be5f37 100644 --- a/ui/src/components/Admin/UpdateAirportModal.tsx +++ b/ui/src/components/Admin/UpdateAirportModal.tsx @@ -14,10 +14,14 @@ export default function UpdateAirportModal({ airport, setAirport }: { airport: A iso_country: airport?.iso_country || '', iso_region: airport?.iso_region || '', municipality: airport?.municipality || '', - iata_code: airport?.iata_code || '', - local_code: airport?.local_code || '', + iata: airport?.iata || '', + local: airport?.local || '', latitude: airport?.latitude || 0, longitude: airport?.longitude || 0, + has_tower: airport?.has_tower || false, + has_beacon: airport?.has_beacon || false, + runways: airport?.runways || [], + frequencies: airport?.frequencies || [], } }); @@ -97,13 +101,13 @@ export default function UpdateAirportModal({ airport, setAirport }: { airport: A required label='IATA Code' placeholder='HEF' - {...form.getInputProps('iata_code')} + {...form.getInputProps('iata')} /> diff --git a/ui/src/components/Loader.tsx b/ui/src/components/Loader.tsx index a93bfae..6afbb92 100644 --- a/ui/src/components/Loader.tsx +++ b/ui/src/components/Loader.tsx @@ -9,6 +9,7 @@ import { getFavorites, getPicture } from "@/api/users"; import Cookies from "js-cookie"; import { favoritesState, profilePictureState } from "@/state/user"; import { notifications } from "@mantine/notifications"; +import { usePathname, useRouter } from "next/navigation"; export default function Loader({ children }: { children: any }) { const [loading, setLoading] = useState(true); @@ -16,6 +17,8 @@ export default function Loader({ children }: { children: any }) { const [refreshId, setRefreshId] = useRecoilState(refreshIdState); const [_, setFavorites] = useRecoilState(favoritesState); const [profilePicture, setProfilePicture] = useRecoilState(profilePictureState); + const path = usePathname(); + const router = useRouter(); useEffect(() => { setLoading(true); @@ -25,6 +28,19 @@ export default function Loader({ children }: { children: any }) { setLoading(false); }, [user]); + useEffect(() => { + const p = path.split('/'); + console.log(p[1], user); + + if (p.length > 1) { + if (p[1] == 'admin' && user?.role != 'admin') { + router.push('/'); + } else if (p[1] == 'profile' && !user) { + router.push('/'); + } + } + }, [path]); + function refreshUser() { refresh().then((response) => { if (response) {