Untitled

 avatar
unknown
javascript
3 years ago
3.6 kB
3
Indexable
import {
    basePath,
    domainApp,
    HREFLANG_BY_CLIENT,
    pathname as pathnameConst,
    productionEnv,
    uhfEnv,
} from "@services/constant";
import Head from "next/head";
import React from "react";
import { useRouter } from "next/router";
import NextHeadProptypes from "./NextHead.propstypes";
const NextHead = ({ config, image, preloadLinks }) => {
    const router = useRouter();
    const pathname = config?.url?.substring(6, config.url.length) || "";
    return (
        <Head>
            <meta charSet="utf-8" />
            <title key="title">{config.title}</title>
            <meta
                key="robots"
                name="robots"
                content={`${
                    uhfEnv === productionEnv
                        ? "index,follow"
                        : "noindex,nofollow"
                }`}
            />
            <meta
                name="viewport"
                content="initial-scale=1.0, width=device-width"
            />
            <link
                rel="canonical"
                href={domainApp + config.canonical}
                key="canonical"
            />
            ,
            <meta key="og:title" property="og:title" content={config.title} />
            <meta
                key="twitter:title"
                property="twitter:title"
                content={config.ogTitle ? config.ogTitle : config.title}
            />
            <meta
                key="description"
                name="description"
                content={config.description}
            />
            <meta
                key="og:description"
                property="og:description"
                content={config.description}
            />
            <meta
                key="twitter:description"
                name="twitter:description"
                content={config.description}
            />
            <meta key="twitter:site" name="twitter:site" content="@airasia" />
            <meta key="twitter:card" name="twitter:card" content="summary" />
            <meta
                key="og:url"
                property="og:url"
                content={domainApp + config.url || domainApp + config.canonical}
            />
            <meta key="keywords" name="keywords" content={config.keywords} />
            <meta key={`og:image`} property="og:image" content={image} />
            <meta key="twitter:image" name="twitter:image" content={image} />
            <meta key="og:type" property="og:type" content={`website`} />
            <link rel="manifest" href="/static/manifest/manifest.json" />
            {router.pathname === pathnameConst.HOME_PAGE &&
                HREFLANG_BY_CLIENT?.map(({ hrefLang, url }) => {
                    return (
                        <link
                            rel="alternate"
                            key={`languageAlternate-${hrefLang}`}
                            hrefLang={hrefLang}
                            href={domainApp + url + (pathname ? pathname : "")}
                        />
                    );
                })}
            <link
                id="favicon"
                rel="shortcut icon"
                href={`${basePath}/images/favicon.ico`}
                type="image/png"
            />
            {preloadLinks &&
                preloadLinks.map((link, i) => (
                    <link key={i} rel="preload" as="image" href={link} />
                ))}
        </Head>
    );
};

NextHead.propTypes = NextHeadProptypes.PropTypes;
NextHead.defaultProps = NextHeadProptypes.default;

export default NextHead;