summaryrefslogtreecommitdiff
path: root/src/core/components/layouts/BasicLayout.jsx
blob: 2962a08b7508fd9905de585210e60aa4385de3bf (plain)
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import dynamic from 'next/dynamic';
import Image from 'next/image';
import { useEffect, useState } from 'react';
import axios from 'axios';

import whatsappUrl from '@/core/utils/whatsappUrl';
import odooApi from '@/core/api/odooApi';
import { useRouter } from 'next/router';
import { useProductContext } from '@/contexts/ProductContext';

const Navbar = dynamic(() => import('../elements/Navbar/Navbar'), {
  ssr: false,
});
const AnimationLayout = dynamic(() => import('./AnimationLayout'), {
  ssr: false,
});
const BasicFooter = dynamic(() => import('../elements/Footer/BasicFooter'), {
  ssr: false,
});

const BasicLayout = ({ children }) => {
  const [templateWA, setTemplateWA] = useState(null);
  const [payloadWA, setPayloadWa] = useState(null);
  const [urlPath, setUrlPath] = useState(null);

  const router = useRouter();

  const { product } = useProductContext();
  useEffect(() => {
    if (
      router.pathname === '/shop/product/[slug]' ||
      router.pathname === '/shop/product/variant/[slug]'
    ) {
      setPayloadWa({
        name: product?.name,
        manufacture: product?.manufacture.name,
        url: process.env.NEXT_PUBLIC_SELF_HOST + router.asPath,
      });
      setTemplateWA('product');

      setUrlPath(router.asPath);
    }
  }, [product, router]);

  useEffect(() => {
    const getIP = async () => {
      const ip = await odooApi('GET', '/api/ip-address');
      const data = {
        page_title: document.title,
        url: window.location.href,
        ip: ip,
      };
      axios.get(
        `/api/user-activity?page_title=${data.page_title}&url=${data.url}&ip=${data.ip}`
      );
    };
    getIP();
  }, []);
  return (
    <>
      <Navbar />
      <AnimationLayout>
        {children}
        <div className='fixed bottom-4 right-4 sm:bottom-14 sm:right-10 z-50'>
          <a
            href={whatsappUrl(templateWA, payloadWA, urlPath)}
            className='py-2 pl-3 pr-4 rounded-full bg-[#4FB84A] border border-green-300 flex items-center'
            rel='noopener noreferrer'
            target='_blank'
          >
            <Image
              src='/images/socials/WHATSAPP.svg'
              alt='Whatsapp'
              className='block sm:hidden'
              width={36}
              height={36}
            />
            <Image
              src='/images/socials/WHATSAPP.svg'
              alt='Whatsapp'
              className='hidden sm:block'
              width={44}
              height={44}
            />
            <span className='text-white font-bold ml-1.5'>Whatsapp</span>
          </a>
        </div>
      </AnimationLayout>
      <BasicFooter />
    </>
  );
};

export default BasicLayout;