about summary refs log tree commit diff
path: root/components/Posts/PostList/PostList.vue
diff options
context:
space:
mode:
authorPatryk Niedźwiedziński <pniedzwiedzinski19@gmail.com>2019-12-03 13:05:15 +0100
committerPatryk Niedźwiedziński <pniedzwiedzinski19@gmail.com>2019-12-03 13:05:15 +0100
commit34da06762e81f85c5df29fdec66e2055b8b930a9 (patch)
tree490af00a9973732ebe7c3455f638d3faaf54bc9e /components/Posts/PostList/PostList.vue
parent65ff7d9f2daa59e44f0cdb1aae8d7cbcd9d4603f (diff)
downloadpuszcza-34da06762e81f85c5df29fdec66e2055b8b930a9.tar.gz
puszcza-34da06762e81f85c5df29fdec66e2055b8b930a9.zip
Add missing stories
Diffstat (limited to 'components/Posts/PostList/PostList.vue')
-rw-r--r--components/Posts/PostList/PostList.vue55
1 files changed, 55 insertions, 0 deletions
diff --git a/components/Posts/PostList/PostList.vue b/components/Posts/PostList/PostList.vue
new file mode 100644
index 0000000..781099f
--- /dev/null
+++ b/components/Posts/PostList/PostList.vue
@@ -0,0 +1,55 @@
+<template>
+  <pure-post-list v-if="rawPosts" :posts="posts" :loading="loading" />
+</template>
+
+<script>
+import k from '~/api'
+import PurePostList from './PurePostList'
+
+export default {
+  name: 'PostList',
+  components: { PurePostList },
+  props: {
+    max: {
+      type: Number,
+      required: false
+    }
+  },
+  data() {
+    return {
+      loading: true,
+      rawPosts: undefined
+    }
+  },
+  mounted() {
+    if (process.client && this.rawPosts === undefined) {
+      this.loadPostsClient()
+    } else {
+      this.rawPosts = k.getPosts()
+      this.loading = false
+    }
+  },
+  computed: {
+    posts() {
+      if (this.max) {
+        return this.rawPosts.slice(0, this.max)
+      }
+      return this.rawPosts
+    }
+  },
+  methods: {
+    async loadPostsClient() {
+      let posts = await this.$axios.get(
+        `${window.location.origin}/api/posts.json`
+      )
+      this.rawPosts = posts.data
+      this.rawPosts = this.rawPosts.map(post => ({
+        title: post.content.meta.title,
+        description: post.content.description,
+        route: post.route
+      }))
+      this.loading = false
+    }
+  }
+}
+</script>