- Domain: NotificationLog/NotificationPreference entities, repositories, channel value object - Infrastructure: EmailService (nodemailer/SMTP), FcmService (firebase-admin), TemplateService (Handlebars) - Application: SendNotification CQRS command, UserRegistered + AgentVerified event listeners - Presentation: NotificationsController with history, preferences, and templates endpoints - Prisma: NotificationLog and NotificationPreference models with proper indexes - Templates: Vietnamese notification templates for user.registered, agent.verified, listing.approved, inquiry.received, password.reset Co-Authored-By: Paperclip <noreply@paperclip.ing>
28 lines
676 B
TypeScript
28 lines
676 B
TypeScript
'use client';
|
|
|
|
import { useEffect } from 'react';
|
|
import { useAuthStore } from '@/lib/auth-store';
|
|
|
|
function setAuthCookie(authenticated: boolean) {
|
|
if (authenticated) {
|
|
document.cookie = 'goodgo_authenticated=1; path=/; max-age=604800; SameSite=Lax';
|
|
} else {
|
|
document.cookie = 'goodgo_authenticated=; path=/; max-age=0';
|
|
}
|
|
}
|
|
|
|
export function AuthProvider({ children }: { children: React.ReactNode }) {
|
|
const initialize = useAuthStore((s) => s.initialize);
|
|
const tokens = useAuthStore((s) => s.tokens);
|
|
|
|
useEffect(() => {
|
|
initialize();
|
|
}, [initialize]);
|
|
|
|
useEffect(() => {
|
|
setAuthCookie(!!tokens);
|
|
}, [tokens]);
|
|
|
|
return <>{children}</>;
|
|
}
|