feat(membership): 实现会员系统和购买流程
- 创建 MembershipModalContext 统一管理会员弹窗 - 优化 MembershipModal 产品套餐展示和购买流程 - 集成 RevenueCat SDK 并初始化内购功能 - 在个人中心添加会员 Banner,引导非会员用户订阅 - 修复日志工具的循环引用问题,确保错误信息正确记录 - 版本更新至 1.0.20 新增了完整的会员购买流程,包括套餐选择、购买确认、购买恢复等功能。会员 Banner 仅对非会员用户展示,已是会员的用户不会看到。同时优化了错误日志记录,避免循环引用导致的序列化失败。
This commit is contained in:
63
utils/logger-test.ts
Normal file
63
utils/logger-test.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
// 简单的日志记录器测试文件
|
||||
// 用于验证修复后的日志记录器是否能正确处理循环引用
|
||||
|
||||
import { log } from './logger';
|
||||
|
||||
// 测试循环引用对象
|
||||
const createCircularObject = () => {
|
||||
const obj: any = { name: 'test' };
|
||||
obj.self = obj; // 创建循环引用
|
||||
return obj;
|
||||
};
|
||||
|
||||
// 测试 Error 对象
|
||||
const createErrorObject = () => {
|
||||
const error = new Error('Test error message');
|
||||
error.name = 'TestError';
|
||||
return error;
|
||||
};
|
||||
|
||||
// 测试 RevenueCat 类型的错误对象
|
||||
const createRevenueCatError = () => {
|
||||
return {
|
||||
code: 'PRODUCT_NOT_FOUND',
|
||||
message: 'There is an issue with your configuration. Check the underlying error for more details. There are no products registered in the RevenueCat dashboard for your offerings.',
|
||||
underlyingErrorMessage: 'No products found',
|
||||
name: 'RevenueCatError'
|
||||
};
|
||||
};
|
||||
|
||||
// 运行测试
|
||||
export const testLogger = async () => {
|
||||
console.log('开始测试日志记录器...');
|
||||
|
||||
try {
|
||||
// 测试1: 循环引用对象
|
||||
console.log('测试1: 循环引用对象');
|
||||
const circularObj = createCircularObject();
|
||||
await log.info('测试循环引用对象', { data: circularObj });
|
||||
|
||||
// 测试2: Error 对象
|
||||
console.log('测试2: Error 对象');
|
||||
const errorObj = createErrorObject();
|
||||
await log.error('测试 Error 对象', { error: errorObj });
|
||||
|
||||
// 测试3: RevenueCat 错误对象
|
||||
console.log('测试3: RevenueCat 错误对象');
|
||||
const revenueCatError = createRevenueCatError();
|
||||
await log.error('测试 RevenueCat 错误', { error: revenueCatError });
|
||||
|
||||
// 测试4: 直接传递 Error 对象
|
||||
console.log('测试4: 直接传递 Error 对象');
|
||||
await log.error('测试直接传递 Error', createErrorObject());
|
||||
|
||||
console.log('所有测试完成!');
|
||||
} catch (error) {
|
||||
console.error('测试过程中出现错误:', error);
|
||||
}
|
||||
};
|
||||
|
||||
// 如果直接运行此文件,执行测试
|
||||
if (require.main === module) {
|
||||
testLogger();
|
||||
}
|
||||
Reference in New Issue
Block a user