diff --git a/client/app/(profiles)/profile/[slug]/components/sections/Actions.jsx b/client/app/(profiles)/profile/[slug]/components/sections/Actions.jsx index 7972798b..21714ff2 100644 --- a/client/app/(profiles)/profile/[slug]/components/sections/Actions.jsx +++ b/client/app/(profiles)/profile/[slug]/components/sections/Actions.jsx @@ -12,6 +12,7 @@ import { motion } from 'framer-motion'; import Tooltip from '@/app/components/Tooltip'; import useAuthStore from '@/stores/auth'; import CopyButton from '@/app/components/CopyButton'; +import revalidateProfile from '@/lib/revalidate/profile'; export default function Actions({ profile }) { const loggedIn = useAuthStore(state => state.loggedIn); @@ -28,6 +29,7 @@ export default function Actions({ profile }) { success: (isLiked) => { setLiked(isLiked); setLoading(false); + revalidateProfile(profile.slug); return isLiked ? `Liked ${profile.slug}!` : `Unliked ${profile.slug}!`; }, diff --git a/client/app/(profiles)/profile/[slug]/edit/components/Edit.jsx b/client/app/(profiles)/profile/[slug]/edit/components/Edit.jsx index 446b800d..d64a9850 100644 --- a/client/app/(profiles)/profile/[slug]/edit/components/Edit.jsx +++ b/client/app/(profiles)/profile/[slug]/edit/components/Edit.jsx @@ -14,6 +14,7 @@ import GenderDropdown from '@/app/(profiles)/profile/[slug]/edit/components/Drop import PreferredHostDropdown from '@/app/(profiles)/profile/[slug]/edit/components/Dropdown/PreferredHost'; import Link from 'next/link'; import { PiWarningCircleFill } from 'react-icons/pi'; +import revalidateProfile from '@/lib/revalidate/profile'; export default function Edit({ profileData }) { const canBeEditedKeys = [ @@ -68,6 +69,7 @@ export default function Edit({ profileData }) { setTimeout(() => router.push(config.getProfileURL(changedKeys['newSlug'], newProfile.preferredHost)), 3000); return 'Profile updated! You will be redirected to new profile in 3 seconds.'; } else { + revalidateProfile(newProfile.slug); setLoading(false); return 'Profile updated!'; } diff --git a/client/app/(profiles)/profile/[slug]/edit/components/Socials.jsx b/client/app/(profiles)/profile/[slug]/edit/components/Socials.jsx index 2eaaed66..a1ce8198 100644 --- a/client/app/(profiles)/profile/[slug]/edit/components/Socials.jsx +++ b/client/app/(profiles)/profile/[slug]/edit/components/Socials.jsx @@ -14,6 +14,7 @@ import cn from '@/lib/cn'; import config from '@/config'; import getDisplayableURL from '@/lib/utils/profiles/getDisplayableURL'; import getIconPath from '@/lib/utils/profiles/getIconPath'; +import revalidateProfile from '@/lib/revalidate/profile'; export default function Socials({ profile }) { const [socials, setSocials] = useState(profile.socials); @@ -83,6 +84,7 @@ export default function Socials({ profile }) { setNewSocialValue(''); setLoading(false); setSocials(newSocials); + revalidateProfile(profile.slug); return 'New social added successfully.'; }, @@ -107,6 +109,7 @@ export default function Socials({ profile }) { setNewSocialValue(''); setLoading(false); setSocials(newSocials); + revalidateProfile(profile.slug); return 'New social media added successfully.'; }, @@ -132,6 +135,7 @@ export default function Socials({ profile }) { setNewSocialValue(''); setLoading(false); setSocials(newSocials); + revalidateProfile(profile.slug); return 'Social media deleted successfully.'; }, diff --git a/client/app/(servers)/servers/[id]/components/sections/RightSide/Actions.jsx b/client/app/(servers)/servers/[id]/components/sections/RightSide/Actions.jsx index 4cef863c..2e0c8a1e 100644 --- a/client/app/(servers)/servers/[id]/components/sections/RightSide/Actions.jsx +++ b/client/app/(servers)/servers/[id]/components/sections/RightSide/Actions.jsx @@ -18,6 +18,7 @@ import createReminder from '@/lib/request/servers/createReminder'; import Countdown from '@/app/components/Countdown'; import Tooltip from '@/app/components/Tooltip'; import { FaRegBell, FaBell } from 'react-icons/fa'; +import revalidateServer from '@/lib/revalidate/server'; export default function Actions({ server }) { const [serverVotes, setServerVotes] = useState(server.votes); @@ -57,6 +58,7 @@ export default function Actions({ server }) { setServerVotes(serverVotes + (server.badges.includes('Premium') ? 2 : 1)); setVoteTimeout({ createdAt: new Date().getTime() + 86400000 }); setCanSetReminder(data.inGuild); + revalidateServer(server.id); return `Successfully voted for ${server.name}!`; }, diff --git a/client/lib/revalidate/profile.js b/client/lib/revalidate/profile.js new file mode 100644 index 00000000..d790a0f8 --- /dev/null +++ b/client/lib/revalidate/profile.js @@ -0,0 +1,7 @@ +'use server'; + +import { revalidatePath } from 'next/cache'; + +export default async function revalidateProfile(slug) { + revalidatePath(`/profile/${slug}`); +} \ No newline at end of file