fin du refactp

This commit is contained in:
Tom Boullay
2026-04-14 14:27:50 +02:00
parent e9ae6ffc41
commit f9e15d5e1f
18 changed files with 826 additions and 476 deletions
+42
View File
@@ -0,0 +1,42 @@
'use client'
import { useState, useCallback } from 'react'
import type { FolderEntry } from '@/lib/client-types'
export function useFolderEntries() {
const [entries, setEntries] = useState<FolderEntry[]>([])
const updateEntry = useCallback((index: number, patch: Partial<FolderEntry>) => {
setEntries((prev) => prev.map((f, i) => (i === index ? { ...f, ...patch } : f)))
}, [])
const removeEntry = useCallback((index: number) => {
setEntries((prev) => {
const entry = prev[index]
if (entry?.modelUrl) URL.revokeObjectURL(entry.modelUrl)
return prev.filter((_, i) => i !== index)
})
}, [])
const resetEntries = useCallback(() => {
setEntries((prev) => {
prev.forEach((f) => {
if (f.modelUrl) URL.revokeObjectURL(f.modelUrl)
})
return []
})
}, [])
const allDone = entries.length > 0 && entries.every((f) => f.status === 'success')
const hasErrors = entries.some((f) => f.status === 'error')
return {
entries,
setEntries,
updateEntry,
removeEntry,
resetEntries,
allDone,
hasErrors,
}
}
+36
View File
@@ -0,0 +1,36 @@
'use client'
import { useState, useCallback } from 'react'
export function useSecret() {
const [secret, setSecret] = useState('')
const [secretError, setSecretError] = useState<string | null>(null)
const [secretVisible, setSecretVisible] = useState(false)
const isSecretEmpty = !secret.trim()
const handleSecretChange = useCallback((value: string) => {
setSecret(value)
if (secretError) setSecretError(null)
}, [secretError])
const toggleSecretVisible = useCallback(() => {
setSecretVisible((v) => !v)
}, [])
const clearSecretError = useCallback(() => {
setSecretError(null)
}, [])
return {
secret,
secretError,
secretVisible,
isSecretEmpty,
setSecret,
setSecretError,
handleSecretChange,
toggleSecretVisible,
clearSecretError,
}
}