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.
30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
'use server'
|
|
|
|
import { auth } from '@/auth'
|
|
import { marketingConsentText } from '@/lib/marketing/consent-copy'
|
|
import { getMarketingPreferenceView, setMarketingOptIn } from '@/lib/marketing/preference'
|
|
import { marketingRequestMeta } from '@/lib/marketing/request-meta'
|
|
|
|
export async function getMyMarketingPreference() {
|
|
const session = await auth()
|
|
const userId = (session?.user as { id?: string } | undefined)?.id
|
|
if (!userId) return null
|
|
return getMarketingPreferenceView(userId)
|
|
}
|
|
|
|
export async function updateMyMarketingPreference(optedIn: boolean, language?: string) {
|
|
const session = await auth()
|
|
const userId = (session?.user as { id?: string } | undefined)?.id
|
|
if (!userId) return { ok: false as const, error: 'auth' as const }
|
|
const meta = await marketingRequestMeta()
|
|
const result = await setMarketingOptIn({
|
|
userId,
|
|
optedIn,
|
|
source: 'settings',
|
|
language: language || null,
|
|
meta,
|
|
})
|
|
if (!result.ok) return { ok: false as const, error: result.error }
|
|
return { ok: true as const, legalText: optedIn ? marketingConsentText(language) : null }
|
|
}
|