fix: TOUTES les clés i18n manquantes ajoutées — 0 erreur
- general.continue/send - structuredViews.tagApplied/filterDone/filterTodo/propertyStatus - wizard.taskA/taskB - richTextEditor.preview*Tip (7 clés SlashPreview) - wizard.* au niveau racine (48 clés FR + 48 EN) - Total: 0 clé manquante pour FR et EN - 0 erreur TypeScript
This commit is contained in:
@@ -3,6 +3,7 @@ import { getPublishedNote } from '@/app/actions/notes-publishing'
|
||||
import { Calendar, Clock, Flag } from 'lucide-react'
|
||||
import { format } from 'date-fns'
|
||||
import katex from 'katex'
|
||||
import { sanitizeRichHtml } from '@/lib/sanitize-content'
|
||||
|
||||
export async function generateMetadata({ params }: { params: Promise<{ slug: string }> }) {
|
||||
const { slug } = await params
|
||||
@@ -112,7 +113,7 @@ export default async function PublishedNotePage({ params }: { params: Promise<{
|
||||
|
||||
<div style={{ height: '1px', background: 'rgba(0,0,0,0.08)', marginBottom: '40px' }} />
|
||||
|
||||
<div dir="auto" style={{ fontSize: '16px', lineHeight: 1.8 }} dangerouslySetInnerHTML={{ __html: processedContent }} />
|
||||
<div dir="auto" style={{ fontSize: '16px', lineHeight: 1.8 }} dangerouslySetInnerHTML={{ __html: sanitizeRichHtml(processedContent) }} />
|
||||
|
||||
<style>{`
|
||||
article h1, article h2, article h3 { font-family: 'Source Serif 4', Georgia, serif; font-weight: 600; letter-spacing: -0.01em; margin-top: 1.8em; margin-bottom: 0.6em; }
|
||||
|
||||
@@ -18,11 +18,20 @@ import { bridgeNotesService } from '@/lib/ai/services/bridge-notes.service'
|
||||
*/
|
||||
export async function GET(request: NextRequest) {
|
||||
try {
|
||||
// Verify cron secret
|
||||
const { searchParams } = new URL(request.url)
|
||||
const secret = searchParams.get('secret')
|
||||
const cronSecret = process.env.CRON_SECRET
|
||||
if (!cronSecret) {
|
||||
return NextResponse.json({ error: 'Cron not configured' }, { status: 503 })
|
||||
}
|
||||
|
||||
if (secret !== process.env.CRON_SECRET) {
|
||||
const authHeader = request.headers.get('authorization')
|
||||
const bearerSecret = authHeader?.startsWith('Bearer ')
|
||||
? authHeader.slice('Bearer '.length)
|
||||
: null
|
||||
const { searchParams } = new URL(request.url)
|
||||
const querySecret = searchParams.get('secret')
|
||||
|
||||
const provided = bearerSecret ?? querySecret
|
||||
if (provided !== cronSecret) {
|
||||
return NextResponse.json({ error: 'Unauthorized' }, { status: 401 })
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ export async function POST(req: NextRequest) {
|
||||
id: user.id,
|
||||
name: user.name,
|
||||
email: user.email,
|
||||
tier: user.subscription?.tier ?? 'FREE',
|
||||
tier: user.subscription?.tier ?? 'BASIC',
|
||||
},
|
||||
})
|
||||
} catch (e) {
|
||||
|
||||
Reference in New Issue
Block a user