Added cache revalidation logic

This commit is contained in:
Umar Adilov 2025-05-03 12:47:12 +05:00
parent 8a64bc6ec2
commit 77c76cd8ef
4 changed files with 31 additions and 2 deletions

View File

@ -0,0 +1,17 @@
import { revalidateTag } from 'next/cache';
import { NextResponse } from 'next/server';
import { FetchTags } from '@/shared/api/tags';
export async function GET() {
try {
revalidateTag(FetchTags.TAYLOR);
return NextResponse.json({ success: true });
} catch (err) {
return NextResponse.json(
{ error: 'Failed to revalidate', detail: err },
{ status: 500 },
);
}
}

3
src/shared/api/tags.ts Normal file
View File

@ -0,0 +1,3 @@
export enum FetchTags {
TAYLOR = 'taylor',
}

View File

@ -1,10 +1,15 @@
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query'; import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query';
import { FetchTags } from './tags';
const baseQuery = fetchBaseQuery({ const baseQuery = fetchBaseQuery({
baseUrl: process.env.TAYLOR_API_ENDPOINT, baseUrl: process.env.TAYLOR_API_ENDPOINT,
headers: { headers: {
Authorization: process.env.TAYLOR_API_TOKEN || '', Authorization: process.env.TAYLOR_API_TOKEN || '',
}, },
next: {
tags: [FetchTags.TAYLOR],
},
}); });
export const taylorAPI = createApi({ export const taylorAPI = createApi({

View File

@ -1,6 +1,7 @@
'use client'; 'use client';
import { Handshake } from 'lucide-react'; import { Handshake } from 'lucide-react';
import Link from 'next/link';
import { useMemo } from 'react'; import { useMemo } from 'react';
import { Partners } from '@/app/api-utlities/@types'; import { Partners } from '@/app/api-utlities/@types';
@ -9,7 +10,6 @@ import { useTextController } from '@/shared/language/hooks/use-text-controller';
import { Button } from '@/shared/shadcn-ui/button'; import { Button } from '@/shared/shadcn-ui/button';
import { PartnersSlider } from './partners-slider'; import { PartnersSlider } from './partners-slider';
import Link from 'next/link';
interface PartnersSectionProps { interface PartnersSectionProps {
partners: Partners; partners: Partners;
@ -62,7 +62,11 @@ export const PartnersSection = ({ partners }: PartnersSectionProps) => {
<p className='mx-auto mb-6 max-w-2xl text-gray-600'> <p className='mx-auto mb-6 max-w-2xl text-gray-600'>
{t('home.partners.becomePartnerText')} {t('home.partners.becomePartnerText')}
</p> </p>
<Link href='mailto:info@oriyo.tj'> <Link
href={`mailto:${t('common.partners.email')}?subject=${t('home.partners.becomePartnerTextEmailSubject')}`}
target='_blank'
rel='noopener noreferrer'
>
<Button className='bg-red-600 hover:bg-red-700'> <Button className='bg-red-600 hover:bg-red-700'>
{t('common.buttons.contactUs')} {t('common.buttons.contactUs')}
</Button> </Button>