## Translation Files - Add 11 new language files (es, de, pt, ru, zh, ja, ko, ar, hi, nl, pl) - Add 100+ missing translation keys across all 15 languages - New sections: notebook, pagination, ai.batchOrganization, ai.autoLabels - Update nav section with workspace, quickAccess, myLibrary keys ## Component Updates - Update 15+ components to use translation keys instead of hardcoded text - Components: notebook dialogs, sidebar, header, note-input, ghost-tags, etc. - Replace 80+ hardcoded English/French strings with t() calls - Ensure consistent UI across all supported languages ## Code Quality - Remove 77+ console.log statements from codebase - Clean up API routes, components, hooks, and services - Keep only essential error handling (no debugging logs) ## UI/UX Improvements - Update Keep logo to yellow post-it style (from-yellow-400 to-amber-500) - Change selection colors to #FEF3C6 (notebooks) and #EFB162 (nav items) - Make "+" button permanently visible in notebooks section - Fix grammar and syntax errors in multiple components ## Bug Fixes - Fix JSON syntax errors in it.json, nl.json, pl.json, zh.json - Fix syntax errors in notebook-suggestion-toast.tsx - Fix syntax errors in use-auto-tagging.ts - Fix syntax errors in paragraph-refactor.service.ts - Fix duplicate "fusion" section in nl.json 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> Ou une version plus courte si vous préférez : feat(i18n): Add 15 languages, remove logs, update UI components - Create 11 new translation files (es, de, pt, ru, zh, ja, ko, ar, hi, nl, pl) - Add 100+ translation keys: notebook, pagination, AI features - Update 15+ components to use translations (80+ strings) - Remove 77+ console.log statements from codebase - Fix JSON syntax errors in 4 translation files - Fix component syntax errors (toast, hooks, services) - Update logo to yellow post-it style - Change selection colors (#FEF3C6, #EFB162) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
63 lines
1.8 KiB
TypeScript
63 lines
1.8 KiB
TypeScript
import { useState, useEffect } from 'react'
|
|
import { useSearchParams } from 'next/navigation'
|
|
import { useSession } from 'next-auth/react'
|
|
|
|
/**
|
|
* Hook to check if auto label suggestions should be shown for the current notebook
|
|
* Triggers when notebook has 15+ notes (IA4)
|
|
*/
|
|
export function useAutoLabelSuggestion() {
|
|
const { data: session } = useSession()
|
|
const searchParams = useSearchParams()
|
|
const [shouldSuggest, setShouldSuggest] = useState(false)
|
|
const [notebookId, setNotebookId] = useState<string | null>(searchParams.get('notebook'))
|
|
const [hasChecked, setHasChecked] = useState(false)
|
|
|
|
useEffect(() => {
|
|
const currentNotebookId = searchParams.get('notebook')
|
|
|
|
// Reset when notebook changes
|
|
if (currentNotebookId !== notebookId) {
|
|
setNotebookId(currentNotebookId)
|
|
setHasChecked(false)
|
|
setShouldSuggest(false)
|
|
|
|
// Check if we should suggest labels for this notebook
|
|
if (currentNotebookId && session?.user?.id) {
|
|
checkNotebookForSuggestions(currentNotebookId)
|
|
}
|
|
}
|
|
}, [searchParams, notebookId, session])
|
|
|
|
const checkNotebookForSuggestions = async (nbId: string) => {
|
|
try {
|
|
// Check if notebook has 15+ notes
|
|
const response = await fetch('/api/ai/auto-labels', {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
credentials: 'include',
|
|
body: JSON.stringify({ notebookId: nbId }),
|
|
})
|
|
|
|
const data = await response.json()
|
|
|
|
// Show suggestions if available
|
|
if (data.success && data.data) {
|
|
setShouldSuggest(true)
|
|
}
|
|
|
|
setHasChecked(true)
|
|
} catch (error) {
|
|
console.error('Failed to check for label suggestions:', error)
|
|
setHasChecked(true)
|
|
}
|
|
}
|
|
|
|
return {
|
|
shouldSuggest,
|
|
notebookId,
|
|
hasChecked,
|
|
dismiss: () => setShouldSuggest(false),
|
|
}
|
|
}
|