diff --git a/src/pages/dex/trading/find-pair/index.tsx b/src/pages/dex/trading/find-pair/index.tsx new file mode 100644 index 0000000..24f94cf --- /dev/null +++ b/src/pages/dex/trading/find-pair/index.tsx @@ -0,0 +1,51 @@ +import { GetServerSideProps } from 'next'; + +import { findPairID } from '@/utils/methods'; +import styles from '@/styles/404.module.scss'; + +const API_URL = process.env.NEXT_PUBLIC_API_URL; + +export const getServerSideProps: GetServerSideProps = async (context) => { + const { first, second } = context.query; + + if (!first || !second) { + return { + notFound: true, // Show a 404 page if parameters are missing + }; + } + + try { + const idFound = await findPairID(first as string, second as string, API_URL); + + console.log('ID found:', idFound); + + if (typeof idFound === 'number') { + return { + redirect: { + destination: `/dex/trading/${idFound}`, + permanent: false, + }, + }; + } + + return { + notFound: true, + }; + } catch (error) { + console.error('Error fetching pair ID:', error); + return { + props: { + error: 'Failed to resolve the pair.', + }, + }; + } +}; + +const Page = ({ error }: { error?: string }) => { + return ( +
+

Error: {error}

+
+ ); +}; +export default Page; diff --git a/src/styles/FindPair.module.scss b/src/styles/FindPair.module.scss new file mode 100644 index 0000000..13e1f82 --- /dev/null +++ b/src/styles/FindPair.module.scss @@ -0,0 +1,6 @@ +.title { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} diff --git a/src/utils/methods.ts b/src/utils/methods.ts index 89d6a41..5e86cfb 100644 --- a/src/utils/methods.ts +++ b/src/utils/methods.ts @@ -81,7 +81,7 @@ export async function findPairID( second: string, host: string | undefined = undefined, ): Promise { - const findPairURL = `${host ? `https://${host}` : ''}/api/dex/find-pair`; + const findPairURL = `${host ?? ''}/api/dex/find-pair`; console.log('Find pair URL:', findPairURL);