stacker.news/pages/_app.js

49 lines
1.6 KiB
JavaScript
Raw Normal View History

2021-04-14 00:57:32 +00:00
import '../styles/globals.scss'
import { ApolloProvider } from '@apollo/client'
2021-04-12 18:05:09 +00:00
import { Provider } from 'next-auth/client'
2021-05-20 21:32:59 +00:00
import { FundErrorModal, FundErrorProvider } from '../components/fund-error'
2021-05-25 00:08:56 +00:00
import { MeProvider } from '../components/me'
2021-07-15 20:49:13 +00:00
import PlausibleProvider from 'next-plausible'
import { LightningProvider } from '../components/lightning'
import { useRouter } from 'next/router'
import { useEffect } from 'react'
2021-09-10 18:55:36 +00:00
import { ItemActModal, ItemActProvider } from '../components/item-act'
2021-09-30 15:46:58 +00:00
import getApolloClient from '../lib/apollo'
2021-03-22 20:36:10 +00:00
2021-09-30 15:46:58 +00:00
function MyApp ({ Component, pageProps: { session, ...props } }) {
const router = useRouter()
2021-09-30 15:46:58 +00:00
useEffect(() => {
router.beforePopState(({ url, as, options }) => {
// we need to tell the next page to use a cache-first fetch policy ...
// so that scroll position can be maintained
const fullurl = new URL(url, 'https://stacker.news')
fullurl.searchParams.set('cache', true)
router.push(`${fullurl.pathname}${fullurl.search}`, as, options)
return false
})
}, [])
2021-04-12 18:05:09 +00:00
return (
2021-07-15 20:49:13 +00:00
<PlausibleProvider domain='stacker.news' trackOutboundLinks>
2021-09-30 15:46:58 +00:00
<Provider session={session}>
<ApolloProvider client={getApolloClient()}>
<MeProvider>
<LightningProvider>
<FundErrorProvider>
<FundErrorModal />
2021-09-10 18:55:36 +00:00
<ItemActProvider>
<ItemActModal />
2021-09-30 15:46:58 +00:00
<Component {...props} />
2021-09-10 18:55:36 +00:00
</ItemActProvider>
</FundErrorProvider>
</LightningProvider>
</MeProvider>
</ApolloProvider>
</Provider>
2021-07-15 20:49:13 +00:00
</PlausibleProvider>
2021-04-12 18:05:09 +00:00
)
2021-03-22 20:36:10 +00:00
}
export default MyApp