Skip to content
This repository was archived by the owner on Aug 30, 2020. It is now read-only.

Commit 1f9b3e3

Browse files
jostephirfan-maulana-tkp
authored andcommitted
parent 4157021
author Joshua Stephen <[email protected]> 1596075199 +0700 committer Irfan Maulana <[email protected]> 1597045412 +0700 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEE9vXkACqy/ABx5tTU81NJKLTGrbsFAl8w+qQACgkQ81NJKLTG rbuSPA/8CjQpFoA+1cFkzqmCerq7WqRsT/8hKS6Wr7MUC/8LS62cAglKkrm+1jjr bQJZdEEl5YytN8YIRVPwGNZu38Jdh6GaI4JMKJ3X1g+n5v7v2015/CORsOypZ7S4 Kn2XZmZdteDuszpw69IomJP5q/Sup72jPz5LJ03fiRKDfa25ZG0Fq2ju0G8qFc3R W76d32VwKGwOfXg6yF0kT2DRQquQPnCfni1CJ6LmuGJ6lZZwPVZgIXDhhKOqcBbM SbcJdcyOMAWsbroWWQ0+Ei3KNN+w7XwJIwADQg+sYFAAtr7/arieUPIFZQi6C+hu ZelCQEMJ7RImKBbNct3Hw8JY7O1Je0dEfQ16OPOsEd5II3+mWC+tNRveECDQUFr4 itgobG7Y37t+TDlNn5lNXRBMWPhNnc4xM/0K2RELURlrECOY6SpeRej0Kdx0Uz2D /1/l5+xMfDmcwrPVSFnLkNB9hejx5lvT7beDunomaUpNIUSYd/0OJ+PszWqKALkB 8imXL1YAdEvI18i0jr+/cIywbFVTheJWQLtXjpgDfzNu/knjUhxclLl8Ez+KDY2w n4gRczXU5468tsSRujQRzY6wffu14fNTe02EhoSnJKEaZYBP915lbOURVOK1IF5u oRcASDjFM4ehjKFSikojK1e0rMsfWcHRmtDqeJTga3TV6YLpXac= =L4FX -----END PGP SIGNATURE----- parent 4157021 author Joshua Stephen <[email protected]> 1596075199 +0700 committer Irfan Maulana <[email protected]> 1597045327 +0700 gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEE9vXkACqy/ABx5tTU81NJKLTGrbsFAl8w+k8ACgkQ81NJKLTG rbvLeRAAlFboJKgdu/GgEx7LKOys0lkM35W9IutkOo761G/PuXicW3esz72S0ZdO faMstdceSBUR4+QeALi0j//RtHsEl5pA/2PwdbNKFPrUa+eKH4PXHO4gv1oqd4TO OQ9DPOUW+QwertWWgHdWXy1ULVXULaWqUvPV2eXXFlwC12HmXytBElod8KTdGETk wAiTv7WJvHHdteLCUJLTMsZRQV4K3zSRnCEzdygFH3E0EB/eqpyGpNhOZOfrrCyl zMpCCjBTkmJMeBjejxF3MeAJ/p2Nz4oqfEUoHJHDSWrJ8lNuDoJt08VukgYeaqf/ c/59IyGqr0L+nJN2O9Q5IJsBsrzqpBI5+ONAmZGCLdVQWsbPqWkwCQI/Z0r7gdWV VmCrNYIC+gm3FNw/q7R952NhfmSsUe0GXEDXy3Z+5aQm+6ZXdDHgJ/ydl+E6s79n x3LK0KTjDXVUipCqpPTMJoPit/4JIJs5jpcCv9a5jFGmPRqL6SUMjzrAHH0jJDyU 5OZ1s4iQyDCQ6t4LU/G4QfLQgVaqyXtlNoI8IDklMbFlvuKsL7iiBQOaWU63Bicl TP0ttDI2g2a7ilpmo5aY3X7sivyek65qGjDTmPZ9iP+kZIj6XGO2ahUZfNRN15yp 9OFJYbNtZdZJs3nMfiwoFJqeFIxzMC8StxyLFxNeqZa7yZgkQSI= =ieT1 -----END PGP SIGNATURE----- feat: add pdp chunk & optimize moment plugin add lazy image add lazy add image ratio fix: unused changes fix: remove unused 3rd party improvement: manual resize image size improvment: upload image to CDN feat: add empty lazy image add lazy image add lazy add image ratio feat: add pdp chunk & optimize moment plugin feat: add empty lazy image feat: add pdp chunk & optimize moment plugin add lazy image feat: lazy footer feat: remove unused changes fix: indentations feat: use native intersections
1 parent 4157021 commit 1f9b3e3

File tree

5 files changed

+45
-14
lines changed

5 files changed

+45
-14
lines changed

client/components/Footer/Lazy.js

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import React, { useState } from 'react';
2+
import loadable from '@loadable/component';
3+
import useIntersect from '@jackyef/use-intersect';
4+
5+
const LazyFooterComponent = loadable(() => import(/* webpackChunkName: "footer" */ './index'));
6+
7+
const FooterLoader = () => {
8+
return (
9+
<div style={{ padding: '2em', minHeight: '330px' }}>
10+
<h2>Sedang memuat...</h2>
11+
</div>
12+
);
13+
};
14+
15+
const optionsData = {
16+
root: null,
17+
rootMargin: '0px',
18+
threshold: [0, 0, 0, 0],
19+
};
20+
21+
const FooterWrapper = () => {
22+
const [loaded, setLoaded] = useState(false);
23+
24+
const onIntersect = () => {
25+
console.debug('Footer is intersecting!');
26+
setLoaded(true);
27+
};
28+
29+
const targetRef = useIntersect(onIntersect, optionsData, true);
30+
31+
return <div ref={targetRef}>{loaded ? <LazyFooterComponent /> : <FooterLoader />}</div>;
32+
};
33+
34+
export default FooterWrapper;

client/components/Footer/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ const Footer = () => {
2525
const [showAll, setShowAll] = useState(false);
2626
const [showData, setShowData] = useState('');
2727
const disqusInit = useRef();
28-
const { data, loading } = useData(`${API_URL}/footer`, {}, { method: 'GET' }, { ssr: true });
28+
const { data, loading } = useData(`${API_URL}/footer`, {}, { method: 'GET' }, { ssr: false });
2929

3030
useEffect(() => {
3131
if (!loading && data) {

client/routes/Home/components/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { Link } from 'react-router-dom';
55
import Header from '../../../components/Header';
66
import RatingReview from '../../../components/RatingReview';
77
import LazyImage from '../../../components/LazyImage';
8-
import Footer from '../../../components/Footer';
8+
import LazyFooter from '../../../components/Footer/Lazy';
99

1010
const productWrapper = {
1111
display: 'flex',
@@ -83,7 +83,7 @@ function Home() {
8383
</div>
8484
)}
8585
</main>
86-
<Footer />
86+
<LazyFooter />
8787
</div>
8888
);
8989
}

client/routes/PDP/index.js

+6-11
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
1-
import React from 'react';
2-
import { object } from 'prop-types';
1+
import loadable from '@loadable/component';
32

4-
import PdpComponent from './components';
3+
const errorLoading = err => console.log('PDP page loading failed!', err);
54

6-
const PDP = ({ match }) => {
7-
return (<PdpComponent match={match}/>)
8-
};
5+
const PDPComponent = loadable(() =>
6+
import(/* webpackChunkName: "pdp" */ './components').catch(errorLoading),
7+
);
98

10-
PDP.propTypes = {
11-
match: object.isRequired,
12-
};
13-
14-
export default PDP;
9+
export default PDPComponent;

tools/client/webpack.config.babel.js

+2
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,8 @@ module.exports = function() {
406406
color: '#61dafb',
407407
}),
408408

409+
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
410+
409411
new FriendlyErrorsWebpackPlugin(),
410412
// Generates an `index.html` or `index.client.html` file with the <script> injected.
411413
new HtmlWebpackPlugin(

0 commit comments

Comments
 (0)