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.
31 lines
947 B
TypeScript
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 }
|
|
}
|