/**
 * Copyright (c) 2017-present, Facebook, Inc.
 * All rights reserved.
 *
 * This source code is licensed under the BSD-style license found in the
 * LICENSE file in the root directory of this source tree. An additional grant
 * of patent rights can be found in the PATENTS file in the same directory.
 */

const BlogPost = require("./BlogPost.js");
const BlogSidebar = require("./BlogSidebar.js");
const Container = require("./Container.js");
const MetadataBlog = require("./MetadataBlog.js");
const React = require("react");
const Site = require("./Site.js");

// used to generate entire blog pages, i.e. collection of truncated blog posts
const BlogPageLayout = React.createClass({
  getPageURL(page) {
    let url = this.props.config.baseUrl + "blog/";
    if (page > 0) {
      url += "page" + (page + 1) + "/";
    }
    return url + "#content";
  },

  render() {
    const perPage = this.props.metadata.perPage;
    const page = this.props.metadata.page;
    return (
      <Site
        title="Blog"
        language="en"
        config={this.props.config}
      >
        <div className="docMainWrapper wrapper">
          <BlogSidebar
            language={this.props.language}
            config={this.props.config}
          />
          <Container className="mainContainer documentContainer postContainer blogContainer">
            <div className="posts">
              {MetadataBlog.slice(
                page * perPage,
                (page + 1) * perPage
              ).map(post => {
                return (
                  <BlogPost
                    post={post}
                    content={post.content}
                    truncate={true}
                    key={post.path + post.title}
                    config={this.props.config}
                  />
                );
              })}
              <div className="docs-prevnext">
                {page > 0 &&
                  <a className="docs-prev" href={this.getPageURL(page - 1)}>
                    ← Prev
                  </a>}
                {MetadataBlog.length > (page + 1) * perPage &&
                  <a className="docs-next" href={this.getPageURL(page + 1)}>
                    Next →
                  </a>}
              </div>
            </div>
          </Container>
        </div>
      </Site>
    );
  }
});

module.exports = BlogPageLayout;