fin du refactp
This commit is contained in:
@@ -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,
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user