fix: update @repo/sdk to version 1.0.14 and adjust build scripts for production

feat: modify TemplateCard and TemplateGrid to handle optional id and filter templates
refactor: clean up use-template-filter to use CategoryTemplate type
This commit is contained in:
imeepos 2026-01-26 16:40:32 +08:00
parent 01865d94c2
commit a529dc03e1
7 changed files with 25 additions and 30 deletions

View File

@ -14,7 +14,7 @@
"@react-navigation/elements": "^2.6.3",
"@react-navigation/native": "^7.1.8",
"@repo/core": "1.0.3",
"@repo/sdk": "1.0.13",
"@repo/sdk": "1.0.14",
"@shopify/flash-list": "^2.0.0",
"@stripe/react-stripe-js": "^5.4.1",
"@stripe/stripe-js": "^8.5.3",
@ -657,7 +657,7 @@
"@repo/core": ["@repo/core@1.0.3", "https://gitea.bowongai.com/api/packages/bowong/npm/%40repo%2Fcore/-/1.0.3/core-1.0.3.tgz", {}, "sha512-lO7rk3hsrtoyewZu7cgwlFqjjhGBx+lw4wxkehfvTsbTWm/tKChq1t6SC+XXNJj/YVwnLp6AH8BOsvR4r1nxyg=="],
"@repo/sdk": ["@repo/sdk@1.0.13", "https://gitea.bowongai.com/api/packages/bowong/npm/%40repo%2Fsdk/-/1.0.13/sdk-1.0.13.tgz", { "dependencies": { "@repo/core": "1.0.3", "reflect-metadata": "^0.2.1", "zod": "^4.2.1" } }, "sha512-2Iq2UZFMv6M4uWhJtkbDptYs69w3MJTDFSVlo0G85fxDAtF4YPmjNoxe7Mm6pi6FCf7qXpyHFOSgpeJRxL7GtQ=="],
"@repo/sdk": ["@repo/sdk@1.0.14", "https://gitea.bowongai.com/api/packages/bowong/npm/%40repo%2Fsdk/-/1.0.14/sdk-1.0.14.tgz", { "dependencies": { "@repo/core": "1.0.3", "reflect-metadata": "^0.2.1", "zod": "^4.2.1" } }, "sha512-J/j3kRL83X4TtGadjLUGX9ueiROStZ0hM+zCPkKtgk5bMUR8K98HefbWzt1PV8jKBp9n+heckyHWHcL3nKDPwA=="],
"@rtsao/scc": ["@rtsao/scc@1.1.0", "", {}, "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g=="],

View File

@ -4,7 +4,7 @@ import { Image } from 'expo-image'
import { LinearGradient } from 'expo-linear-gradient'
export interface TemplateCardProps {
id: string
id?: string
title: string
previewUrl?: string
webpPreviewUrl?: string
@ -55,6 +55,11 @@ const TemplateCardComponent: React.FC<TemplateCardProps> = ({
const aspectRatio = parseAspectRatio(aspectRatioString)
const imageUri = getImageUri(webpPreviewUrl, previewUrl, coverImageUrl)
// 如果没有 id则不渲染卡片
if (!id) {
return null
}
return (
<Pressable
style={[styles.card, { width: cardWidth }]}

View File

@ -1,18 +1,12 @@
import React, { useState, memo } from 'react'
import { View, StyleSheet, LayoutChangeEvent } from 'react-native'
import type { CategoryTemplate } from '@repo/sdk'
import { TemplateCard } from './TemplateCard'
export interface Template {
id: string
title: string
previewUrl?: string
webpPreviewUrl?: string
coverImageUrl?: string
aspectRatio?: string
}
export type Template = CategoryTemplate
export interface TemplateGridProps {
templates: Template[]
templates: CategoryTemplate[]
onTemplatePress: (id: string) => void
numColumns?: number
horizontalPadding?: number
@ -45,8 +39,13 @@ const TemplateGridComponent: React.FC<TemplateGridProps> = ({
}) => {
const [gridWidth, setGridWidth] = useState(0)
// 过滤掉没有 id 的模板
const validTemplates = templates.filter((template): template is CategoryTemplate & { id: string } =>
!!template.id
)
// 空数据时返回 null
if (!templates || templates.length === 0) {
if (!validTemplates || validTemplates.length === 0) {
return null
}
@ -62,7 +61,7 @@ const TemplateGridComponent: React.FC<TemplateGridProps> = ({
onLayout={handleLayout}
>
<View style={[styles.grid, { gap: cardGap }]}>
{templates.map((template) => (
{validTemplates.map((template) => (
<TemplateCard
key={template.id}
id={template.id}

View File

@ -20,6 +20,7 @@
"corepack": true
},
"production": {
"distribution": "internal",
"autoIncrement": true,
"android": {
"buildType": "apk"

View File

@ -11,6 +11,6 @@ export { useDebounce } from './use-debounce'
export { useWorksSearch } from './use-works-search'
export { useChangePassword } from './use-change-password'
export { useUpdateProfile } from './use-update-profile'
export { useTemplateFilter, type Template, type UseTemplateFilterOptions, type UseTemplateFilterReturn } from './use-template-filter'
export { useTemplateFilter, type UseTemplateFilterOptions, type UseTemplateFilterReturn } from './use-template-filter'
export { useStickyTabs, type UseStickyTabsReturn } from './use-sticky-tabs'
export { useTabNavigation, type Category, type UseTabNavigationOptions, type UseTabNavigationReturn } from './use-tab-navigation'

View File

@ -1,21 +1,11 @@
import { useMemo } from 'react'
/**
* Template interface for filtering
*/
export interface Template {
id: string
previewUrl?: string
webpPreviewUrl?: string
coverImageUrl?: string
[key: string]: any
}
import type { CategoryTemplate } from '@repo/sdk'
/**
* Options for useTemplateFilter hook
*/
export interface UseTemplateFilterOptions {
templates: Template[]
templates: CategoryTemplate[]
excludeVideo?: boolean
}
@ -23,7 +13,7 @@ export interface UseTemplateFilterOptions {
* Return type for useTemplateFilter hook
*/
export interface UseTemplateFilterReturn {
filteredTemplates: Template[]
filteredTemplates: CategoryTemplate[]
}
/**

View File

@ -5,7 +5,7 @@
"scripts": {
"start": "expo start",
"build:android:dev": "eas build --platform android --profile development",
"build:android:preview": "eas build --platform android --profile preview",
"build:android:production": "eas build --platform android --profile production",
"prebuild:android": "expo prebuild --platform android",
"reset-project": "node ./scripts/reset-project.js",
"claude": "claude --dangerously-skip-permissions",
@ -28,7 +28,7 @@
"@react-navigation/elements": "^2.6.3",
"@react-navigation/native": "^7.1.8",
"@repo/core": "1.0.3",
"@repo/sdk": "1.0.13",
"@repo/sdk": "1.0.14",
"@shopify/flash-list": "^2.0.0",
"@stripe/react-stripe-js": "^5.4.1",
"@stripe/stripe-js": "^8.5.3",