You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.js 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { Box } from '@mui/system';
  2. import { useSession } from 'next-auth/react';
  3. import { serverSideTranslations } from 'next-i18next/serverSideTranslations';
  4. import Head from 'next/head';
  5. import { useEffect } from 'react';
  6. import CompanyInfo from '../components/company-info/CompanyInfo';
  7. import Features from '../components/features/Features';
  8. import Hero from '../components/hero/Hero';
  9. import FeaturedProductsList from '../components/products/featured-products-list/FeaturedPorductsList';
  10. import { getFeaturedProducts } from '../requests/products/featuredProductsRequest';
  11. import { useUserUpdate } from '../store/user-context';
  12. import { getStorage } from '../utils/helpers/storage';
  13. const Home = (props) => {
  14. const { data: session } = useSession();
  15. const { addUser } = useUserUpdate();
  16. useEffect(() => {
  17. const userData = getStorage('user-data');
  18. if (session?.user && userData.length === 0) {
  19. addUser(session.user);
  20. }
  21. }, [session, addUser]);
  22. return (
  23. <>
  24. <Box sx={{ width: '100%', height: '100%' }}>
  25. <Head>
  26. <title>Coffee Shop</title>
  27. <meta name="description" content="Random data with pagination..." />
  28. </Head>
  29. <Hero />
  30. <FeaturedProductsList
  31. featuredProducts={props.featuredProducts}
  32. ></FeaturedProductsList>
  33. <Features />
  34. <CompanyInfo />
  35. </Box>
  36. </>
  37. );
  38. };
  39. export async function getStaticProps({ locale }) {
  40. try {
  41. const { featuredProducts } = await getFeaturedProducts();
  42. return {
  43. props: {
  44. ...(await serverSideTranslations(locale, ['home'])),
  45. featuredProducts,
  46. },
  47. };
  48. } catch (error) {
  49. return {
  50. props: {
  51. ...(await serverSideTranslations(locale, ['home'])),
  52. featuredProducts: [],
  53. },
  54. };
  55. }
  56. }
  57. export default Home;