From 1d606fe88f97f87e32a58b1b187a71f40c70169c Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Wed, 29 Mar 2023 14:29:29 +0700 Subject: blog detail --- src/pages/about-us.jsx | 4 ++- src/pages/blog/[slug].jsx | 54 ++++++++++++++++++++++++++++ src/pages/blog/index.jsx | 90 +++++++++++++++++++++-------------------------- src/pages/video.jsx | 2 +- 4 files changed, 98 insertions(+), 52 deletions(-) (limited to 'src/pages') diff --git a/src/pages/about-us.jsx b/src/pages/about-us.jsx index 9bc67673..9c9c8baf 100644 --- a/src/pages/about-us.jsx +++ b/src/pages/about-us.jsx @@ -4,7 +4,9 @@ import PageContent from '@/lib/content/components/PageContent' export default function AboutUs() { return ( - +
+ +
) } diff --git a/src/pages/blog/[slug].jsx b/src/pages/blog/[slug].jsx index e69de29b..63e53bf0 100644 --- a/src/pages/blog/[slug].jsx +++ b/src/pages/blog/[slug].jsx @@ -0,0 +1,54 @@ +import Link from '@/core/components/elements/Link/Link' +import BasicLayout from '@/core/components/layouts/BasicLayout' +import { createSlug, getIdFromSlug } from '@/core/utils/slug' +import useBlog from '@/lib/blog/hooks/useBlog' +import { useRouter } from 'next/router' + +export default function BlogDetail() { + const router = useRouter() + const { slug = '' } = router.query + const id = getIdFromSlug(slug) + const { blog } = useBlog({ id }) + + const parsedContent = blog.data?.content?.replaceAll( + 'src="/web/image', + `src="${process.env.NEXT_PUBLIC_ODOO_HOST}/web/image` + ) + + const contentClassNames = ` + prose + prose-gray + prose-a:text-red_r-10 + prose-a:no-underline + prose-p:my-4 + prose-headings:mt-6 + prose-headings:mb-3 + prose-headings:font-medium + prose-h1:text-title-sm + prose-h2:text-h-md + prose-img:my-0 + prose-img:mb-1 + prose-img:inline-block + prose-hr:my-3 + max-w-none + ` + + return ( + +
+

+ {blog.data?.title} +

+

+ Diposting pada tanggal {blog.data?.postDate}{' '} + {blog.data?.category?.id && `di ${blog.data?.category?.name}`} +

+ +
+
+
+ ) +} diff --git a/src/pages/blog/index.jsx b/src/pages/blog/index.jsx index c755ec82..041fc046 100644 --- a/src/pages/blog/index.jsx +++ b/src/pages/blog/index.jsx @@ -1,74 +1,64 @@ import BasicLayout from '@/core/components/layouts/BasicLayout' -import { Card, Spinner } from 'flowbite-react' import Link from 'next/link' -import { useCallback, useEffect, useState } from 'react' import { createSlug } from '@/core/utils/slug' -import useDevice from '@/core/hooks/useDevice' -import Image from 'next/image' -import odooApi from '@/core/api/odooApi' +import Image from '@/core/components/elements/Image/Image' +import useBlogs from '@/lib/blog/hooks/useBlogs' +import { useRouter } from 'next/router' +import Pagination from '@/core/components/elements/Pagination/Pagination' +import Spinner from '@/core/components/elements/Spinner/Spinner' export default function Blogs() { - const [isLoading, setIsLoading] = useState(true) - const [blogsValues, setBlogs] = useState([]) - const { isMobile } = useDevice() + const router = useRouter() + const limit = 16 - const getBlogs = useCallback(async () => { - // setIsLoading(true) - const result = await odooApi('GET', '/api/v1/blog') - setBlogs(result.blogs) - setIsLoading(false) - }, []) + const { page = 1 } = router.query + const { blogs } = useBlogs({ limit, offset: limit * (page - 1) }) - useEffect(() => { - getBlogs() - }, [getBlogs]) + const pageCount = Math.ceil(blogs?.data?.blogTotal / limit) - if (isLoading) { - return ( - <> - -
- -
-
- - ) - } return ( -
-
-

Blog Indoteknik

-
-
- {blogsValues?.map((blog, index) => { +
+

Blog Indoteknik

+ + {blogs.isLoading && ( +
+ +
+ )} + +
+ {blogs.data?.blogs?.map((blog, index) => { return (
- {blog.title} -
- - {blog.category.name} - + + {blog.title} + +
+
{blog.category.name}
{blog.title} -

- {blog.postDate} -

+
{blog.postDate}
) })}
+ +
) diff --git a/src/pages/video.jsx b/src/pages/video.jsx index c7248da1..c2348091 100644 --- a/src/pages/video.jsx +++ b/src/pages/video.jsx @@ -47,7 +47,7 @@ export default function Video() { currentPage={parseInt(page)} pageCount={pageCount} url={`/video`} - className='mt-10' + className='mt-4 md:mt-10' />
-- cgit v1.2.3