imeepos
|
67f3c0b70e
|
fix: 修复 Android 闪退问题 - SecureStore 异步调用
问题:
- NativeStorage 使用了同步方法调用 expo-secure-store
- expo-secure-store 的正确 API 是异步的(getItemAsync/setItemAsync/deleteItemAsync)
- 在 Android 上同步调用不存在的方法导致应用崩溃
修复:
- 将 Storage 接口改为异步方法
- 使用 SecureStore.getItemAsync/setItemAsync/deleteItemAsync
- removeItem 使用 deleteItemAsync 而不是设置空字符串
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-12 14:44:42 +08:00 |
imeepos
|
a7d922b535
|
fix: 修复布局问题
|
2025-11-12 10:02:55 +08:00 |
imeepos
|
26cd0139bf
|
✨ feat: 完整的生成流程 - 登录检查、文件上传、支付凭证验证
主要功能:
1. ✅ 添加 canGenerate() - 检查登录、metered 订阅、余额
2. ✅ 添加 uploadBlobFiles() - 自动上传所有 blob URL 到服务器
3. ✅ 支付凭证强制验证 - identifier 缺失时报错"支付失败"
4. ✅ 新增 lib/api/upload.ts - 文件上传 API
5. ✅ 更新 useTemplateRun hook 支持 identifier 参数
完整流程(7步骤):
1. 表单验证
2. canGenerate 检查(登录 + 订阅 + 余额)
3. 上传 blob 文件到服务器
4. recordTokenUsage 扣费并获取 identifier
5. 验证所有 URL 都是服务器 URL
6. 转换数据格式
7. runTemplate(id, data, identifier) 创建任务
安全保障:
- ❌ 无 identifier → 抛出错误"支付凭证缺失"
- ❌ blob URL 未上传 → 报错"存在未上传的文件"
- ❌ 余额不足 → 引导用户充值
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-11 18:51:31 +08:00 |
imeepos
|
74ca367081
|
🐛 fix: 修复 template run 数据格式与 identifier 缺失问题
主要修复:
1. ✅ 添加 transformFormDataToRunFormat 函数转换表单数据
2. ✅ 根据节点类型正确格式化数据:
- image: { images: [{ url: "..." }] }
- video: { videos: [{ url: "..." }] }
- text: { texts: ["..."] }
- select: { selections: "..." } (单选) / ["..."] (多选)
3. ✅ 添加 identifier 字段到 API 请求
4. ✅ 从 storage 获取用户 session 作为 identifier
修复问题:
- ❌ 之前:{ "data": { "node_xxx": "blob:..." } }
- ✅ 现在:{ "data": { "node_xxx": { "images": [{ "url": "..." }] } }, "identifier": "user-id" }
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-11 18:30:03 +08:00 |
imeepos
|
93e0cfdae1
|
♻️ refactor: 重构余额系统 - 基于 usePricing 逻辑优化
主要改进:
- 🔄 完全重构 balance.ts,参考 usePricing.md 的最佳实践
- ✅ 集成余额检查、扣费、错误处理到单一 API
- 🎯 使用 authClient.subscription.meterEvent 替代自定义 API
- 💡 添加 checkTokenBalance 和 redirectToPricePage 辅助方法
- 🧹 简化 form.tsx 中的扣费流程,减少60%代码量
技术细节:
- 从 metered 订阅类型获取 creditBalance
- 使用 React Native Alert 替代 Web toast
- 余额不足时自动引导用户充值
- 扣费成功后自动刷新余额显示
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-11 18:20:09 +08:00 |
imeepos
|
d22ca2a85c
|
✨ feat: 性能优化与余额扣费系统集成
主要更新:
- 🚀 模板详情页性能优化:添加缓存机制、图片预加载、请求中断控制
- 💰 集成余额检查与扣费功能到表单提交流程
- 🔄 添加错误重试机制,提升用户体验
- 🎨 重构动态表单字段为独立组件 (DynamicFormField)
- 🔧 修复类型错误,优化样式结构
技术细节:
- 实现5分钟缓存策略减少API调用
- 使用 AbortController 管理请求生命周期
- React.memo 优化列表项渲染性能
- 图片预缓存提升加载体验
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-11 18:11:05 +08:00 |
imeepos
|
eee280d9b3
|
🐛 修复视频播放器无限循环渲染问题
## 主要修复
- 修复 FullscreenMediaModal 和 FullscreenVideoModal 中的 useEffect 循环依赖
- 重构 VideoPlayer 组件的视频属性管理逻辑
- 优化 useVideoPlayer 的初始化回调机制
## 新增功能
- 新增标签 API 支持 (lib/api/tags.ts)
- 新增内容骨架屏组件 (components/profile/content-skeleton.tsx)
- 新增返回按钮组件 (components/ui/back-button.tsx)
## 改进优化
- 优化视频播放器的性能,避免重复初始化
- 修复 useEffect 依赖项导致的无限循环更新
- 完善类型定义和 API 接口
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-10 11:58:56 +08:00 |
imeepos
|
b9399bf4cf
|
✨ feat: 应用界面重构 - 从模板中心到AI内容生成平台
- 重构首页:从模板列表展示改为AI功能展示界面
- 更新底部导航:将explore改为content,index改为home
- 新增多个页面:积分、兑换、历史记录、结果展示、设置等
- 优化UI组件:新增通用按钮、分类标签、加载状态等组件
- 清理冗余文件:删除旧的认证文档和积分详情页面
- 更新主题配置:调整配色方案和视觉风格
- 修复导入路径:优化组件导入结构
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-10-31 17:53:56 +08:00 |