diff --git a/next.config.js b/next.config.js index a59905f2..3767d1ea 100644 --- a/next.config.js +++ b/next.config.js @@ -160,27 +160,27 @@ module.exports = withCss(withSass({ '/info/navigator', ] ), - ...createPath( - '/teacher/[person]', - x => x.replace('/teacher/', ''), - person => ({ person }), - [ - '/teacher/as-timasheva', - '/teacher/va-sarzhin', - '/teacher/vv-voronova', - '/teacher/ea-burovtseva', - '/teacher/ey-tarasova', - '/teacher/iv-khramov', - '/teacher/in-vturina', - '/teacher/ma-khramova', - '/teacher/mg-timasheva', - '/teacher/my-valkova', - '/teacher/nv-andreeva', - '/teacher/od-gogoleva', - '/teacher/rk-timashev', - '/teacher/sa-latipova', - ], - ), + // ...createPath( + // '/teacher/[person]', + // x => x.replace('/teacher/', ''), + // person => ({ person }), + // [ + // '/teacher/as-timasheva', + // '/teacher/va-sarzhin', + // '/teacher/vv-voronova', + // '/teacher/ea-burovtseva', + // '/teacher/ey-tarasova', + // '/teacher/iv-khramov', + // '/teacher/in-vturina', + // '/teacher/ma-khramova', + // '/teacher/mg-timasheva', + // '/teacher/my-valkova', + // '/teacher/nv-andreeva', + // '/teacher/od-gogoleva', + // '/teacher/rk-timashev', + // '/teacher/sa-latipova', + // ], + // ), ...createPath( '/article/[article]', x => x.replace('/article/', ''), diff --git a/package-lock.json b/package-lock.json index 721ab804..9295b6dc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1059,9 +1059,9 @@ "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==" }, "@next/polyfill-nomodule": { - "version": "9.2.2-canary.16", - "resolved": "https://registry.npmjs.org/@next/polyfill-nomodule/-/polyfill-nomodule-9.2.2-canary.16.tgz", - "integrity": "sha512-VPAaxYJ9cDaaC+imgOTCNJmB4zijXaArF+Nv7KZS7zO5KpltFFNZSmsDO1Mw8jkJbZ4qWDmqpK/d+ZJoqwzOVQ==" + "version": "9.2.2-canary.18", + "resolved": "https://registry.npmjs.org/@next/polyfill-nomodule/-/polyfill-nomodule-9.2.2-canary.18.tgz", + "integrity": "sha512-YryD2l6Vzfjd8dHBu4GA0VJI/mBB0U6tmoOI8bum/C22S1Oh3OzWpBTkMVGXyxTVsOZM6jArVNSaL69Ps67vlA==" }, "@types/accepts": { "version": "1.3.5", @@ -1987,7 +1987,7 @@ }, "babel-plugin-syntax-jsx": { "version": "6.18.0", - "resolved": "http://storage.mds.yandex.net/get-npm/66641/babel-plugin-syntax-jsx-6.18.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" }, "babel-plugin-transform-define": { @@ -2439,9 +2439,9 @@ } }, "make-dir": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.1.tgz", - "integrity": "sha512-NFCymdWS4z/T+3AQ6tjsknt/+4hikbOe6zdq9ZBoPFfoX1S3fthRUbQWzZhI4WZBOM0kQ0GkhdCdfdan3HK+wg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", "requires": { "semver": "^6.0.0" } @@ -2836,9 +2836,9 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "make-dir": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.1.tgz", - "integrity": "sha512-NFCymdWS4z/T+3AQ6tjsknt/+4hikbOe6zdq9ZBoPFfoX1S3fthRUbQWzZhI4WZBOM0kQ0GkhdCdfdan3HK+wg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", "requires": { "semver": "^6.0.0" } @@ -5280,7 +5280,7 @@ }, "is-plain-obj": { "version": "1.1.0", - "resolved": "http://storage.mds.yandex.net/get-npm/69187/is-plain-obj-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" }, "is-plain-object": { @@ -6691,9 +6691,9 @@ "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" }, "next": { - "version": "9.2.2-canary.16", - "resolved": "https://registry.npmjs.org/next/-/next-9.2.2-canary.16.tgz", - "integrity": "sha512-k4SuXSc6LxnfD7oehFxVxhJuXonzPg9ERlRarqUaUbuWOy6y8mXwJVYd36DNiXJlgXGjsRReSsVNC8d7fIlenQ==", + "version": "9.2.2-canary.18", + "resolved": "https://registry.npmjs.org/next/-/next-9.2.2-canary.18.tgz", + "integrity": "sha512-OiIaIJtmwBQG3C6Te6VIHbvKrlrVQiIaPaxevjsRv9pmdghcWmzuaCQoXx/SC6rwdvDAXKS8BtDczXJsx6mREQ==", "requires": { "@ampproject/toolbox-optimizer": "1.1.1", "@babel/core": "7.7.2", @@ -6711,7 +6711,7 @@ "@babel/preset-typescript": "7.7.2", "@babel/runtime": "7.7.2", "@babel/runtime-corejs2": "7.7.2", - "@next/polyfill-nomodule": "9.2.2-canary.16", + "@next/polyfill-nomodule": "9.2.2-canary.18", "amphtml-validator": "1.0.23", "async-retry": "1.2.3", "async-sema": "3.0.0", @@ -7325,7 +7325,7 @@ }, "normalize-range": { "version": "0.1.2", - "resolved": "http://storage.mds.yandex.net/get-npm/38095/normalize-range-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" }, "normalize-url": { @@ -7353,7 +7353,7 @@ }, "num2fraction": { "version": "1.2.2", - "resolved": "http://storage.mds.yandex.net/get-npm/38095/num2fraction-1.2.2.tgz", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" }, "number-is-nan": { diff --git a/package.json b/package.json index f9dd2cd9..15a3e140 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "lodash": "^4.17.15", "moment": "^2.24.0", "mongodb": "^2.1.14", - "next": "^9.2.2-canary.16", + "next": "^9.2.2-canary.18", "react": "^16.12.0", "react-dom": "^16.12.0", "sitemap": "^1.5.0", diff --git a/pages/collective.tsx b/pages/collective.tsx index e15c5c22..335b73e5 100644 --- a/pages/collective.tsx +++ b/pages/collective.tsx @@ -9,8 +9,8 @@ import menuModel from 'src/models/menu' import { buildMenu } from 'src/lib/menu' import { meta } from 'src/lib/meta' import { IMeta } from 'src/types' -import { createApiUrl, requestGet, wrapInitialProps, IResponseItems } from 'src/next-lib' -import { NextPage } from 'next' +import { createApiUrl, requestGet, IResponseItems } from 'src/next-lib' +import { NextPage, NextPageContext } from 'next' interface IPerson { @@ -60,7 +60,7 @@ const Page: NextPage = props => ( ) -Page.getInitialProps = wrapInitialProps(async (ctx) => { +export const unstable_getServerProps = async (ctx: NextPageContext) => { const pageUrl = ctx.req.url const res = await requestGet>(createApiUrl(ctx.req, '/api/persons'), { items: [] }) @@ -71,16 +71,18 @@ Page.getInitialProps = wrapInitialProps(async (ctx) => { const image = get(resImage, 'artifacts.large', null) return { - persons, - image, - pageUrl, - title, - meta: meta({ + props: { + persons, + image, + pageUrl, title, - url: pageUrl, - description: 'Преподаватели Шлиссельбургской ДХШ', - }) + meta: meta({ + title, + url: pageUrl, + description: 'Преподаватели Шлиссельбургской ДХШ', + }) + } } -}) +} export default Page diff --git a/pages/teacher/[person].tsx b/pages/teacher/[person].tsx index 34c13a12..b2316f88 100644 --- a/pages/teacher/[person].tsx +++ b/pages/teacher/[person].tsx @@ -5,8 +5,8 @@ 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, wrapInitialProps } from 'src/next-lib' -import { NextPage } from 'next' +import { createApiUrl, requestGet, IResponseItems } from 'src/next-lib' +import { NextPage, NextPageContext } from 'next' import { IMeta } from 'src/types' import Html from 'src/components/Html' @@ -17,50 +17,93 @@ interface IProps { person: any } -const Index: NextPage = props => ( - - - {props.title} - - +const Index: NextPage = props => { + if (!props?.person?.post) { + console.log('kek error', props) -
- -
-
-) + + {props.title} + + + + {!props.person.post ? null : ( +
+ +
+ )} + + ) +} + +export const unstable_getStaticProps = async (ctx: any) => { + console.log('call unstable_getStaticProps', ctx) -Index.getInitialProps = wrapInitialProps(async (ctx) => { const pageUrl = '/collective' - const id = ctx.query.person - const person: any = await requestGet(createApiUrl(ctx.req, `/api/persons/${id}`), {}) + // const id = ctx.query.person + // const id = ctx.params.person ?? 'va-sarzhin' + const id = ctx.params.person //?? 'mg-timasheva' + + if (!id) { + throw new Error('sry') + } + + // const person: any = await requestGet(createApiUrl(ctx.req, `/api/persons/${id}`), {}) + const person: any = await requestGet(`http://localhost:3000/api/persons/${id}`, {}) const name = person.name || [] const title = name.join(' ') const image = person.preview ? person.preview.artifacts.fb : {} - return { - pageUrl, - person, - title, - meta: meta({ - title, - image: image.src, - imageWidth: image.width, - imageHeight: image.height, - }) + if (!person?.post) { + throw new Error(`post kek ${id}`) } -}) + + return { + props: { + pageUrl, + person, + title, + meta: meta({ + title, + image: image.src, + imageWidth: image.width, + imageHeight: image.height, + }) + } + } +} + +export const unstable_getStaticPaths = async () => { + console.log('call unstable_getStaticPaths') + + const urls = await requestGet>(`http://localhost:3000/api/persons/urls`, null) + // const urls = {items: ['/teacher/va-sarzhin']} + + return { + paths: urls.items + .map(x => x.replace('/teacher/', '')) + .map(person => ({ + params: { + person, + }, + })), + } +} export default Index