diff --git a/client-next/src/hooks/useServerInfo.ts b/client-next/src/hooks/useServerInfo.ts index 54bc67c0db7..23ee23fc283 100644 --- a/client-next/src/hooks/useServerInfo.ts +++ b/client-next/src/hooks/useServerInfo.ts @@ -2,8 +2,7 @@ import { useEffect, useState } from 'react'; import { graphql } from '../gql'; import { request } from 'graphql-request'; // eslint-disable-line import/no-unresolved import { QueryType } from '../gql/graphql.ts'; - -const endpoint = import.meta.env.VITE_API_URL; +import { getApiUrl } from '../util/getApiUrl.ts'; const query = graphql(` query serverInfo { @@ -22,7 +21,7 @@ export const useServerInfo = () => { const [data, setData] = useState(null); useEffect(() => { const fetchData = async () => { - setData((await request(endpoint, query)) as QueryType); + setData((await request(getApiUrl(), query)) as QueryType); }; fetchData(); }, []); diff --git a/client-next/src/hooks/useTripQuery.ts b/client-next/src/hooks/useTripQuery.ts index e96a04d7cc3..c9672d0b6d2 100644 --- a/client-next/src/hooks/useTripQuery.ts +++ b/client-next/src/hooks/useTripQuery.ts @@ -2,8 +2,7 @@ import { useCallback, useEffect, useState } from 'react'; import { graphql } from '../gql'; import { request } from 'graphql-request'; // eslint-disable-line import/no-unresolved import { QueryType, TripQueryVariables } from '../gql/graphql.ts'; - -const endpoint = import.meta.env.VITE_API_URL; +import { getApiUrl } from '../util/getApiUrl.ts'; /** General purpose trip query document for debugging trip searches @@ -96,9 +95,9 @@ export const useTripQuery: TripQueryHook = (variables) => { if (variables) { setLoading(true); if (pageCursor) { - setData((await request(endpoint, query, { ...variables, pageCursor })) as QueryType); + setData((await request(getApiUrl(), query, { ...variables, pageCursor })) as QueryType); } else { - setData((await request(endpoint, query, variables)) as QueryType); + setData((await request(getApiUrl(), query, variables)) as QueryType); } setLoading(false); } else { diff --git a/client-next/src/util/getApiUrl.ts b/client-next/src/util/getApiUrl.ts new file mode 100644 index 00000000000..34d25068342 --- /dev/null +++ b/client-next/src/util/getApiUrl.ts @@ -0,0 +1,12 @@ +const endpoint = import.meta.env.VITE_API_URL; + +export const getApiUrl = () => { + try { + // the URL constructor will throw exception if endpoint is not a valid URL, + // e.g. if it is a relative path + new URL(endpoint); + return endpoint; + } catch (e) { + return `${window.location.origin}${endpoint}`; + } +};