From 9afe55b2d93f9e02578077d248ad010945b56c65 Mon Sep 17 00:00:00 2001 From: imeepos Date: Fri, 26 Dec 2025 18:26:11 +0800 Subject: [PATCH] fix: bug --- app/(tabs)/generate.tsx | 85 ++++------------------------------------- app/(tabs)/index.tsx | 11 +++--- 2 files changed, 14 insertions(+), 82 deletions(-) diff --git a/app/(tabs)/generate.tsx b/app/(tabs)/generate.tsx index d108548..01aaacd 100644 --- a/app/(tabs)/generate.tsx +++ b/app/(tabs)/generate.tsx @@ -7,13 +7,11 @@ import { useAnimatedStyle } from 'react-native-reanimated' import { FontAwesome, Fontisto, Ionicons } from '@expo/vector-icons' import { screenHeight, screenWidth } from '@/utils' import { useRouter } from 'expo-router' -import { useRecommendedTemplates, RecommendedTemplate } from '@/hooks/data/use-recommended-templates' -import { useCategories } from '@/hooks/data/use-categories' import { useTemplates } from '@/hooks/data/use-templates' import { ActivityIndicator } from 'react-native' import { ApiError } from '@/lib/types' import { useSafeAreaInsets } from 'react-native-safe-area-context' - +const CATEGORY_ID = `cmjmpwop30009dhdpu3qyfvuo` const BACKGROUND_VIDEOS = [ 'https://cdn.roasmax.cn/material/b46f380532e14cf58dd350dbacc7c34a.mp4', 'https://cdn.roasmax.cn/material/992e6c5d940c42feb71c27e556b754c0.mp4', @@ -201,39 +199,6 @@ const TemplateItem = memo(function TemplateItem({ item, itemW ) }) -type CategoryChipProps = { - name: string - isSelected: boolean - onSelect: () => void -} -const CategoryChip = memo(function CategoryChip({ name, isSelected, onSelect }) { - return ( - - {name} - - ) -}) - -type CategoryFilterProps = { - categories: Array<{ id: string; name: string }> - selectedId: string - onSelect: (id: string) => void -} -const CategoryFilter = memo(function CategoryFilter({ categories, selectedId, onSelect }) { - return ( - - - onSelect('')} /> - {categories.map((cat) => ( - onSelect(cat.id)} /> - ))} - - - ) -}) type TemplateSectionProps = { templates: Template[] @@ -334,33 +299,19 @@ export default function Index() { const [prompt, setPrompt] = useState(`${env} update`) const [selectedTemplateId, setSelectedTemplateId] = useState('') - const [selectedCategoryId, setSelectedCategoryId] = useState('') const [meImg, setMeImg] = useState('') const [friendImg, setFriendImg] = useState('') const [bgVideo] = useState(() => BACKGROUND_VIDEOS[Math.floor(Math.random() * BACKGROUND_VIDEOS.length)]) - const recommendedTemplates = useRecommendedTemplates() - const categories = useCategories() const templates = useTemplates() useEffect(() => { - recommendedTemplates.execute({ isActive: true }) - categories.load({ isActive: true }) + templates.execute({ categoryId: CATEGORY_ID, page: 1, limit: 12, sortBy: 'createdAt', sortOrder: 'desc' }) }, []) - useEffect(() => { - const params = selectedCategoryId ? { categoryId: selectedCategoryId, isActive: true } : { isActive: true } - templates.execute(params) - }, [selectedCategoryId]) - const displayTemplates = useMemo(() => { - const recommended = recommendedTemplates.data?.templates || [] const regular = templates.data?.templates || [] - - const all = selectedCategoryId - ? regular - : [...recommended.map((r: RecommendedTemplate) => r.template).filter(Boolean), ...regular] - + const all = regular return all.map((t: any): Template => ({ id: t.id, name: t.title, @@ -368,14 +319,7 @@ export default function Index() { type: 'video' as const, data: t, })) - }, [recommendedTemplates.data, templates.data, selectedCategoryId]) - - const categoryList = useMemo(() => { - return (categories.data?.categories || []).map((c) => ({ - id: c.id, - name: c.name, - })) - }, [categories.data]) + }, [templates.data]) const selectedTemplate = useMemo(() => { return displayTemplates.find((t) => t.id === selectedTemplateId) @@ -413,25 +357,15 @@ export default function Index() { setSelectedTemplateId(t.id) }, []) - const handleSelectCategory = useCallback((id: string) => { - setSelectedCategoryId(id) - setSelectedTemplateId('') - }, []) - const onPickMe = useCallback(() => pickImage('me'), [pickImage]) const onPickFriend = useCallback(() => pickImage('friend'), [pickImage]) - const isLoading = templates.loading || recommendedTemplates.loading - const hasError = templates.error || recommendedTemplates.error + const isLoading = templates.loading + const hasError = templates.error const handleRetry = useCallback(() => { - if (selectedCategoryId) { - templates.refetch({ categoryId: selectedCategoryId, isActive: true }) - } else { - recommendedTemplates.refetch({ isActive: true }) - templates.refetch({ isActive: true }) - } - }, [selectedCategoryId, templates, recommendedTemplates]) + templates.refetch({ categoryId: CATEGORY_ID, page: 1, limit: 12, sortBy: 'createdAt', sortOrder: 'desc' }) + }, []) return ( @@ -444,9 +378,6 @@ export default function Index() { - {categoryList.length > 0 && ( - - )} fav.template && !fav.template.isDeleted).map((fav: GetUserFavoritesResponse['favorites'][number]) => transformTemplateToMediaItem(fav.template!)) } else if (activeTab === 'new') { if (isAuthenticated) { - const { data, error } = await loadTemplates({ limit, page: 1, sortBy: 'createdAt', sortOrder: 'desc' }) + const { data, error } = await loadTemplates({ limit, page: 1, categoryId: CATEGORY_ID, sortBy: 'createdAt', sortOrder: 'desc' }) if (error || !data?.templates) { setHasMore(false) return @@ -423,7 +424,7 @@ export default function Sync() { } } else { if (isAuthenticated) { - const { data, error } = await loadTemplates({ limit, page: 1, sortBy: 'likeCount', sortOrder: 'desc' }) + const { data, error } = await loadTemplates({ limit, page: 1, categoryId: CATEGORY_ID, sortBy: 'likeCount', sortOrder: 'desc' }) if (error || !data?.templates) { setHasMore(false) return @@ -490,7 +491,7 @@ export default function Sync() { setHasMore(false) return } - const { data, error } = await loadTemplates({ limit, page: pageNum, sortBy: 'createdAt', sortOrder: 'desc' }) + const { data, error } = await loadTemplates({ limit, page: pageNum, categoryId: CATEGORY_ID, sortBy: 'createdAt', sortOrder: 'desc' }) if (error || !data?.templates) { setHasMore(false) return @@ -501,7 +502,7 @@ export default function Sync() { setHasMore(false) return } - const { data, error } = await loadTemplates({ limit, page: pageNum, sortBy: 'likeCount', sortOrder: 'desc' }) + const { data, error } = await loadTemplates({ limit, page: pageNum, categoryId: CATEGORY_ID, sortBy: 'likeCount', sortOrder: 'desc' }) if (error || !data?.templates) { setHasMore(false) return