Files
Momento/memento-note/app/actions/marketing-unsubscribe.ts
Antigravity 360e58e473
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 5m58s
CI / Deploy production (on server) (push) Successful in 26s
feat(admin): consentement aux annonces et désabonnement sans connexion
Les comptes déjà créés ne sont pas inscrits. Le choix est facultatif à l’inscription et dans les paramètres. Un lien public demande confirmation avant d’arrêter les actualités, sans toucher aux messages de compte.
2026-09-06 09:23:10 +00:00

31 lines
947 B
TypeScript

'use server'
import { unsubscribeByUserId } from '@/lib/marketing/preference'
import { marketingRequestMeta } from '@/lib/marketing/request-meta'
import { verifyUnsubscribeToken } from '@/lib/marketing/unsubscribe-token'
export async function previewUnsubscribeToken(token: string | null): Promise<{
valid: boolean
}> {
if (!token) return { valid: false }
const payload = verifyUnsubscribeToken(token)
return { valid: Boolean(payload) }
}
export async function confirmMarketingUnsubscribe(token: string): Promise<{
ok: boolean
already?: boolean
invalid?: boolean
}> {
const payload = verifyUnsubscribeToken(token)
if (!payload) return { ok: false, invalid: true }
const meta = await marketingRequestMeta()
const result = await unsubscribeByUserId({
userId: payload.userId,
source: 'unsubscribe',
meta,
})
if (!result.ok) return { ok: false, invalid: true }
return { ok: true, already: result.already }
}