import { Stack, useLocalSearchParams, useRouter } from 'expo-router'; import React, { useEffect, useRef, useState } from 'react'; import { ActivityIndicator, Alert, Image, ScrollView, StyleSheet, Text, View, } from 'react-native'; export const unstable_settings = { headerShown: false, }; import { DynamicFormField } from '@/components/forms/dynamic-form-field'; import { getTemplateById } from '@/lib/api/templates'; import { recordTokenUsage, getUserBalance } from '@/lib/api/balance'; import { runTemplate, pollTemplateGeneration } from '@/lib/api/template-runs'; import { uploadFile } from '@/lib/api/upload'; import { Template, TemplateGraphNode } from '@/lib/types/template'; import { TemplateGeneration } from '@/lib/types/template-run'; import { useAuth } from '@/hooks/use-auth'; import { Header } from '@/components/sker/header'; import { Page } from '@/components/sker/page'; import { GenerateBtn } from '@/components/sker/generate-btn'; import VideoPlayer from '@/components/sker/video-player/video-player'; import { getVideoThumbnail } from '@/lib/utils/media'; export default function TemplateFormScreen() { const { id } = useLocalSearchParams<{ id: string }>(); const router = useRouter(); const { session, isLoading: authLoading } = useAuth(); const [template, setTemplate] = useState