You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.3 KiB
Vue
53 lines
1.3 KiB
Vue
<script setup lang="ts">
|
|
definePageMeta({
|
|
middleware: ['auth'],
|
|
})
|
|
|
|
import { z } from 'zod'
|
|
|
|
const posts = usePosts()
|
|
const openCreatePostModal = ref<Boolean>(false)
|
|
|
|
const getPosts = async () => {
|
|
await fetchPosts()
|
|
}
|
|
|
|
const logout = async () => {
|
|
await userLogout()
|
|
useRouter().push('/login')
|
|
}
|
|
|
|
const toggleCreatePostModal = () => {
|
|
openCreatePostModal.value = !openCreatePostModal.value
|
|
}
|
|
|
|
const createPost = () => {
|
|
toggleCreatePostModal()
|
|
}
|
|
|
|
onMounted(() => {
|
|
getPosts()
|
|
})
|
|
</script>
|
|
|
|
<template>
|
|
<div>
|
|
<Header />
|
|
<div class="mt-16 flex w-full items-center justify-center">
|
|
<div class="flex w-1/2 flex-col gap-4 px-4 pb-10 pt-4 2xl:w-1/3">
|
|
<button @click="getUserPosts()"> User Posts </button>
|
|
<div v-if="posts" v-for="post in posts">
|
|
<PostCard :title="post.title" :description="post.description" />
|
|
</div>
|
|
<button @click="getPosts()"> More </button>
|
|
</div>
|
|
</div>
|
|
<button @click="createPost()"
|
|
class="fixed bottom-12 right-12 flex items-center justify-center gap-2 rounded-full bg-blue-500 p-4">
|
|
<Icon name="plus" />
|
|
Create Post
|
|
</button>
|
|
<ModalCreatePost v-if="openCreatePostModal" @close="toggleCreatePostModal()" />
|
|
</div>
|
|
</template>
|