diff --git a/packages/client/src/app/admin/page.tsx b/packages/client/src/app/admin/page.tsx index 9609df6..4788498 100644 --- a/packages/client/src/app/admin/page.tsx +++ b/packages/client/src/app/admin/page.tsx @@ -1,4 +1,4 @@ -import SubmissionCard from '@/components/submission/AdminSubmissionCard' +import AdminSubmissionCard from '@/components/submission/AdminSubmissionCard' import { getAllSubmissions } from '@/network/getAllSubmissions' export default async function Page() { @@ -13,11 +13,26 @@ export default async function Page() {

zsadmin

-
- {submissions.map(submission => ( - - ))} -
+ {submissions.pendingSubmissions.length > 0 && ( + <> +

Bírálatlan

+
+ {submissions.pendingSubmissions.map(submission => ( + + ))} +
+ + )} + {submissions.reviewedSubmissions.length > 0 && ( + <> +

Elbírált

+
+ {submissions.reviewedSubmissions.map(submission => ( + + ))} +
+ + )} ) } diff --git a/packages/client/src/app/links/page.tsx b/packages/client/src/app/links/page.tsx index ec21b33..14e533e 100644 --- a/packages/client/src/app/links/page.tsx +++ b/packages/client/src/app/links/page.tsx @@ -16,20 +16,23 @@ export default function Links() { return (
- +
+ {profile.data && ( + + )} + +
{links.map(link => ( ))}
- {profile.data && ( - - )}
) } diff --git a/packages/client/src/app/page.tsx b/packages/client/src/app/page.tsx index 2074daa..c6feaed 100644 --- a/packages/client/src/app/page.tsx +++ b/packages/client/src/app/page.tsx @@ -11,7 +11,6 @@ export default async function Home() { return (
-

StartlapSCH

{favLinks.success && } {/* */} diff --git a/packages/client/src/components/collection/CollectionListItem.tsx b/packages/client/src/components/collection/CollectionListItem.tsx index 100aa34..096d22d 100644 --- a/packages/client/src/components/collection/CollectionListItem.tsx +++ b/packages/client/src/components/collection/CollectionListItem.tsx @@ -17,7 +17,7 @@ export function CollectionListItem({ collection }: Props) { return (
-
+
{collection.name}

{collection.name}

-

Linkek: {collection.links}

+

{collection.links} link

) diff --git a/packages/client/src/components/collection/CollectionsContainer.tsx b/packages/client/src/components/collection/CollectionsContainer.tsx index 99e32da..efbff1e 100644 --- a/packages/client/src/components/collection/CollectionsContainer.tsx +++ b/packages/client/src/components/collection/CollectionsContainer.tsx @@ -1,5 +1,4 @@ 'use client' -import { clsx } from 'clsx' import Link from 'next/link' import { useState } from 'react' import { TbPlus } from 'react-icons/tb' @@ -27,25 +26,25 @@ export default function CollectionsContainer({ collections }: Props) { } return ( - <> -
-

Kollekciók

- +
+
+
+ {profile.data && ( + + )} + +
+
+ {filteredCollections.map(collection => ( + + ))} +
- -
- {filteredCollections.map(curCollection => ( - - ))} -
- {profile.data && ( - - )} - +
) } diff --git a/packages/client/src/components/keywords/Keywords.tsx b/packages/client/src/components/keywords/Keywords.tsx new file mode 100644 index 0000000..b1f8749 --- /dev/null +++ b/packages/client/src/components/keywords/Keywords.tsx @@ -0,0 +1,14 @@ +export default function Keywords({ keywords }: { keywords: string[] }) { + return ( + <> + {keywords.map((keyword: string, _index) => ( +
+ {keyword} +
+ ))} + + ) +} diff --git a/packages/client/src/components/keywords/SmallKeywords.tsx b/packages/client/src/components/keywords/SmallKeywords.tsx new file mode 100644 index 0000000..e799f61 --- /dev/null +++ b/packages/client/src/components/keywords/SmallKeywords.tsx @@ -0,0 +1,14 @@ +export default function SmallKeywords({ keywords }: { keywords: string[] }) { + return ( + <> + {keywords.map((keyword: string, _index) => ( +
+ {keyword} +
+ ))} + + ) +} diff --git a/packages/client/src/components/links/LinkWidget.tsx b/packages/client/src/components/links/LinkWidget.tsx index b467c73..5a8b432 100644 --- a/packages/client/src/components/links/LinkWidget.tsx +++ b/packages/client/src/components/links/LinkWidget.tsx @@ -3,10 +3,10 @@ import '../../app/globals.css' import axios from 'axios' import { useRouter } from 'next/navigation' -import React from 'react' -import { BsFire } from 'react-icons/bs' -import { FaRegStar, FaStar } from 'react-icons/fa' +import React, { useEffect } from 'react' +import { BsFire, BsStar, BsStarFill } from 'react-icons/bs' +import SmallKeywords from '@/components/keywords/SmallKeywords' import { useProfile } from '@/hooks/queries/use-profile' import { cn } from '@/lib/utils' import { LinkEntity } from '@/types/link.type' @@ -20,14 +20,17 @@ export default function LinkWidget(props: Props) { const link = props.link const router = useRouter() const user = useProfile() + const [isOptimisticallyFavourite, setIsOptimisticallyFavourite] = React.useState(false) const makeFavorite = async (e: React.MouseEvent) => { e.stopPropagation() + setIsOptimisticallyFavourite(true) await axios.post('/api/favorites/', { id: link.id }) router.refresh() } const removeFavorite = async (e: React.MouseEvent) => { e.stopPropagation() + setIsOptimisticallyFavourite(false) await axios.delete('/api/favorites/' + link.id) router.refresh() } @@ -37,20 +40,23 @@ export default function LinkWidget(props: Props) { window.open(process.env.NEXT_PUBLIC_API_URL + '/links/visit/' + link.slug) } + useEffect(() => { + setIsOptimisticallyFavourite(link.isFavorite) + }, [link]) + return (
visitLink(e)} >
-
-
- {/* eslint-disable-next-line @next/next/no-img-element */} +
+
-
-
-

{link.title}

-
+
+
+

{link.title}

+
+ {/*{!!props.visits && props.visits > 10 && (*/} +
+ +

{props.visits}32

+
+ {/*)}*/} {user.data && - (!link.isFavorite ? ( - makeFavorite(e)} /> + (!(link.isFavorite || isOptimisticallyFavourite) ? ( + makeFavorite(e)} /> ) : ( - removeFavorite(e)} /> + removeFavorite(e)} /> ))}

{link.url}

- {!!props.visits && props.visits > 10 && ( -
- -

{props.visits}

-
- )}

{link.description}

+
) diff --git a/packages/client/src/components/links/favLinksContainer.tsx b/packages/client/src/components/links/favLinksContainer.tsx index 7316490..5380c9b 100644 --- a/packages/client/src/components/links/favLinksContainer.tsx +++ b/packages/client/src/components/links/favLinksContainer.tsx @@ -37,7 +37,7 @@ export default function FavLinksContainer({ title, links }: Props) {

{title}

{links.map(link => ( -
+
))} diff --git a/packages/client/src/components/navbar/navbar.tsx b/packages/client/src/components/navbar/navbar.tsx index a52ca3d..72fa874 100644 --- a/packages/client/src/components/navbar/navbar.tsx +++ b/packages/client/src/components/navbar/navbar.tsx @@ -31,10 +31,10 @@ export default function Navbar() { diff --git a/packages/client/src/components/navbar/user-display.tsx b/packages/client/src/components/navbar/user-display.tsx index fa26011..57d4e84 100644 --- a/packages/client/src/components/navbar/user-display.tsx +++ b/packages/client/src/components/navbar/user-display.tsx @@ -1,5 +1,6 @@ import Cookies from 'js-cookie' import Link from 'next/link' +import { redirect } from 'next/navigation' import { Button } from '@/components/ui/button' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '@/components/ui/dropdown-menu' @@ -29,10 +30,8 @@ export function UserDisplay() { + redirect('/profile')}>Profila Kijelentkezés - - Profil - diff --git a/packages/client/src/components/submission/AdminSubmissionCard.tsx b/packages/client/src/components/submission/AdminSubmissionCard.tsx index 9298bb0..3932bc6 100644 --- a/packages/client/src/components/submission/AdminSubmissionCard.tsx +++ b/packages/client/src/components/submission/AdminSubmissionCard.tsx @@ -2,6 +2,7 @@ import Link from 'next/link' import { useRouter } from 'next/navigation' +import Keywords from '@/components/keywords/Keywords' import { Button } from '@/components/ui/button' import Popup from '@/components/ui/Popup' import { useSubmissionChangeStatus } from '@/hooks/mutations/use-submission-change-status' @@ -35,12 +36,12 @@ export default function AdminSubmissionCard({ submission }: { submission: Submis : submission.iconUrl return ( -
+
-

{submission.id}

+

ADMIN: {submission.id}

-
-
+
+
-
+

{submission.title}

-

{submission.url}

+

{submission.url}

@@ -61,14 +62,7 @@ export default function AdminSubmissionCard({ submission }: { submission: Submis
leírás

{submission.description}

kulcsszavak
- {submission.keywords.map((keyword: string, _index) => ( -
- {keyword} -
- ))} + {submission.oldLinkId && ( <>
elavult link Id:
diff --git a/packages/client/src/components/submission/SubmissionCard.tsx b/packages/client/src/components/submission/SubmissionCard.tsx index 810c8c2..039b8bb 100644 --- a/packages/client/src/components/submission/SubmissionCard.tsx +++ b/packages/client/src/components/submission/SubmissionCard.tsx @@ -1,6 +1,7 @@ 'use client' import Link from 'next/link' +import Keywords from '@/components/keywords/Keywords' import { cn } from '@/lib/utils' import { Submission } from '@/types/submission.type' @@ -28,8 +29,8 @@ export default function SubmissionCard({ submission }: { submission: Submission

{submission.id}

-
-
+
+
-
+

{submission.title}

-

{submission.url}

+

{submission.url}

+
slug

{submission.slug}

leírás

{submission.description}

kulcsszavak
- {submission.keywords.map((keyword: string, _index) => ( -
- {keyword} -
- ))} + {submission.oldLinkId && ( <>
elavult link Id:
diff --git a/packages/client/src/components/ui/SearchField.tsx b/packages/client/src/components/ui/SearchField.tsx index e749d26..55ef906 100644 --- a/packages/client/src/components/ui/SearchField.tsx +++ b/packages/client/src/components/ui/SearchField.tsx @@ -5,9 +5,9 @@ type searchProps = { export default function SearchField({ onSubmit, searchPhrase }: searchProps) { return ( -
+
{ +export async function getAllSubmissions(): Promise<{ pendingSubmissions: Submission[]; reviewedSubmissions: Submission[] }> { try { const response = await api.get('/submissions') - return response.data + const pendingSubmissions: Submission[] = [] + const reviewedSubmissions: Submission[] = [] + const data = response.data + for (const submission of data) { + if (submission.status === 'IN_REVIEW') pendingSubmissions.push(submission) + else reviewedSubmissions.push(submission) + } + return { pendingSubmissions, reviewedSubmissions } } catch (e) { console.error(e) - return [] + return { pendingSubmissions: [], reviewedSubmissions: [] } } }