From e4ae601c3251f8778ed729b19cc5f818f4f5984c Mon Sep 17 00:00:00 2001 From: LordMathis Date: Sun, 10 Nov 2019 17:44:57 +0100 Subject: [PATCH] Read and display resume --- src/components/Resume.js | 11 ++++--- src/components/index.js | 1 + .../{PostContainer.js => ContentContainer.js} | 31 ++++++++++--------- src/containers/index.js | 2 +- src/utils/api.js | 14 ++++++--- src/utils/routes.js | 11 +++++-- src/utils/serverRender.js | 2 +- 7 files changed, 46 insertions(+), 26 deletions(-) rename src/containers/{PostContainer.js => ContentContainer.js} (50%) diff --git a/src/components/Resume.js b/src/components/Resume.js index 09d5a8d..cce9fd0 100644 --- a/src/components/Resume.js +++ b/src/components/Resume.js @@ -1,10 +1,11 @@ import PropTypes from 'prop-types' import React, { Component } from 'react' -import { Spinner, Header } from '.' +import { Spinner, Navbar, Wrapper, Header } from '.' import '../stylesheets/globals.scss' import contentStyle from '../stylesheets/content.scss' import style from './Resume.scss' import MarkdownIt from 'markdown-it' +import fm from 'front-matter' export default class About extends Component { static propTypes = { @@ -14,7 +15,9 @@ export default class About extends Component { render () { const md = MarkdownIt() - const result = md.render(this.props.about) + const content = fm(this.props.resume) + const title = content.attributes.title + const body = md.render(content.body) if (this.props.isLoading) { return ( @@ -25,12 +28,12 @@ export default class About extends Component { } return ( -
+
-
+
diff --git a/src/components/index.js b/src/components/index.js index 4543e68..0dd96f5 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -11,3 +11,4 @@ export { default as Navbar } from './Navbar' export { default as App } from './App' export { default as SocialLinks } from './SocialLinks' export { default as Column } from './Column' +export { default as Resume } from './Resume' diff --git a/src/containers/PostContainer.js b/src/containers/ContentContainer.js similarity index 50% rename from src/containers/PostContainer.js rename to src/containers/ContentContainer.js index 6b505b4..7c381e9 100644 --- a/src/containers/PostContainer.js +++ b/src/containers/ContentContainer.js @@ -1,8 +1,8 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import { Post, NotFoundPage } from '../components' +import { Post, Resume } from '../components' -export default class PostContainer extends Component { +export default class ContentContainer extends Component { static propTypes = { staticContext: PropTypes.object.isRequired } @@ -21,24 +21,27 @@ export default class PostContainer extends Component { this.state = { isLoading: !data, - error: false, - post: data[0], + type: data[0]['type'], + content: data[0]['data'], config: data[1] - } + } } render () { - if (this.state.error) { + if (this.state.type == 'resume') { return ( - + + ) + } else { + return ( + ) } - - return ( - - ) } } diff --git a/src/containers/index.js b/src/containers/index.js index 622956a..26b9cd4 100644 --- a/src/containers/index.js +++ b/src/containers/index.js @@ -1,2 +1,2 @@ export { default as MainContainer } from './MainContainer' -export { default as PostContainer } from './PostContainer' +export { default as ContentContainer } from './ContentContainer' diff --git a/src/utils/api.js b/src/utils/api.js index e176c95..833f0e7 100644 --- a/src/utils/api.js +++ b/src/utils/api.js @@ -5,16 +5,22 @@ import path from 'path' export function getData (reqPath = '') { if (reqPath === '') { return readJson(path.join(process.cwd(), 'data.json')) + } else if (reqPath === 'resume') { + const fileName = path.join(process.cwd(), 'content', reqPath + '.md') + return readFile(fileName, 'resume', 'utf8') } else { const fileName = path.join(process.cwd(), 'content', reqPath + '.md') - return readFile(fileName, 'utf8') + return readFile(fileName, 'post', 'utf8') } }; -function readFile (fileName, options) { +function readFile (fileName, type, options) { return new Promise(function (resolve, reject) { fs.readFile(fileName, options, (err, data) => { - err ? reject(err) : resolve(data) + err ? reject(err) : resolve({ + 'type': type, + 'data': data + }) }) }) } @@ -25,4 +31,4 @@ function readJson (dataPath) { err ? reject(err) : resolve(data) }) }) -} \ No newline at end of file +} diff --git a/src/utils/routes.js b/src/utils/routes.js index b81cec0..ca761c0 100644 --- a/src/utils/routes.js +++ b/src/utils/routes.js @@ -1,4 +1,4 @@ -import { MainContainer, PostContainer } from '../containers' +import { MainContainer, ContentContainer } from '../containers' import { getData } from './api' const routes = [ @@ -12,7 +12,14 @@ const routes = [ }, { path: '/post/:postname', - component: PostContainer, + component: ContentContainer, + getData: (path = '') => getData( + path.split('/').pop() + ) + }, + { + path: '/resume', + component: ContentContainer, getData: (path = '') => getData( path.split('/').pop() ) diff --git a/src/utils/serverRender.js b/src/utils/serverRender.js index 4ea09a0..07762df 100644 --- a/src/utils/serverRender.js +++ b/src/utils/serverRender.js @@ -33,7 +33,7 @@ export class ServerRenderer { : Promise.resolve() promise.then((data) => { - const context = [data, config] + const context = [data, config] const markup = renderToString(