saleor-apps-redis_apl/apps/invoices/src/pages/_app.tsx

47 lines
1.5 KiB
TypeScript
Raw Normal View History

import "@saleor/apps-shared/src/globals.css";
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";
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";
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>
<MacawThemeProvider>
2023-02-07 19:25:36 +00:00
<ThemeSynchronizer />
<RoutePropagator />
<Component {...pageProps} />
</MacawThemeProvider>
2023-02-07 19:25:36 +00:00
</GraphQLProvider>
</AppBridgeProvider>
</NoSSRWrapper>
);
}
export default trpcClient.withTRPC(NextApp);