48
apps/console/src/RelayEnvironment.ts
Normal file
48
apps/console/src/RelayEnvironment.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import {
|
||||
Environment,
|
||||
FetchFunction,
|
||||
Network,
|
||||
RecordSource,
|
||||
Store,
|
||||
} from "relay-runtime";
|
||||
import { buildEndpoint } from "./utils";
|
||||
|
||||
const fetchRelay: FetchFunction = async (request, variables) => {
|
||||
const response = await fetch(buildEndpoint("/console/v1/query"), {
|
||||
method: "POST",
|
||||
credentials: "include",
|
||||
headers: {
|
||||
Accept:
|
||||
"application/graphql-response+json; charset=utf-8, application/json; charset=utf-8",
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
body: JSON.stringify({
|
||||
operationName: request.name,
|
||||
query: request.text,
|
||||
variables,
|
||||
}),
|
||||
});
|
||||
|
||||
const json = await response.json();
|
||||
|
||||
if (Array.isArray(json.errors)) {
|
||||
throw new Error(
|
||||
`Error fetching GraphQL query '${
|
||||
request.name
|
||||
}' with variables '${JSON.stringify(variables)}': ${JSON.stringify(
|
||||
json.errors,
|
||||
)}`,
|
||||
);
|
||||
}
|
||||
|
||||
return json;
|
||||
};
|
||||
|
||||
function createRelayEnvironment() {
|
||||
return new Environment({
|
||||
network: Network.create(fetchRelay),
|
||||
store: new Store(new RecordSource()),
|
||||
});
|
||||
}
|
||||
|
||||
export const RelayEnvironment: Environment = createRelayEnvironment();
|
||||
Reference in New Issue
Block a user