Teal.fm frontend powered by slices.network tealfm-slices.wisp.place
tealfm slices
1import { StrictMode, Suspense } from "react"; 2import { createRoot } from "react-dom/client"; 3import { BrowserRouter, Routes, Route } from "react-router-dom"; 4import "./index.css"; 5import App from "./App.tsx"; 6import Profile from "./Profile.tsx"; 7import LoadingFallback from "./LoadingFallback.tsx"; 8import { RelayEnvironmentProvider } from "react-relay"; 9import { Environment, Network, type FetchFunction } from "relay-runtime"; 10 11const HTTP_ENDPOINT = 12 "https://api.slices.network/graphql?slice=at://did:plc:fpruhuo22xkm5o7ttr2ktxdo/network.slices.slice/3m257yljpbg2a"; 13 14const fetchGraphQL: FetchFunction = async (request, variables) => { 15 const resp = await fetch(HTTP_ENDPOINT, { 16 method: "POST", 17 headers: { "Content-Type": "application/json" }, 18 body: JSON.stringify({ query: request.text, variables }), 19 }); 20 if (!resp.ok) { 21 throw new Error("Response failed."); 22 } 23 return await resp.json(); 24}; 25 26const environment = new Environment({ 27 network: Network.create(fetchGraphQL), 28}); 29 30createRoot(document.getElementById("root")!).render( 31 <StrictMode> 32 <BrowserRouter> 33 <RelayEnvironmentProvider environment={environment}> 34 <Suspense fallback={<LoadingFallback />}> 35 <Routes> 36 <Route path="/" element={<App />} /> 37 <Route path="/profile/:handle" element={<Profile />} /> 38 </Routes> 39 </Suspense> 40 </RelayEnvironmentProvider> 41 </BrowserRouter> 42 </StrictMode> 43);