Create standalone browser port of LTX Athena with authenticated native API transport

This commit is contained in:
Mikei386
2026-09-29 17:59:23 +02:00
commit 1333b0c36b
202 changed files with 63054 additions and 0 deletions
@@ -0,0 +1,55 @@
import { useEffect, useState } from 'react'
import { useAppSettings } from '../contexts/AppSettingsContext'
import { ApiClient } from '../lib/api-client'
import type { VideoGenerationModelSpecsResponse } from '../lib/video-generation-model-specs'
interface VideoGenerationModelSpecsState {
modelSpecs: VideoGenerationModelSpecsResponse | null
isLoading: boolean
errorMessage: string | null
}
export function useVideoGenerationModelSpecs(): VideoGenerationModelSpecsState {
// Local specs describe the *active* LTX version, so they go stale as soon as the user
// downloads, deletes, or activates a version — refetch on the models-changed signal.
const { modelsVersion } = useAppSettings()
const [state, setState] = useState<VideoGenerationModelSpecsState>({
modelSpecs: null,
isLoading: true,
errorMessage: null,
})
useEffect(() => {
const abortController = new AbortController()
let isActive = true
void (async () => {
const result = await ApiClient.getGenerateVideoModelSpecs(undefined, {
signal: abortController.signal,
})
if (!isActive) return
if (result.ok) {
setState({
modelSpecs: result.data,
isLoading: false,
errorMessage: null,
})
return
}
setState({
modelSpecs: null,
isLoading: false,
errorMessage: result.error.message,
})
})()
return () => {
isActive = false
abortController.abort()
}
}, [modelsVersion])
return state
}