Vue Home.vue

PHOTO EMBED

Wed Nov 03 2021 14:06:27 GMT+0000 (Coordinated Universal Time)

Saved by @devdave

<template>
  <div class="homepage__onLoad"></div>
  <Nav />
  <!-- home page -->
  <div class="homepage__container">
    <div class="homepage__wrapper">
      <!-- create post component -->
      <Post-create
        :loggedUsername="loggedUsername"
        :loggedFirstname="loggedFirstname"
        v-on:postUpdated="handlePostUpdated"
      />
      <!-- create post component -->

      <!-- Post component -->
      <Post
        v-for="post in posts"
        :key="post.id"
        :post="post"
        class="post__container profile__contentContainer--animation"
        v-on:postUpdated="handlePostUpdated"
      />
      <!-- Post component -->
    </div>
  </div>
  <!-- home page -->
  <div class="responsiveSpacer"></div>
</template>

<script>
// => Plugins
import axios from "axios";

// => Components
import Nav from "@/components/Nav";
import Post from "@/components/Post";
import PostCreate from "@/components/Post-create";

export default {
  data() {
    const loggedUser = localStorage.getItem("userId");
    const loggedUsername = localStorage.getItem("username");

    const splittedUser = loggedUsername.split(" ");
    const loggedFirstname = splittedUser[0];

    return {
      posts: [],
      errors: [],
      loggedUser: loggedUser,
      loggedUsername: loggedUsername,
      loggedFirstname: loggedFirstname,
    };
  },
  components: {
    Nav,
    Post,
    PostCreate,
  },
  methods: {
    handlePostUpdated: async function() {
      console.log("handle post updated");

      await this.loadPosts();
    },
    loadPosts: async function() {
      const API_SERVER = "http://localhost:3000";

      try {
        const response = await axios.get(API_SERVER + `/posts`, {
          headers: {
            Authorization: "Bearer " + localStorage.getItem("token"),
          },
        });

        this.posts = response.data;
      } catch (error) {
        this.errors.push(error);
      }
    },
  },
  async mounted() {
    await this.loadPosts();
  },
};
</script>
content_copyCOPY