/* eslint-disable react/no-danger */ import dynamic from 'next/dynamic'; import { END } from 'redux-saga'; import { useEffect, useMemo } from 'react'; import { actions, GET_DETAIL_PROJECT } from '@containers/Home/slice'; import { wrapper, SagaStore } from 'store'; import { NextSeo } from 'next-seo'; import { useRouter } from 'next/router'; import { useDispatch, useSelector } from 'react-redux'; import { selectConfigLittlePlanetProject, selectConfigFirstSceneProject, selectFirstSceneMediaProject, selectGATagTrackingProject, selectFeatureImageProject, selectGATrackingProject, selectThumbnailProject, selectMetaDataProject, selectTitleProject, selectListScene, } from '@containers/Home/selectors'; import Script from 'next/script'; import { LIST_FAVICON_DEFAULT, LIST_LINK_STYLE_SHEET, } from '@containers/Home/constants'; const Home = dynamic(() => import('containers/Home'), { loading: () => Loading, ssr: false, }); function PublicContainer() { const router = useRouter(); const dispatch = useDispatch(); const title = useSelector(selectTitleProject); const listScene = useSelector(selectListScene); const metadata = useSelector(selectMetaDataProject); const thumbnail = useSelector(selectThumbnailProject); const ga_tracking = useSelector(selectGATrackingProject); const feature_image = useSelector(selectFeatureImageProject); const first_scene = useSelector(selectConfigFirstSceneProject); const ggtag_tracking = useSelector(selectGATagTrackingProject); const first_scene_media = useSelector(selectFirstSceneMediaProject); const config_little_planet = useSelector(selectConfigLittlePlanetProject); const detailFirstScene = useMemo( () => listScene.filter(item => item.id === first_scene)[0] || undefined, [listScene, first_scene], ); const images = useMemo(() => { const imgs: any = []; if (thumbnail?.src) imgs.push({ url: thumbnail?.src, width: 800, height: 600, alt: thumbnail?.name, }); if (feature_image) imgs.push({ url: feature_image, width: 800, height: 600, alt: '', }); if (first_scene_media?.src) imgs.push({ url: first_scene_media?.src_thumb || first_scene_media?.src_preview || first_scene_media?.src, width: 800, height: 600, alt: first_scene_media?.name, }); return imgs; }, [thumbnail, feature_image, first_scene_media]); useEffect(() => { if (listScene && listScene.length) { let scene = detailFirstScene ? { ...detailFirstScene } : { ...listScene[0] }; if (router.query.scene) scene = { ...listScene.filter(item => item.id === router.query.scene[0])[0], } || { ...listScene[0], }; // NOTE: add intro little planet for first scene loaded scene.config = scene?.config || {}; scene.config = { ...scene.config, isLittlePlanet: config_little_planet?.enable || false, timeTransitionLittlePlanet: config_little_planet?.transition_time || 2, }; dispatch(actions.setSceneSelected(scene)); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [listScene.length]); // useEffect(() => { // if (ga_tracking) router.events.on('routeChangeStart', onHandleRouteChange); // // eslint-disable-next-line react-hooks/exhaustive-deps // }, [ga_tracking]); // useEffect(() => { // if (ggtag_tracking) // router.events.on('routeChangeStart', onHandleRouteChange); // // eslint-disable-next-line react-hooks/exhaustive-deps // }, [ggtag_tracking]); // useEffect( // () => () => { // router.events.off('routeChangeStart', onHandleRouteChange); // }, // // eslint-disable-next-line react-hooks/exhaustive-deps // [], // ); return ( <> {ga_tracking && ( <>