2023-02-21 10:34:30 +00:00
|
|
|
import "@saleor/apps-shared/src/globals.css";
|
2023-02-21 14:31:52 +00:00
|
|
|
import "../styles/globals.css";
|
2023-02-07 19:25:36 +00:00
|
|
|
import { AppBridge, AppBridgeProvider } from "@saleor/app-sdk/app-bridge";
|
|
|
|
import { RoutePropagator } from "@saleor/app-sdk/app-bridge/next";
|
2023-02-21 10:34:30 +00:00
|
|
|
import React, { useEffect } from "react";
|
2023-02-07 19:25:36 +00:00
|
|
|
import { AppProps } from "next/app";
|
|
|
|
|
|
|
|
import GraphQLProvider from "../providers/GraphQLProvider";
|
|
|
|
import { ThemeSynchronizer } from "../lib/theme-synchronizer";
|
|
|
|
import { NoSSRWrapper } from "../lib/no-ssr-wrapper";
|
|
|
|
import { trpcClient } from "../modules/trpc/trpc-client";
|
2023-02-21 10:34:30 +00:00
|
|
|
import { MacawThemeProvider } from "@saleor/apps-shared";
|
2023-02-07 19:25:36 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Ensure instance is a singleton.
|
|
|
|
* TODO: This is React 18 issue, consider hiding this workaround inside app-sdk
|
|
|
|
*/
|
|
|
|
export const appBridgeInstance = typeof window !== "undefined" ? new AppBridge() : undefined;
|
|
|
|
|
|
|
|
function NextApp({ Component, pageProps }: AppProps) {
|
|
|
|
/**
|
|
|
|
* Configure JSS (used by MacawUI) for SSR. If Macaw is not used, can be removed.
|
|
|
|
*/
|
|
|
|
useEffect(() => {
|
|
|
|
const jssStyles = document.querySelector("#jss-server-side");
|
|
|
|
if (jssStyles) {
|
|
|
|
jssStyles?.parentElement?.removeChild(jssStyles);
|
|
|
|
}
|
|
|
|
}, []);
|
|
|
|
|
|
|
|
return (
|
|
|
|
<NoSSRWrapper>
|
|
|
|
<AppBridgeProvider appBridgeInstance={appBridgeInstance}>
|
|
|
|
<GraphQLProvider>
|
2023-02-21 10:34:30 +00:00
|
|
|
<MacawThemeProvider>
|
2023-02-07 19:25:36 +00:00
|
|
|
<ThemeSynchronizer />
|
|
|
|
<RoutePropagator />
|
|
|
|
<Component {...pageProps} />
|
2023-02-21 10:34:30 +00:00
|
|
|
</MacawThemeProvider>
|
2023-02-07 19:25:36 +00:00
|
|
|
</GraphQLProvider>
|
|
|
|
</AppBridgeProvider>
|
|
|
|
</NoSSRWrapper>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
export default trpcClient.withTRPC(NextApp);
|