diff --git a/.env.example b/.env.example index 3237611d..8b0ac04f 100644 --- a/.env.example +++ b/.env.example @@ -2,21 +2,14 @@ ARGON_SECRET=topsecret NEXTAUTH_SECRET=topsecret NEXTAUTH_URL=http://localhost:3000 -KV_REST_API_URL= -KV_REST_API_TOKEN= - # NOTE: The DB/USER/PASSWORD need to be the same with docker-compose values POSTGRES_DB=postgres POSTGRES_USER=postgres POSTGRES_PASSWORD=password -POSTGRES_URL_NON_POOLING="${POSTGRES_URL}" -POSTGRES_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@localhost:5432/${POSTGRES_DB}?schema=public" -POSTGRES_PRISMA_URL="${POSTGRES_URL}?pgbouncer=true&connect_timeout=15" -NEXT_PUBLIC_API_KEY_TINYMCE="" +DATABASE_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@localhost:5432/${POSTGRES_DB}?schema=public" EMAIL_SERVER_USER= # your email EMAIL_SERVER_PASSWORD= # your password EMAIL_SERVER_HOST= #smtp.gmail.com EMAIL_SERVER_PORT= #465 -SENDGRID_API_KEY= \ No newline at end of file diff --git a/.github/workflows/code-checking.yaml b/.github/workflows/code-checking.yaml index d64002e7..667e9579 100644 --- a/.github/workflows/code-checking.yaml +++ b/.github/workflows/code-checking.yaml @@ -20,7 +20,7 @@ jobs: - name: Setup pnpm uses: pnpm/action-setup@v2 - with: + with: version: 8 - name: Setup Node.js environment @@ -33,7 +33,7 @@ jobs: run: pnpm i --frozen-lockfile - name: Linting - run: pnpm run lint + run: pnpm lint - name: Checking TypeScript - run: pnpm run typecheck \ No newline at end of file + run: pnpm typecheck diff --git a/.github/workflows/prisma-preview.yaml b/.github/workflows/prisma-preview.yaml index 8e3bd7da..ee393e55 100644 --- a/.github/workflows/prisma-preview.yaml +++ b/.github/workflows/prisma-preview.yaml @@ -39,7 +39,6 @@ jobs: run: pnpm i --frozen-lockfile - name: Deploy Migrations - run: pnpm run migrate:deploy + run: pnpm migrate deploy env: - POSTGRES_PRISMA_URL: ${{ secrets.POSTGRES_PRISMA_URL_PREVIEW }} - POSTGRES_URL_NON_POOLING: ${{ secrets.POSTGRES_URL_NON_POOLING_PREVIEW }} + DATABASE_URL: ${{ secrets.DATABASE_URL_PREVIEW }} diff --git a/.github/workflows/prisma-production.yaml b/.github/workflows/prisma-production.yaml index d5f628e1..d6c2db0b 100644 --- a/.github/workflows/prisma-production.yaml +++ b/.github/workflows/prisma-production.yaml @@ -38,7 +38,6 @@ jobs: run: pnpm i --frozen-lockfile - name: Deploy Migrations - run: pnpm run migrate:deploy + run: pnpm prisma migrate deploy env: - POSTGRES_PRISMA_URL: ${{ secrets.POSTGRES_PRISMA_URL }} - POSTGRES_URL_NON_POOLING: ${{ secrets.POSTGRES_URL_NON_POOLING }} + DATABASE_URL: ${{ secrets.DATABASE_URL }} diff --git a/README.md b/README.md index 9f9c2f94..8069c980 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ -# Ninjutsu Stack +

Ninjutsu Stack

-The stack that use Chakra +

Made by ⚡Sieutoc

+ +

+ +

## Features @@ -20,7 +24,7 @@ This template includes the following: ## Demo -https://ninjutsu-demo.vercel.app +https://ninjutsu.sieutoc.website ## Getting Started diff --git a/app/[locale]/(auth)/error.tsx b/app/(auth)/error.tsx similarity index 100% rename from app/[locale]/(auth)/error.tsx rename to app/(auth)/error.tsx diff --git a/app/[locale]/(auth)/forgot-password/ForgotPasswordForm/index.tsx b/app/(auth)/forgot-password/ForgotPasswordForm/index.tsx similarity index 100% rename from app/[locale]/(auth)/forgot-password/ForgotPasswordForm/index.tsx rename to app/(auth)/forgot-password/ForgotPasswordForm/index.tsx diff --git a/app/[locale]/(auth)/forgot-password/confirm-email/Status/index.tsx b/app/(auth)/forgot-password/confirm-email/Status/index.tsx similarity index 100% rename from app/[locale]/(auth)/forgot-password/confirm-email/Status/index.tsx rename to app/(auth)/forgot-password/confirm-email/Status/index.tsx diff --git a/app/[locale]/(auth)/forgot-password/confirm-email/loading.tsx b/app/(auth)/forgot-password/confirm-email/loading.tsx similarity index 100% rename from app/[locale]/(auth)/forgot-password/confirm-email/loading.tsx rename to app/(auth)/forgot-password/confirm-email/loading.tsx diff --git a/app/[locale]/(auth)/forgot-password/confirm-email/page.tsx b/app/(auth)/forgot-password/confirm-email/page.tsx similarity index 95% rename from app/[locale]/(auth)/forgot-password/confirm-email/page.tsx rename to app/(auth)/forgot-password/confirm-email/page.tsx index 1c8bca58..d5cff553 100644 --- a/app/[locale]/(auth)/forgot-password/confirm-email/page.tsx +++ b/app/(auth)/forgot-password/confirm-email/page.tsx @@ -1,14 +1,12 @@ -import { redirect } from 'next/navigation'; -import { Stack } from '@/components/chakra'; +import { verifyResetPassword } from '@/services/users'; +import { HOUR_MAX_CONFIRM } from '@/utils/constants'; import { Container } from '@/components/chakra'; -import { Locale } from '@/types'; import { differenceInHours } from 'date-fns'; +import { Stack } from '@/components/chakra'; +import { redirect } from 'next/navigation'; import { Status } from './Status'; -import { verifyResetPassword } from '@/services/users'; -import { HOUR_MAX_CONFIRM } from '@/utils/constants'; type ConfirmResetPassFromEmailType = { - params: { locale: Locale }; searchParams: { code: string }; }; export default async function ConfirmResetPassFromEmail( diff --git a/app/[locale]/(auth)/forgot-password/loading.tsx b/app/(auth)/forgot-password/loading.tsx similarity index 100% rename from app/[locale]/(auth)/forgot-password/loading.tsx rename to app/(auth)/forgot-password/loading.tsx diff --git a/app/[locale]/(auth)/forgot-password/page.tsx b/app/(auth)/forgot-password/page.tsx similarity index 100% rename from app/[locale]/(auth)/forgot-password/page.tsx rename to app/(auth)/forgot-password/page.tsx diff --git a/app/[locale]/(auth)/forgot-password/update-password/UpdatePasswordForm/index.tsx b/app/(auth)/forgot-password/update-password/UpdatePasswordForm/index.tsx similarity index 100% rename from app/[locale]/(auth)/forgot-password/update-password/UpdatePasswordForm/index.tsx rename to app/(auth)/forgot-password/update-password/UpdatePasswordForm/index.tsx diff --git a/app/[locale]/(auth)/forgot-password/update-password/loading.tsx b/app/(auth)/forgot-password/update-password/loading.tsx similarity index 100% rename from app/[locale]/(auth)/forgot-password/update-password/loading.tsx rename to app/(auth)/forgot-password/update-password/loading.tsx diff --git a/app/[locale]/(auth)/forgot-password/update-password/page.tsx b/app/(auth)/forgot-password/update-password/page.tsx similarity index 100% rename from app/[locale]/(auth)/forgot-password/update-password/page.tsx rename to app/(auth)/forgot-password/update-password/page.tsx diff --git a/app/[locale]/(auth)/layout.tsx b/app/(auth)/layout.tsx similarity index 100% rename from app/[locale]/(auth)/layout.tsx rename to app/(auth)/layout.tsx diff --git a/app/[locale]/(auth)/login/LoginForm/index.tsx b/app/(auth)/login/LoginForm/index.tsx similarity index 100% rename from app/[locale]/(auth)/login/LoginForm/index.tsx rename to app/(auth)/login/LoginForm/index.tsx diff --git a/app/[locale]/(auth)/login/loading.tsx b/app/(auth)/login/loading.tsx similarity index 100% rename from app/[locale]/(auth)/login/loading.tsx rename to app/(auth)/login/loading.tsx diff --git a/app/[locale]/(auth)/login/page.tsx b/app/(auth)/login/page.tsx similarity index 100% rename from app/[locale]/(auth)/login/page.tsx rename to app/(auth)/login/page.tsx diff --git a/app/[locale]/(auth)/signup/SignUpForm/index.tsx b/app/(auth)/signup/SignUpForm/index.tsx similarity index 100% rename from app/[locale]/(auth)/signup/SignUpForm/index.tsx rename to app/(auth)/signup/SignUpForm/index.tsx diff --git a/app/[locale]/(auth)/signup/loading.tsx b/app/(auth)/signup/loading.tsx similarity index 100% rename from app/[locale]/(auth)/signup/loading.tsx rename to app/(auth)/signup/loading.tsx diff --git a/app/[locale]/(auth)/signup/page.tsx b/app/(auth)/signup/page.tsx similarity index 100% rename from app/[locale]/(auth)/signup/page.tsx rename to app/(auth)/signup/page.tsx diff --git a/app/[locale]/(custom)/[slug]/page.tsx b/app/(custom)/[slug]/page.tsx similarity index 60% rename from app/[locale]/(custom)/[slug]/page.tsx rename to app/(custom)/[slug]/page.tsx index 6cc311bb..f9377079 100644 --- a/app/[locale]/(custom)/[slug]/page.tsx +++ b/app/(custom)/[slug]/page.tsx @@ -1,26 +1,16 @@ import { Box, Container, Heading } from '@/components/chakra'; import { HTMLParser } from '@/components/client'; import { getPage } from '@/services/pages'; -import { redirect } from 'next/navigation'; export default async function DynamicPage({ - params: { slug, locale }, + params: { slug }, }: { - params: { slug: string; locale: string }; + params: { slug: string }; }) { const page = await getPage({ where: { slug } }); - const foundTranslation = page?.translatedPages.find( - (p) => p.locale === locale - ); - - if (foundTranslation?.locale === locale) { - redirect(`/${locale}/${foundTranslation.slug}`); - } else if (page?.originalPage?.locale === locale) { - redirect(`/${locale}/${page?.originalPage.slug}`); - } - if (!page) { + // TODO: Make 404 display return 'not found'; } diff --git a/app/[locale]/(custom)/about-us/Content/index.tsx b/app/(custom)/about-us/Content/index.tsx similarity index 100% rename from app/[locale]/(custom)/about-us/Content/index.tsx rename to app/(custom)/about-us/Content/index.tsx diff --git a/app/[locale]/(custom)/about-us/page.tsx b/app/(custom)/about-us/page.tsx similarity index 100% rename from app/[locale]/(custom)/about-us/page.tsx rename to app/(custom)/about-us/page.tsx diff --git a/app/[locale]/(custom)/blog/[slug]/edit/BlogEditForm/ButtonCreatePost.tsx b/app/(custom)/blog/[slug]/edit/BlogEditForm/ButtonCreatePost.tsx similarity index 100% rename from app/[locale]/(custom)/blog/[slug]/edit/BlogEditForm/ButtonCreatePost.tsx rename to app/(custom)/blog/[slug]/edit/BlogEditForm/ButtonCreatePost.tsx diff --git a/app/[locale]/(custom)/blog/[slug]/edit/BlogEditForm/index.tsx b/app/(custom)/blog/[slug]/edit/BlogEditForm/index.tsx similarity index 99% rename from app/[locale]/(custom)/blog/[slug]/edit/BlogEditForm/index.tsx rename to app/(custom)/blog/[slug]/edit/BlogEditForm/index.tsx index b66e3099..f3b430f7 100644 --- a/app/[locale]/(custom)/blog/[slug]/edit/BlogEditForm/index.tsx +++ b/app/(custom)/blog/[slug]/edit/BlogEditForm/index.tsx @@ -60,7 +60,6 @@ export default function BlogEditForm({ data }: BlogEditFormProps) { content, slug: slugify(title), publishedAt, - locale: 'VI', authorId: userID, }), }); @@ -100,7 +99,6 @@ export default function BlogEditForm({ data }: BlogEditFormProps) { content, slug: slugify(title), publishedAt, - locale: 'VI', authorId: userID, }), }); diff --git a/app/[locale]/(custom)/blog/[slug]/edit/page.tsx b/app/(custom)/blog/[slug]/edit/page.tsx similarity index 100% rename from app/[locale]/(custom)/blog/[slug]/edit/page.tsx rename to app/(custom)/blog/[slug]/edit/page.tsx diff --git a/app/[locale]/(custom)/blog/[slug]/page.tsx b/app/(custom)/blog/[slug]/page.tsx similarity index 100% rename from app/[locale]/(custom)/blog/[slug]/page.tsx rename to app/(custom)/blog/[slug]/page.tsx diff --git a/app/[locale]/(custom)/blog/page.tsx b/app/(custom)/blog/page.tsx similarity index 78% rename from app/[locale]/(custom)/blog/page.tsx rename to app/(custom)/blog/page.tsx index c7a40e07..f0ace32d 100644 --- a/app/[locale]/(custom)/blog/page.tsx +++ b/app/(custom)/blog/page.tsx @@ -1,19 +1,14 @@ import { Box, Heading, SimpleGrid, Spinner } from '@/components/chakra'; import { PostCard } from '@/components/client'; import { prisma } from '@/configs/prisma'; -import { Locale, Metadata } from '@/types'; +import { Metadata } from '@/types'; export const metadata: Metadata = { title: 'Blog', }; -export default async function BlogsPage({ - params: { locale }, -}: { - params: { locale: Locale }; -}) { +export default async function BlogsPage() { const data = await prisma?.post.findMany({ - where: { locale }, take: 25, orderBy: { createdAt: 'desc' }, }); diff --git a/app/[locale]/(custom)/blog/post-management/page.tsx b/app/(custom)/blog/post-management/page.tsx similarity index 98% rename from app/[locale]/(custom)/blog/post-management/page.tsx rename to app/(custom)/blog/post-management/page.tsx index e832e35c..0507a1d1 100644 --- a/app/[locale]/(custom)/blog/post-management/page.tsx +++ b/app/(custom)/blog/post-management/page.tsx @@ -18,10 +18,10 @@ import { } from '@/components/chakra'; import slugify from 'slugify'; import { useRouter, useSearchParams } from 'next/navigation'; -import { useSWR, useAuth, useToast } from '@/hooks'; -import { ChevronDownIcon, ChevronUpIcon } from '@/icons'; import { PostList, TextEditor } from '@/components/client'; -import type { Post } from '@/types'; +import { ChevronDownIcon, ChevronUpIcon } from '@/icons'; +import { useSWR, useAuth, useToast } from '@/hooks'; +import { Post } from '@/types'; type RequireInputType = { [key: string]: string; @@ -63,7 +63,6 @@ export default function BlogEditor() { content, slug: slugify(title), publishedAt, - locale: 'VI', authorId: userID, }), }); @@ -103,7 +102,6 @@ export default function BlogEditor() { content, slug: slugify(title), publishedAt, - locale: 'VI', authorId: userID, }), }); diff --git a/app/[locale]/(custom)/contact/page.tsx b/app/(custom)/contact/page.tsx similarity index 100% rename from app/[locale]/(custom)/contact/page.tsx rename to app/(custom)/contact/page.tsx diff --git a/app/[locale]/(custom)/error.tsx b/app/(custom)/error.tsx similarity index 100% rename from app/[locale]/(custom)/error.tsx rename to app/(custom)/error.tsx diff --git a/app/[locale]/(custom)/home/page.tsx b/app/(custom)/home/page.tsx similarity index 100% rename from app/[locale]/(custom)/home/page.tsx rename to app/(custom)/home/page.tsx diff --git a/app/[locale]/(custom)/layout.tsx b/app/(custom)/layout.tsx similarity index 67% rename from app/[locale]/(custom)/layout.tsx rename to app/(custom)/layout.tsx index be6066ea..d5209e56 100644 --- a/app/[locale]/(custom)/layout.tsx +++ b/app/(custom)/layout.tsx @@ -1,21 +1,17 @@ -import { LocaleSwitcher, Navbar } from '@/components/client'; import { Box, Container, Flex } from '@/components/chakra'; import { ProfileMenu } from '@/components/server'; -import type { ReactNode, Locale } from '@/types'; +import { Navbar } from '@/components/client'; +import { ReactNode } from '@/types'; export default async function CustomLayout({ children, }: { children: ReactNode; - params: { locale: Locale }; }) { return ( - - - - + +
+

Ninjustsu Stack

+

The stack that uses Chakra

+
+ + ); +} diff --git a/app/[locale]/(custom)/protected/page.tsx b/app/(custom)/protected/page.tsx similarity index 100% rename from app/[locale]/(custom)/protected/page.tsx rename to app/(custom)/protected/page.tsx diff --git a/app/[locale]/(default)/dashboard/files/loading.tsx b/app/(default)/dashboard/files/loading.tsx similarity index 100% rename from app/[locale]/(default)/dashboard/files/loading.tsx rename to app/(default)/dashboard/files/loading.tsx diff --git a/app/[locale]/(default)/dashboard/files/page.tsx b/app/(default)/dashboard/files/page.tsx similarity index 100% rename from app/[locale]/(default)/dashboard/files/page.tsx rename to app/(default)/dashboard/files/page.tsx diff --git a/app/[locale]/(default)/dashboard/loading.tsx b/app/(default)/dashboard/loading.tsx similarity index 100% rename from app/[locale]/(default)/dashboard/loading.tsx rename to app/(default)/dashboard/loading.tsx diff --git a/app/[locale]/(default)/dashboard/page.tsx b/app/(default)/dashboard/page.tsx similarity index 100% rename from app/[locale]/(default)/dashboard/page.tsx rename to app/(default)/dashboard/page.tsx diff --git a/app/[locale]/(default)/dashboard/pages/[id]/advanced/page.tsx b/app/(default)/dashboard/pages/[id]/advanced/page.tsx similarity index 81% rename from app/[locale]/(default)/dashboard/pages/[id]/advanced/page.tsx rename to app/(default)/dashboard/pages/[id]/advanced/page.tsx index 995fb6ae..dbf19178 100644 --- a/app/[locale]/(default)/dashboard/pages/[id]/advanced/page.tsx +++ b/app/(default)/dashboard/pages/[id]/advanced/page.tsx @@ -1,8 +1,7 @@ +import { Box, Flex, Skeleton } from '@/components/chakra'; import { getPage } from '@/services/pages'; -import { Box, Flex, Skeleton } from '@/components/chakra'; -import { DeleteSection } from '../../components/PageForm/DeleteSection'; -import { BasicSEO } from '../../components/BasicSEO'; +import { BasicSEO, DeleteSection } from '../../components'; type AdvancedSettingsProps = { params: { id: string }; diff --git a/app/[locale]/(default)/dashboard/pages/[id]/layout.tsx b/app/(default)/dashboard/pages/[id]/layout.tsx similarity index 77% rename from app/[locale]/(default)/dashboard/pages/[id]/layout.tsx rename to app/(default)/dashboard/pages/[id]/layout.tsx index bb2e347f..bba1bdba 100644 --- a/app/[locale]/(default)/dashboard/pages/[id]/layout.tsx +++ b/app/(default)/dashboard/pages/[id]/layout.tsx @@ -1,16 +1,14 @@ import { GoBackButton, SettingNav } from '@/components/client'; import { Box, Flex } from '@/components/chakra'; -import type { ReactNode, Locale } from '@/types'; - -import { Translations } from '../components'; import { getPage } from '@/services/pages'; +import { ReactNode } from '@/types'; export default async function EditPageLayout({ children, params, }: { children: ReactNode; - params: { locale: Locale; id: string }; + params: { id: string }; }) { const page = await getPage({ where: { id: params.id } }); @@ -18,12 +16,10 @@ export default async function EditPageLayout({ Back to Pages - - {page && } ); } diff --git a/app/[locale]/(default)/dashboard/pages/components/BasicSEO/index.tsx b/app/(default)/dashboard/pages/components/BasicSEO/index.tsx similarity index 100% rename from app/[locale]/(default)/dashboard/pages/components/BasicSEO/index.tsx rename to app/(default)/dashboard/pages/components/BasicSEO/index.tsx diff --git a/app/[locale]/(default)/dashboard/pages/components/PageForm/DeleteSection.tsx b/app/(default)/dashboard/pages/components/PageForm/DeleteSection.tsx similarity index 100% rename from app/[locale]/(default)/dashboard/pages/components/PageForm/DeleteSection.tsx rename to app/(default)/dashboard/pages/components/PageForm/DeleteSection.tsx diff --git a/app/[locale]/(default)/dashboard/pages/components/PageForm/index.tsx b/app/(default)/dashboard/pages/components/PageForm/index.tsx similarity index 87% rename from app/[locale]/(default)/dashboard/pages/components/PageForm/index.tsx rename to app/(default)/dashboard/pages/components/PageForm/index.tsx index 5310712c..7fce4792 100644 --- a/app/[locale]/(default)/dashboard/pages/components/PageForm/index.tsx +++ b/app/(default)/dashboard/pages/components/PageForm/index.tsx @@ -9,43 +9,26 @@ import { Stack, } from '@/components/chakra'; import { CustomEditable, FormWrapper, TextEditor } from '@/components/client'; -import { - useAuth, - useEffect, - useLocale, - useRouter, - useState, - useToast, -} from '@/hooks'; +import { useAuth, useEffect, useRouter, useState, useToast } from '@/hooks'; import { ArrowUpIcon, RepeatIcon } from '@/icons'; -import { Page, PageWithPayload, Locale, HttpMethod } from '@/types'; +import { Page, PageWithPayload, HttpMethod } from '@/types'; import { isEqual } from '@/utils/compare'; import { fetcher } from '@/utils/fetcher'; import slugify from 'slugify'; +export * from './DeleteSection'; + export type PageFormProps = { title?: string; backPath?: string; data?: PageWithPayload; - translatedPages?: Page[]; - originalId?: string; - translateTo?: Locale; }; -export const PageForm = ({ - backPath, - title, - data: propsData, - translatedPages, - originalId, - translateTo, -}: PageFormProps) => { +export const PageForm = ({ data: propsData }: PageFormProps) => { const toast = useToast(); const router = useRouter(); const { session } = useAuth(); - const { currentLocale, defaultLocale } = useLocale(); - const [isLoading, setIsLoading] = useState(false); const initialData = { @@ -53,8 +36,6 @@ export const PageForm = ({ title: propsData?.title ?? '', slug: propsData?.slug ?? '', content: propsData?.content ?? '', - locale: propsData?.locale ?? translateTo ?? currentLocale, - originalId: propsData?.originalId ?? originalId, meta: propsData?.meta ?? {}, tags: propsData?.tags ?? [], }; @@ -111,8 +92,6 @@ export const PageForm = ({ title, slug, content, - originalId, - locale: translateTo ?? defaultLocale, authorId: session.user.id, }), }); @@ -134,8 +113,6 @@ export const PageForm = ({ - - Title @@ -16,7 +10,7 @@ export default function NewPageLayout({ ; +} diff --git a/app/[locale]/(default)/dashboard/pages/page.tsx b/app/(default)/dashboard/pages/page.tsx similarity index 77% rename from app/[locale]/(default)/dashboard/pages/page.tsx rename to app/(default)/dashboard/pages/page.tsx index aad6ab67..88907055 100644 --- a/app/[locale]/(default)/dashboard/pages/page.tsx +++ b/app/(default)/dashboard/pages/page.tsx @@ -3,24 +3,17 @@ import { AddNewButton } from '@/components/client'; import { queryPages } from '@/services/pages'; import { getSession } from '@/configs/auth'; import { redirect } from 'next/navigation'; -import { Locale } from '@/types'; import { PageTable } from './components'; -export default async function PagesDashboard({ - params: { locale }, -}: { - params: { locale: Locale }; -}) { +export default async function PagesDashboard() { const session = await getSession(); if (!session) { redirect('/login'); } - const pages = await queryPages({ - where: { locale }, - }); + const pages = await queryPages({}); return ( diff --git a/app/(default)/dashboard/posts/[id]/page.tsx b/app/(default)/dashboard/posts/[id]/page.tsx new file mode 100644 index 00000000..76c347cc --- /dev/null +++ b/app/(default)/dashboard/posts/[id]/page.tsx @@ -0,0 +1,17 @@ +import { prisma } from '@/configs/prisma'; + +import { PostForm } from '../components'; + +type EditPostProps = { + params: { + id: string; + }; +}; + +export default async function EditPost({ params }: EditPostProps) { + const { id } = params; + + const post = await prisma.post.findUnique({ where: { id } }); + + return ; +} diff --git a/app/[locale]/(default)/dashboard/posts/components/PostForm/DeleteSection.tsx b/app/(default)/dashboard/posts/components/PostForm/DeleteSection.tsx similarity index 100% rename from app/[locale]/(default)/dashboard/posts/components/PostForm/DeleteSection.tsx rename to app/(default)/dashboard/posts/components/PostForm/DeleteSection.tsx diff --git a/app/[locale]/(default)/dashboard/posts/components/PostForm/index.tsx b/app/(default)/dashboard/posts/components/PostForm/index.tsx similarity index 64% rename from app/[locale]/(default)/dashboard/posts/components/PostForm/index.tsx rename to app/(default)/dashboard/posts/components/PostForm/index.tsx index b0dcd520..e713ae0d 100644 --- a/app/[locale]/(default)/dashboard/posts/components/PostForm/index.tsx +++ b/app/(default)/dashboard/posts/components/PostForm/index.tsx @@ -6,10 +6,6 @@ import { Heading, IconButton, Input, - Menu, - MenuButton, - MenuItem, - MenuList, Stack, Tab, TabList, @@ -23,18 +19,9 @@ import { GoBackButton, TextEditor, } from '@/components/client'; -import { - AddIcon, - ArrowUpIcon, - CheckCircleIcon, - ChevronDownIcon, - GlobeIcon, - LockIcon, - RepeatIcon, -} from '@/icons'; -import { useEffect, useLocale, useRouter, useState, useToast } from '@/hooks'; +import { ArrowUpIcon, RepeatIcon } from '@/icons'; +import { useEffect, useRouter, useState, useToast } from '@/hooks'; import { createPost, updatePost } from '@/services/posts'; -import { i18n } from '@/configs/i18n.config'; import { isEqual } from '@/utils/compare'; import { Post } from '@/types'; import slugify from 'slugify'; @@ -44,33 +31,23 @@ import { DeleteSection } from './DeleteSection'; export type PostFormProps = { title?: string; backPath?: string; - data?: Post; - translatedPosts?: Post[]; - originalId?: string; - translateTo?: string; + data?: Post | null; }; export const PostForm = ({ backPath, title, data: propsData, - translatedPosts, - originalId, - translateTo, }: PostFormProps) => { const toast = useToast(); const router = useRouter(); - const { currentLocale, defaultLocale } = useLocale(); - const [isLoading, setIsLoading] = useState(false); const initialData = { title: propsData?.title ?? '', slug: propsData?.slug ?? '', content: propsData?.content ?? '', - locale: propsData?.locale ?? translateTo ?? currentLocale, - originalId: propsData?.originalId ?? originalId, }; const [data, setInputData] = useState(initialData); @@ -88,43 +65,6 @@ export const PostForm = ({ const isFormDirty = isEqual(data, initialData); - const getTranslationIcon = (locale: string) => { - const foundTranslated = translatedPosts?.find((p) => p.locale === locale); - - if (defaultLocale === locale) { - return ; - } - - if ( - (foundTranslated && foundTranslated.locale === locale) || - data.locale === locale - ) { - return ; - } - - return ; - }; - - const handleNewTranslatedPost = (locale: string) => { - if (!propsData) return; - - const foundTranslated = translatedPosts?.find((p) => p.locale === locale); - - if (foundTranslated) { - // Go to edit translated post version - const newPath = `/dashboard/posts/${foundTranslated.id}`; - router.push(newPath); - } else if (data.originalId) { - // Go to edit original post version - const newPath = `/dashboard/posts/${data.originalId}`; - router.push(newPath); - } else { - // Or else go to create new post - const newPath = `/dashboard/posts/new?translateTo=${locale}&originalId=${propsData.id}`; - router.push(newPath); - } - }; - const handleSubmit = async (formData: FormData) => { setIsLoading(true); @@ -136,13 +76,6 @@ export const PostForm = ({ router.refresh(); } } else { - if (originalId && translateTo) { - formData.append('originalId', originalId); - formData.append('locale', translateTo); - } else { - formData.append('locale', currentLocale); - } - const response = await createPost(formData); if (response) { @@ -167,31 +100,6 @@ export const PostForm = ({ - - } - variant="outline" - isDisabled={!propsData} - > - Translations - - - {i18n.locales.map(({ label, value }) => { - return ( - handleNewTranslatedPost(value)} - > - {label} {defaultLocale === value ? '(default)' : ''} - - ); - })} - - -