From 94efdfef720094f27f2bcaf88c57bdfeb99e718e Mon Sep 17 00:00:00 2001 From: Lanskikh Date: Thu, 24 Oct 2024 18:58:46 +0500 Subject: [PATCH] fixes upds --- src/app/(main)/blog/[articleId]/edit/page.tsx | 92 +++++----- src/app/globals.css | 115 ++++++------ src/components/ArticleHeader.tsx | 4 +- src/components/BlockActions.tsx | 2 +- .../articleInputs/ArticleContentInput.tsx | 7 +- .../articleInputs/ArticleSliderImageInput.tsx | 18 +- .../articleInputs/ArticleSliderInput.tsx | 14 +- src/components/modals/ArticleFormModal.tsx | 24 +-- .../pages/BlogPage/ArticleContent.tsx | 2 +- .../pages/BlogPage/ArticleSlider.tsx | 6 +- src/components/pages/MainPage/Datamining.tsx | 168 +++++++++--------- tailwind.config.ts | 32 ++-- 12 files changed, 252 insertions(+), 232 deletions(-) diff --git a/src/app/(main)/blog/[articleId]/edit/page.tsx b/src/app/(main)/blog/[articleId]/edit/page.tsx index b73613db..c381e4a6 100644 --- a/src/app/(main)/blog/[articleId]/edit/page.tsx +++ b/src/app/(main)/blog/[articleId]/edit/page.tsx @@ -5,7 +5,6 @@ import { ArticleHeader } from '@/components/ArticleHeader'; import { ArticleContentInput } from '@/components/articleInputs/ArticleContentInput'; import { ArticleSliderInput } from '@/components/articleInputs/ArticleSliderInput'; import { IArticleFormInput } from '@/components/modals/ArticleFormModal'; -import { ArticleCard } from '@/components/pages/BlogPage/ArticleCard'; import { ArticleContent } from '@/components/pages/BlogPage/ArticleContent'; import { useEditArticleMutation } from '@/queries/articles/editArticle'; import { @@ -28,48 +27,45 @@ export default function DashboardArticlePage() { const [showPreview, setShowPreview] = useState(false); const [article, setArticle] = useState(); - const { data } = useGetArticleByIdQuery({ - variables: { id: +articleId }, - }); - - useEffect(() => { - if (data?.article.__typename === 'Article') { - const { __typename, blocks, ...article } = data.article; - setArticle({ - ...article, - blocks: blocks.map(block => - block.__typename === 'Content' - ? { type: 'Content', content: block.content } - : { - type: 'Slider', - images: block.images.map(({ __typename, ...image }) => image), - }, - ), - }); - } - }, [data]); - - const [editArticle] = useEditArticleMutation({ - refetchQueries: ['GetArticles', GetArticleByIdDocument], - }); - const { control, handleSubmit, setValue, getValues, watch } = - useForm({ - defaultValues: article, - }); - - useEffect(() => { - if (article) { - setValue('blocks', article.blocks); - } - }, [article, setValue]); + useForm(); const { fields, append, swap, remove, insert } = useFieldArray({ name: 'blocks', control, }); - const [title, description, createdAt, posterImage, cardImage, tags] = + useGetArticleByIdQuery({ + variables: { id: +articleId }, + onCompleted(data) { + if (data?.article.__typename === 'Article') { + setValue( + 'blocks', + data.article.blocks.map(block => + block.__typename === 'Content' + ? { content: block.content, type: 'Content' } + : { + type: 'Slider', + images: block.images.map(({ __typename, ...image }) => image), + }, + ) as [], + ); + setValue('title', data.article.title); + setValue('description', data.article.description); + setValue('tags', data.article.tags); + setValue('posterImage', data.article.posterImage); + setValue('cardImage', data.article.cardImage); + setValue('createdAt', data.article.createdAt); + } + }, + fetchPolicy: 'no-cache', + }); + + const [editArticle] = useEditArticleMutation({ + refetchQueries: ['GetArticles', GetArticleByIdDocument], + }); + + const [title, description, createdAt, posterImage, cardImage, tags, blocks] = useWatch({ name: [ 'title', @@ -78,6 +74,7 @@ export default function DashboardArticlePage() { 'posterImage', 'cardImage', 'tags', + 'blocks', ], control, }); @@ -91,8 +88,19 @@ export default function DashboardArticlePage() { posterImage, cardImage, tags, + blocks, + id: +articleId, })); - }, [title, description, createdAt, posterImage, cardImage, tags]); + }, [ + title, + description, + createdAt, + posterImage, + cardImage, + tags, + blocks, + articleId, + ]); if (!article) return
not found
; @@ -104,11 +112,12 @@ export default function DashboardArticlePage() { - diff --git a/src/components/modals/ArticleFormModal.tsx b/src/components/modals/ArticleFormModal.tsx index e5f4dd96..4012f03d 100644 --- a/src/components/modals/ArticleFormModal.tsx +++ b/src/components/modals/ArticleFormModal.tsx @@ -100,17 +100,19 @@ export function ArticleFormModal({ defaultValues, set }: IArticleFormProps) { { - setModal(null, ''); - if (set) { - set('title', data.title); - set('description', data.description); - set('tags', data.tags); - set('posterImage', data.posterImage); - set('cardImage', data.cardImage); - set('createdAt', defaultValues.createdAt); - } - })} + onSubmit={handleSubmit( + ({ cardImage, posterImage, description, tags, title }) => { + setModal(null, ''); + if (set) { + set('title', title); + set('description', description); + set('tags', tags); + set('posterImage', posterImage); + set('cardImage', cardImage); + set('createdAt', defaultValues.createdAt); + } + }, + )} className="space-y-4" >