-
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}
-
- )}
+
)
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 (
-