diff --git a/bun.lock b/bun.lock index eee4e8a..7e95861 100644 --- a/bun.lock +++ b/bun.lock @@ -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=="], diff --git a/components/blocks/home/TemplateCard.tsx b/components/blocks/home/TemplateCard.tsx index 4a65dd2..c6493c7 100644 --- a/components/blocks/home/TemplateCard.tsx +++ b/components/blocks/home/TemplateCard.tsx @@ -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 = ({ const aspectRatio = parseAspectRatio(aspectRatioString) const imageUri = getImageUri(webpPreviewUrl, previewUrl, coverImageUrl) + // 如果没有 id,则不渲染卡片 + if (!id) { + return null + } + return ( void numColumns?: number horizontalPadding?: number @@ -45,8 +39,13 @@ const TemplateGridComponent: React.FC = ({ }) => { 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 = ({ onLayout={handleLayout} > - {templates.map((template) => ( + {validTemplates.map((template) => (