synchronisation du contenu avec la DB et amélioration du CMS
- Migration du blog et des interviews des données mockées vers PostgreSQL (Prisma). - Refonte des pages publiques en Server Components pour de meilleures performances/SEO. - Intégration d'un éditeur de texte riche (React Quill) avec titres H1-H6 et séparateurs. - Correction des erreurs de validation Prisma liées aux paramètres asynchrones (Next.js 15+). - Correction des problèmes d'affichage des modales de suspension via React Portals. - Installation de @tailwindcss/typography et correction du débordement de texte (break-words). - Implémentation des actions de modération (suspension/révocation) pour les utilisateurs et boutiques.
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
import React, { createContext, useContext, useState, ReactNode } from 'react';
|
||||
import { User } from '../types';
|
||||
import { MOCK_USER } from '../lib/mockData';
|
||||
import { useRouter, usePathname } from 'next/navigation';
|
||||
|
||||
interface UserContextType {
|
||||
user: User | null;
|
||||
@@ -14,6 +14,8 @@ const UserContext = createContext<UserContextType | undefined>(undefined);
|
||||
|
||||
export function UserProvider({ children }: { children: ReactNode }) {
|
||||
const [user, setUser] = useState<User | null>(null);
|
||||
const router = useRouter();
|
||||
const pathname = usePathname();
|
||||
|
||||
React.useEffect(() => {
|
||||
const savedUser = localStorage.getItem('afro_user');
|
||||
@@ -22,6 +24,13 @@ export function UserProvider({ children }: { children: ReactNode }) {
|
||||
}
|
||||
}, []);
|
||||
|
||||
// Global suspension check
|
||||
React.useEffect(() => {
|
||||
if (user?.isSuspended && pathname !== '/suspended') {
|
||||
router.push('/suspended');
|
||||
}
|
||||
}, [user, pathname, router]);
|
||||
|
||||
const login = (userData: User) => {
|
||||
setUser(userData);
|
||||
localStorage.setItem('afro_user', JSON.stringify(userData));
|
||||
|
||||
Reference in New Issue
Block a user