Skip to content

Commit 04e95eb

Browse files
authored
Merge pull request #50 from PMET-public/develop
🚀 v1.1.1 (Cloud)
2 parents 4550334 + c8e9022 commit 04e95eb

File tree

7 files changed

+95
-74
lines changed

7 files changed

+95
-74
lines changed

components/App/App.tsx

+2-60
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
import React, { FunctionComponent, useEffect, useCallback } from 'react'
22
import { ServerError } from 'apollo-link-http-common'
33
import dynamic from 'next/dynamic'
4-
import { version } from '~/package.json'
5-
import ReactGA from 'react-ga'
6-
import Router, { useRouter } from 'next/router'
4+
5+
import { useRouter } from 'next/router'
76
import { ThemeProvider } from 'styled-components'
87
import { baseTheme, UIBase } from '@storystore/ui/dist/theme'
98
import { Root, HeaderContainer, Main, FooterContainer, Copyright, TabBarContainer, OfflineToast } from './App.styled'
109

1110
import { useApp } from './useApp'
1211
import { resolveImage } from '~/lib/resolveImage'
1312
import { useStoryStore } from '~/hooks/useStoryStore/useStoryStore'
14-
import { useServiceWorker } from '~/hooks/useServiceWorker'
1513
import useNetworkStatus from '~/hooks/useNetworkStatus'
1614

1715
import NextNprogress from 'nextjs-progressbar'
@@ -28,7 +26,6 @@ import IconBagActiveSvg from 'remixicon/icons/Finance/shopping-bag-fill.svg'
2826
import IconHomeSvg from 'remixicon/icons/Buildings/store-2-line.svg'
2927
import IconHomeActiveSvg from 'remixicon/icons/Buildings/store-2-fill.svg'
3028
import CloudOff from 'remixicon/icons/Business/cloud-off-line.svg'
31-
import { FontStyles } from './FontStyles'
3229
import { ToastsStyles } from './ToastsStyles'
3330
import useValueUpdated from '~/hooks/useValueUpdated'
3431

@@ -49,8 +46,6 @@ if (process.browser) {
4946
}
5047

5148
export const App: FunctionComponent<AppProps> = ({ children }) => {
52-
const workbox = useServiceWorker()
53-
5449
const { cartId, settings, setCartId } = useStoryStore()
5550

5651
const { queries, api } = useApp({ cartId, footerBlockId: settings.footerBlockId })
@@ -79,42 +74,6 @@ export const App: FunctionComponent<AppProps> = ({ children }) => {
7974
}
8075
}, [setCartId, queries, api, cartId])
8176

82-
/**
83-
* Update SW Cache on Route change
84-
*/
85-
const handleRouteChange = useCallback(
86-
(url, error?: any) => {
87-
if (error || !workbox) return
88-
89-
workbox.messageSW({
90-
type: 'CACHE_URLS',
91-
payload: {
92-
urlsToCache: [url],
93-
},
94-
})
95-
96-
ReactGA.pageview(url)
97-
},
98-
[workbox]
99-
)
100-
101-
useEffect(() => {
102-
Router.events.on('routeChangeComplete', handleRouteChange)
103-
104-
return () => {
105-
Router.events.off('routeChangeComplete', handleRouteChange)
106-
}
107-
}, [handleRouteChange])
108-
109-
useEffect(() => {
110-
if (process.env.GOOGLE_ANALYTICS) {
111-
/**
112-
* Google Analytics
113-
*/
114-
ReactGA.initialize(process.env.GOOGLE_ANALYTICS)
115-
}
116-
}, [])
117-
11877
/**
11978
* Offline Message
12079
*/
@@ -135,22 +94,6 @@ export const App: FunctionComponent<AppProps> = ({ children }) => {
13594
}
13695
}, online)
13796

138-
/**
139-
* Google Analytics
140-
*/
141-
useEffect(() => {
142-
if (!process.env.GOOGLE_ANALYTICS) return
143-
ReactGA.set({ dimension1: version }) // version
144-
145-
ReactGA.set({ dimension2: window.location.host }) // release
146-
147-
if (settings.magentoUrl) {
148-
ReactGA.set({ dimension3: new URL(settings.magentoUrl).host }) // endpoint
149-
}
150-
151-
ReactGA.pageview(window.location.pathname)
152-
}, [settings])
153-
15497
if (online && queries.app.error) {
15598
const networkError = queries.app.error?.networkError as ServerError
15699

@@ -196,7 +139,6 @@ export const App: FunctionComponent<AppProps> = ({ children }) => {
196139
>
197140
<NextNprogress color={settings.colorAccent || baseTheme.colors.accent} startPosition={0.4} stopDelayMs={200} height={3} options={{ showSpinner: false, easing: 'ease' }} />
198141
<UIBase />
199-
<FontStyles />
200142
<ToastsStyles />
201143

202144
{/* Head Metadata */}

components/Settings/Settings.styled.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export const Buttons = styled.div`
5252
`
5353

5454
export const RootErrors = styled.ul`
55+
list-style-type: none;
5556
display: grid;
5657
grid-gap: 1rem;
5758
grid-auto-rows: max-content;

hooks/useHtml/useHtml.tsx

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import React, { useMemo } from 'react'
22
import parseHtml, { domToReact, HTMLReactParserOptions } from 'html-react-parser'
3-
import { resolveLink, LinkType } from '../../lib/resolveLink'
3+
import { resolveLink, LinkType } from '~/lib/resolveLink'
4+
import { resolveImage } from '~/lib/resolveImage'
45

5-
import Link from '../../components/Link'
6+
import Link from '~/components/Link'
7+
import Image from '@storystore/ui/dist/components/Image'
68

79
const options: HTMLReactParserOptions = {
810
replace: ({ name, attribs, children }) => {
@@ -21,6 +23,10 @@ const options: HTMLReactParserOptions = {
2123
</Link>
2224
)
2325
}
26+
27+
if (name === 'img' && attribs?.src) {
28+
return <Image {...attribs} src={resolveImage(attribs.src)} />
29+
}
2430
},
2531
}
2632

hooks/useServiceWorker/useServiceWorker.tsx

+5-10
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useMemo, useEffect, useCallback, useRef } from 'react'
1+
import React, { useEffect, useCallback, useRef } from 'react'
22
import { Workbox } from 'workbox-window'
33
import { version } from '../../package.json'
44
import { useRouter } from 'next/router'
@@ -29,14 +29,6 @@ export const useServiceWorker = () => {
2929

3030
const wb = useRef<Workbox | undefined>()
3131

32-
wb.current = useMemo(() => {
33-
if (process.env.NODE_ENV !== 'production' || !process.browser || !navigator?.serviceWorker) return
34-
35-
if (wb.current) return wb.current
36-
37-
return new Workbox('/service-worker.js')
38-
}, [])
39-
4032
const handleReloadApp = useCallback(() => {
4133
router.reload()
4234
}, [router])
@@ -79,7 +71,10 @@ export const useServiceWorker = () => {
7971
}, [wb])
8072

8173
useEffect(() => {
82-
if (!wb.current) return
74+
if (wb.current || process.env.NODE_ENV !== 'production' || !process.browser || !navigator?.serviceWorker) return
75+
76+
wb.current = wb.current ?? new Workbox('/service-worker.js')
77+
8378
wb.current.addEventListener('installed', handleServiceWorkerInstalled)
8479
wb.current.addEventListener('activated', handleServiceWorkerActivated)
8580

lib/storystore/withStoryStore.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ export const withStoryStore = (PageComponent: NextPage<any>) => {
9797
const WithStoryStore = ({ cookie, ...pageProps }: any) => {
9898
const apolloClient = useApolloClient()
9999

100-
const { data } = useQuery(STORYSTORE_QUERY, { ...queryDefaultOptions, errorPolicy: 'ignore', returnPartialData: true })
100+
const { data } = useQuery(STORYSTORE_QUERY, { ...queryDefaultOptions, errorPolicy: 'ignore' })
101101

102102
const [state, dispatch] = useReducer(reducer, {
103103
...initialState,

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@storystore/pwa",
3-
"version": "1.1.0",
3+
"version": "1.1.1",
44
"magentoDependency": ">= 2.3.5",
55
"author": "Carlos A. Cabrera @fnhipster",
66
"repository": "https://github.com/pmet-public/storystore-pwa.git",

pages/_app.tsx

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import React, { useCallback, useEffect } from 'react'
2+
import { NextPage } from 'next'
3+
import { AppProps } from 'next/app'
4+
import { version } from '~/package.json'
5+
import ReactGA from 'react-ga'
6+
import Router from 'next/router'
7+
import { FontStyles } from '~/components/App/FontStyles'
8+
9+
import useServiceWorker from '~/hooks/useServiceWorker'
10+
import useStoryStore from '~/hooks/useStoryStore'
11+
12+
const MyApp: NextPage<AppProps> = ({ Component, pageProps }) => {
13+
const { settings } = useStoryStore()
14+
15+
const workbox = useServiceWorker()
16+
17+
/**
18+
* Google Analytics
19+
*/
20+
useEffect(() => {
21+
if (process.env.GOOGLE_ANALYTICS) {
22+
ReactGA.initialize(process.env.GOOGLE_ANALYTICS)
23+
}
24+
}, [])
25+
26+
useEffect(() => {
27+
if (process.env.GOOGLE_ANALYTICS) {
28+
ReactGA.set({ dimension1: version }) // version
29+
30+
ReactGA.set({ dimension2: window.location.host }) // release
31+
32+
if (settings.magentoUrl) {
33+
ReactGA.set({ dimension3: new URL(settings.magentoUrl).host }) // endpoint
34+
}
35+
36+
ReactGA.pageview(window.location.pathname)
37+
}
38+
}, [settings])
39+
40+
/**
41+
* Handle Route changes
42+
*/
43+
const handleRouteChange = useCallback(
44+
(url, error?: any) => {
45+
if (error) return
46+
47+
workbox?.messageSW({
48+
type: 'CACHE_URLS',
49+
payload: {
50+
urlsToCache: [url],
51+
},
52+
})
53+
54+
if (process.env.GOOGLE_ANALYTICS) {
55+
ReactGA.pageview(url)
56+
}
57+
},
58+
[workbox]
59+
)
60+
61+
useEffect(() => {
62+
Router.events.on('routeChangeComplete', handleRouteChange)
63+
64+
return () => {
65+
Router.events.off('routeChangeComplete', handleRouteChange)
66+
}
67+
}, [handleRouteChange])
68+
69+
return (
70+
<React.Fragment>
71+
<Component {...pageProps} />
72+
<FontStyles />
73+
</React.Fragment>
74+
)
75+
}
76+
77+
export default MyApp

0 commit comments

Comments
 (0)