9a51cad137
CI/CD Pipeline / Frontend Lint (push) Successful in 48s
CI/CD Pipeline / Validate - Code Quality (push) Failing after 2m24s
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 2m25s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 2m27s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 3m8s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 3m16s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 1m20s
CI/CD Pipeline / Integration Tests (push) Successful in 3m53s
CI/CD Pipeline / Unit Tests (push) Failing after 7m53s
CI/CD Pipeline / Build Staging API Image (push) Successful in 11m29s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 1m13s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 26s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 1m3s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 3m15s
CI/CD Pipeline / Production Browser E2E (push) Failing after 1294h4m36s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 1294h5m22s
CI/CD Pipeline / Build Production Web Image (push) Failing after 1294h5m22s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 1294h7m45s
CI/CD Pipeline / PR Build Web Image (push) Failing after 1294h7m47s
CI/CD Pipeline / PR Build API Image (push) Failing after 1294h7m47s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 1294h7m49s
CI/CD Pipeline / Deploy Production (push) Failing after 1294h37m5s
CI/CD Pipeline / Build Production API Image (push) Failing after 1294h37m51s
45 lines
903 B
TypeScript
45 lines
903 B
TypeScript
/**
|
|
* Step 1 模板选择 Hook
|
|
* 封装模板选择的交互逻辑
|
|
*/
|
|
import { useCallback } from "react"
|
|
import type { EditingTemplate } from "@/api/editing-planner"
|
|
|
|
interface UseStep1TemplateProps {
|
|
templates: EditingTemplate[]
|
|
selectedTemplate: string
|
|
onSelectTemplate: (id: string) => void
|
|
}
|
|
|
|
export function useStep1Template({
|
|
templates,
|
|
selectedTemplate,
|
|
onSelectTemplate,
|
|
}: UseStep1TemplateProps) {
|
|
const handleSelect = useCallback(
|
|
(id: string) => {
|
|
onSelectTemplate(id)
|
|
},
|
|
[onSelectTemplate],
|
|
)
|
|
|
|
const handleKeySelect = useCallback(
|
|
(e: React.KeyboardEvent, id: string) => {
|
|
if (e.key === "Enter" || e.key === " ") {
|
|
e.preventDefault()
|
|
onSelectTemplate(id)
|
|
}
|
|
},
|
|
[onSelectTemplate],
|
|
)
|
|
|
|
return {
|
|
templates,
|
|
selectedTemplate,
|
|
handleSelect,
|
|
handleKeySelect,
|
|
}
|
|
}
|
|
|
|
export default useStep1Template
|