added wrapper to getInitialProps to prevent api calls in production
This commit is contained in:
1 parent
dded475c47
commit
fe5cc36182
12 files changed
+49
-33
No files matched your search
@@ -5,7 +5,7 @@ import Article from '../../src/components/Article'
|
||||
import Html from '../../src/components/Html'
|
||||
import menuModel from '../../src/models/menu'
|
||||
import { buildMenu } from '../../src/lib/menu'
|
||||
import { createApiUrl, requestGet } from '../../src/next-lib'
|
||||
import { createApiUrl, requestGet, wrapInitialProps } from '../../src/next-lib'
|
||||
|
||||
const Page = (props) => (
|
||||
<App
|
||||
@@ -30,7 +30,7 @@ const Page = (props) => (
|
||||
</App>
|
||||
)
|
||||
|
||||
Page.getInitialProps = async (ctx) => {
|
||||
Page.getInitialProps = wrapInitialProps(async (ctx) => {
|
||||
const pageUrl = '/gallery'
|
||||
const id = ctx.query.album
|
||||
const album = await requestGet(createApiUrl(ctx.req, `/api/albums/${id}`), {})
|
||||
@@ -39,6 +39,6 @@ Page.getInitialProps = async (ctx) => {
|
||||
album,
|
||||
pageUrl,
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
export default Page
|
||||
@@ -8,7 +8,7 @@ import menuModel from '../../src/models/menu'
|
||||
import { buildMenu } from '../../src/lib/menu'
|
||||
import { Meta } from '../../src/components/Meta'
|
||||
import { meta } from '../../src/lib/meta'
|
||||
import { createApiUrl, requestGet } from '../../src/next-lib'
|
||||
import { createApiUrl, requestGet, wrapInitialProps } from '../../src/next-lib'
|
||||
|
||||
const Page = (props) => (
|
||||
<App
|
||||
@@ -35,7 +35,7 @@ const Page = (props) => (
|
||||
</App>
|
||||
)
|
||||
|
||||
Page.getInitialProps = async (ctx) => {
|
||||
Page.getInitialProps = wrapInitialProps(async (ctx) => {
|
||||
const pageUrl = '/'
|
||||
const id = ctx.query.article
|
||||
const article = await requestGet(createApiUrl(ctx.req, `/api/articles/${id}`), {})
|
||||
@@ -51,6 +51,6 @@ Page.getInitialProps = async (ctx) => {
|
||||
imageHeight: image.height,
|
||||
}),
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
export default Page
|
||||
@@ -6,7 +6,7 @@ import menuModel from '../../src/models/menu'
|
||||
import { buildMenu } from '../../src/lib/menu'
|
||||
import { meta } from '../../src/lib/meta'
|
||||
import { Meta } from '../../src/components/Meta'
|
||||
import { createApiUrl, requestGet } from '../../src/next-lib'
|
||||
import { createApiUrl, requestGet, wrapInitialProps } from '../../src/next-lib'
|
||||
|
||||
const Page = (props) => (
|
||||
<App
|
||||
@@ -28,7 +28,7 @@ const Page = (props) => (
|
||||
</App>
|
||||
)
|
||||
|
||||
Page.getInitialProps = async (ctx) => {
|
||||
Page.getInitialProps = wrapInitialProps(async (ctx) => {
|
||||
const pageUrl = '/'
|
||||
const page = parseInt(ctx.query.page)
|
||||
const pageSize = parseInt(ctx.query.pageSize) || 15
|
||||
@@ -48,6 +48,6 @@ Page.getInitialProps = async (ctx) => {
|
||||
title,
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
export default Page
|
||||
@@ -9,7 +9,7 @@ import { CardList } from '../src/components/CardList'
|
||||
import menuModel from '../src/models/menu'
|
||||
import { buildMenu } from '../src/lib/menu'
|
||||
import { meta } from '../src/lib/meta'
|
||||
import { createApiUrl, requestGet } from '../src/next-lib'
|
||||
import { createApiUrl, requestGet, wrapInitialProps } from '../src/next-lib'
|
||||
|
||||
const Page = (props) => (
|
||||
<App
|
||||
@@ -48,7 +48,7 @@ const Page = (props) => (
|
||||
</App>
|
||||
)
|
||||
|
||||
Page.getInitialProps = async (ctx) => {
|
||||
Page.getInitialProps = wrapInitialProps(async (ctx) => {
|
||||
const pageUrl = ctx.req.url
|
||||
|
||||
const res = await requestGet(createApiUrl(ctx.req, '/api/persons'), {})
|
||||
@@ -69,6 +69,6 @@ Page.getInitialProps = async (ctx) => {
|
||||
description: 'Преподаватели Шлиссельбургской ДХШ',
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
export default Page
|
||||
@@ -7,7 +7,7 @@ import menuModel from '../../src/models/menu'
|
||||
import { buildMenu } from '../../src/lib/menu'
|
||||
import { meta } from '../../src/lib/meta'
|
||||
import { Meta } from '../../src/components/Meta'
|
||||
import { createApiUrl, requestGet } from '../../src/next-lib'
|
||||
import { createApiUrl, requestGet, wrapInitialProps } from '../../src/next-lib'
|
||||
|
||||
const Page = (props) => (
|
||||
<App
|
||||
@@ -26,7 +26,7 @@ const Page = (props) => (
|
||||
</App>
|
||||
)
|
||||
|
||||
Page.getInitialProps = async (ctx) => {
|
||||
Page.getInitialProps = wrapInitialProps(async (ctx) => {
|
||||
const pageUrl = '/documents'
|
||||
const id = ctx.query.document
|
||||
const file = await requestGet(createApiUrl(ctx.req, `/api/files/${id}`), {})
|
||||
@@ -38,6 +38,6 @@ Page.getInitialProps = async (ctx) => {
|
||||
title: file.meta,
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
export default Page
|
||||
+3
-3
@@ -8,7 +8,7 @@ import { meta } from '../src/lib/meta'
|
||||
|
||||
import DocumentList from '../src/components/DocumentList'
|
||||
import { unique } from '../src/utils/common'
|
||||
import { createApiUrl, requestGet } from '../src/next-lib'
|
||||
import { createApiUrl, requestGet, wrapInitialProps } from '../src/next-lib'
|
||||
|
||||
function getSorted(documents) {
|
||||
const compose = (...fns) => value => fns
|
||||
@@ -109,7 +109,7 @@ const Page = (props) => (
|
||||
</App>
|
||||
)
|
||||
|
||||
Page.getInitialProps = async (ctx) => {
|
||||
Page.getInitialProps = wrapInitialProps(async (ctx) => {
|
||||
const pageUrl = '/documents'
|
||||
const res = await requestGet(createApiUrl(ctx.req, '/api/files'), {})
|
||||
const files = res.items || []
|
||||
@@ -125,6 +125,6 @@ Page.getInitialProps = async (ctx) => {
|
||||
description: 'Документы Шлиссельбургской ДХШ',
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
export default Page
|
||||
+3
-3
@@ -8,7 +8,7 @@ import menuModel from '../src/models/menu'
|
||||
import { buildMenu } from '../src/lib/menu'
|
||||
import { splitBy } from '../src/lib/array'
|
||||
import { meta } from '../src/lib/meta'
|
||||
import { createApiUrl, requestGet } from '../src/next-lib'
|
||||
import { createApiUrl, requestGet, wrapInitialProps } from '../src/next-lib'
|
||||
|
||||
const albumsByYear = splitBy(album => new Date(album.date).getFullYear())
|
||||
|
||||
@@ -81,7 +81,7 @@ const Page = (props) => (
|
||||
</App>
|
||||
)
|
||||
|
||||
Page.getInitialProps = async (ctx) => {
|
||||
Page.getInitialProps = wrapInitialProps(async (ctx) => {
|
||||
const pageUrl = ctx.req.url
|
||||
const res = await requestGet(createApiUrl(ctx.req, `/api/albums`), {})
|
||||
const items = res.items || []
|
||||
@@ -97,6 +97,6 @@ Page.getInitialProps = async (ctx) => {
|
||||
description: 'Галерея работ учащихся Шлиссельбургской Детской Художественной Школы'
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
export default Page
|
||||
+3
-3
@@ -7,7 +7,7 @@ import { HudozkaTitle } from '../src/components/HudozkaTitle'
|
||||
import menuModel from '../src/models/menu'
|
||||
import { meta } from '../src/lib/meta'
|
||||
import { buildMenu } from '../src/lib/menu'
|
||||
import { createApiUrl, requestGet } from '../src/next-lib'
|
||||
import { createApiUrl, requestGet, wrapInitialProps } from '../src/next-lib'
|
||||
|
||||
const Page = (props) => (
|
||||
<App
|
||||
@@ -32,7 +32,7 @@ const Page = (props) => (
|
||||
</App>
|
||||
)
|
||||
|
||||
Page.getInitialProps = async (ctx) => {
|
||||
Page.getInitialProps = wrapInitialProps(async (ctx) => {
|
||||
const pageUrl = '/'
|
||||
const page = 1
|
||||
const pageSize = ctx.query.pageSize || 15
|
||||
@@ -53,6 +53,6 @@ Page.getInitialProps = async (ctx) => {
|
||||
url: pageUrl,
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
export default Page
|
||||
+3
-3
@@ -6,7 +6,7 @@ import menuModel from '../src/models/menu'
|
||||
import { buildMenu } from '../src/lib/menu'
|
||||
import { Meta } from '../src/components/Meta'
|
||||
import { meta } from '../src/lib/meta'
|
||||
import { createApiUrl, requestGet } from '../src/next-lib'
|
||||
import { createApiUrl, requestGet, wrapInitialProps } from '../src/next-lib'
|
||||
|
||||
const Index = (props) => (
|
||||
<App
|
||||
@@ -29,7 +29,7 @@ const Index = (props) => (
|
||||
</App>
|
||||
)
|
||||
|
||||
Index.getInitialProps = async (ctx) => {
|
||||
Index.getInitialProps = wrapInitialProps(async (ctx) => {
|
||||
const pageUrl = ctx.req.url
|
||||
// // const pageUrl = '/neighbors/2018'
|
||||
const page = await requestGet(createApiUrl(ctx.req, `/api/page?page=${pageUrl}`), {})
|
||||
@@ -46,6 +46,6 @@ Index.getInitialProps = async (ctx) => {
|
||||
imageHeight: image.height,
|
||||
}),
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
export default Index
|
||||
+3
-3
@@ -5,7 +5,7 @@ import Schedule from '../src/components/Schedule'
|
||||
import Share from '../src/components/Share'
|
||||
import menuModel from '../src/models/menu'
|
||||
import { buildMenu } from '../src/lib/menu'
|
||||
import { createApiUrl, requestGet } from '../src/next-lib'
|
||||
import { createApiUrl, requestGet, wrapInitialProps } from '../src/next-lib'
|
||||
|
||||
const Page = (props) => (
|
||||
<App
|
||||
@@ -27,7 +27,7 @@ const Page = (props) => (
|
||||
</App>
|
||||
)
|
||||
|
||||
Page.getInitialProps = async (ctx) => {
|
||||
Page.getInitialProps = wrapInitialProps(async (ctx) => {
|
||||
const pageUrl = ctx.req.url
|
||||
const period = '2016-2017'
|
||||
const semester = 'spring'
|
||||
@@ -38,6 +38,6 @@ Page.getInitialProps = async (ctx) => {
|
||||
pageUrl,
|
||||
title: 'Расписание',
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
export default Page
|
||||
@@ -7,7 +7,7 @@ import { Meta } from '../../src/components/Meta'
|
||||
import menuModel from '../../src/models/menu'
|
||||
import { buildMenu } from '../../src/lib/menu'
|
||||
import { meta } from '../../src/lib/meta'
|
||||
import { createApiUrl, requestGet } from '../../src/next-lib'
|
||||
import { createApiUrl, requestGet, wrapInitialProps } from '../../src/next-lib'
|
||||
|
||||
const Index = (props) => (
|
||||
<App
|
||||
@@ -27,7 +27,7 @@ const Index = (props) => (
|
||||
</App>
|
||||
)
|
||||
|
||||
Index.getInitialProps = async (ctx) => {
|
||||
Index.getInitialProps = wrapInitialProps(async (ctx) => {
|
||||
const pageUrl = '/collective'
|
||||
const id = ctx.query.person
|
||||
const person = await requestGet(createApiUrl(ctx.req, `/api/persons/${id}`), {})
|
||||
@@ -46,6 +46,6 @@ Index.getInitialProps = async (ctx) => {
|
||||
imageHeight: image.height,
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
export default Index
|
||||
@@ -10,6 +10,22 @@ export async function requestGet(url, defaultResponse) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This wrapper prevents fetching api request in static export mode and production environment
|
||||
* because nextjs call getInitialProps on the client side
|
||||
*
|
||||
* @param {*} fn
|
||||
*/
|
||||
export function wrapInitialProps(fn) {
|
||||
return async ctx => {
|
||||
if (process.env.NODE_ENV === 'production' && process.browser) {
|
||||
return __NEXT_DATA__.props.pageProps;
|
||||
}
|
||||
|
||||
return fn(ctx)
|
||||
}
|
||||
}
|
||||
|
||||
export function createApiUrl(req, path) {
|
||||
const { origin } = absoluteUrl(req, 'localhost:3000')
|
||||
|
||||
|
||||
Reference in new issue
Block a user