All files / src/providers client.tsx

0% Statements 0/10
0% Branches 0/4
0% Functions 0/3
0% Lines 0/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57                                                                                                                 
'use client';
 
import { ApolloProvider as ApolloProviderBase } from '@apollo/client/react';
import { SessionProvider } from 'next-auth/react';
import { NextIntlClientProvider } from 'next-intl';
import type { FC } from 'react';
import { useEffect } from 'react';
import { Provider as ReduxProvider, useDispatch } from 'react-redux';
import { apolloClient } from '@/lib/apollo/client';
import { store } from '@/lib/store';
import { setLocale } from '@/lib/store/global';
import type { ClientProvidersProps, Locale } from '@/types/common';
import { MetadataProvider } from './MetadataProvider';
import { MantineProviderWrapper } from './mantine/mantine';
 
const ClientProvidersInner: FC<ClientProvidersProps> = ({
  children,
  messages,
  locale,
}) => {
  const dispatch = useDispatch();
 
  useEffect(() => {
    if (locale) {
      dispatch(setLocale(locale as Locale));
    }
  }, [locale, dispatch]);
 
  const currentMessages = messages[locale] || messages.en;
 
  return (
    <NextIntlClientProvider
      locale={locale}
      messages={currentMessages}
      timeZone="Europe/Budapest"
    >
      <MantineProviderWrapper>
        <MetadataProvider>{children}</MetadataProvider>
      </MantineProviderWrapper>
    </NextIntlClientProvider>
  );
};
 
export const ClientProviders: FC<ClientProvidersProps> = (props) => {
  return (
    <SessionProvider>
      <ApolloProviderBase client={apolloClient}>
        <ReduxProvider store={store}>
          <ClientProvidersInner {...props} />
        </ReduxProvider>
      </ApolloProviderBase>
    </SessionProvider>
  );
};
 
export default ClientProviders;