@norcy/react-native-toolkit 0.1.124 → 0.1.126

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.DS_Store CHANGED
Binary file
Binary file
@@ -73,6 +73,9 @@ const ConfigDataModel = exports.ConfigDataModel = {
73
73
  ConfigDataModel.fetch();
74
74
  }
75
75
  });
76
+
77
+ // 防止 Config 太慢,而 Vip 页面却已经打开导致无商品的问题
78
+ _VipAndroidManager.VipAndroidManager.setOfferings(ConfigDataModel.get('vip_android_offerings'));
76
79
  ConfigDataModel.fetch();
77
80
  },
78
81
  fetch: () => {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_LoginManager","_Notification","_VersionManager","_VipAndroidManager","EventEmitter","eventEmitter","MyItems","AV","_filterByVersion","items","ret","item","VersionManager","isValidVersion","get","push","_updateKeyValues","value","trim","handleVersionInfo","init","latestAppVersion","ConfigDataModel","Platform","OS","latestBundleVersion","isDataReady","isNetwordDataReady","_handleResponse","OnlineItems","console","log","VipAndroidManager","setOfferings","emitChange","exports","defaultValues","Notification","addListener","_ref","isAuto","user","error","fetch","query","Query","equalTo","find","then","catch","e","key","emit","addListenerOnce","callback","once","on","shouldEnableByRate","enable","rate","_LoginManager$current","_LoginManager$current2","r","lastChar","LoginManager","currentUser","AVUser","slice","indexOf","toLowerCase"],"sources":["ConfigDataModel.ts"],"sourcesContent":["import { Object } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { LoginManager, LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { VersionManager } from './VersionManager';\nimport { VipAndroidManager } from './VipAndroidManager';\n\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\nexport interface ConfigsType {\n [key: string]: any;\n}\nlet MyItems: ConfigsType = {};\n\nconst AV = require('leancloud-storage');\n\nconst _filterByVersion = (items: Object[]) => {\n let ret = [];\n for (const item of items) {\n if (\n !VersionManager.isValidVersion(item.get('minVer'), item.get('maxVer'))\n ) {\n continue;\n }\n ret.push(item);\n }\n return ret;\n};\n\nconst _updateKeyValues = (items: Object[]) => {\n for (const item of items) {\n let value = item.get('value');\n if (typeof value === 'string') {\n // 因为 leancloud 无法配置空白内容,所以 trim 下,这样就能以空格代替空白{\n value = value.trim();\n }\n MyItems[item.get('key')] = value;\n }\n};\n\nconst handleVersionInfo = () => {\n VersionManager.init({\n latestAppVersion: ConfigDataModel.get(\n Platform.OS === 'android' ? 'aov' : 'ov'\n ),\n latestBundleVersion: ConfigDataModel.get(\n Platform.OS === 'android' ? 'abov' : 'bov'\n ),\n });\n};\n\nlet isDataReady = false;\nlet isNetwordDataReady = false;\n\nconst _handleResponse = (OnlineItems: Object[]) => {\n if (!isNetwordDataReady) {\n return;\n }\n\n // 根据版本过滤\n let items = _filterByVersion(OnlineItems);\n _updateKeyValues(items);\n // 处理 Version 信息\n handleVersionInfo();\n console.log('Config 处理完毕');\n isDataReady = true;\n VipAndroidManager.setOfferings(ConfigDataModel.get('vip_android_offerings'));\n ConfigDataModel.emitChange();\n};\n\n// ConfigDataModel 的 Config 是支持后台配置多条同一个 Key 的,按版本区分\nconst ConfigDataModel = {\n init: (defaultValues: ConfigsType) => {\n MyItems = defaultValues;\n\n Notification.addListener(\n 'onLogin',\n ({ isAuto, user, error }: LoginResultDataType) => {\n if (!isAuto && user && !error) {\n isDataReady = false;\n isNetwordDataReady = false;\n ConfigDataModel.fetch();\n }\n }\n );\n\n ConfigDataModel.fetch();\n },\n\n fetch: () => {\n // 确保可重入,但如果网络一直出错的话,每次调用都会一直发\n if (isNetwordDataReady) {\n return;\n }\n\n const query = new AV.Query('Configs');\n query.equalTo('valid', true).equalTo(Platform.OS, true);\n query\n .find()\n .then((items: Object[]) => {\n console.log('Config 抓取完毕');\n isNetwordDataReady = true;\n _handleResponse(items);\n })\n .catch((e: any) => {\n console.error(e);\n });\n },\n\n get: (key: string) => {\n return MyItems[key];\n },\n\n emitChange: () => {\n eventEmitter.emit('change');\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return;\n }\n eventEmitter.once('change', callback);\n },\n\n addListener: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return;\n }\n eventEmitter.on('change', callback);\n },\n\n shouldEnableByRate: (enable?: boolean, rate?: number) => {\n if (!enable) {\n return false;\n }\n // rate 不传,默认为全量\n const r = rate ?? 1;\n if (r <= 0) {\n return false;\n }\n // ID 最后一位是 16 进制(0-f),未登录默认为全量\n const lastChar =\n LoginManager.currentUser()?.AVUser?.get('objectId')?.slice(-1) ?? '0';\n return '0123456789abcdef'.indexOf(lastChar.toLowerCase()) < r * 16;\n },\n};\n\nexport { ConfigDataModel };\n"],"mappings":"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"}
1
+ {"version":3,"names":["_reactNative","require","_LoginManager","_Notification","_VersionManager","_VipAndroidManager","EventEmitter","eventEmitter","MyItems","AV","_filterByVersion","items","ret","item","VersionManager","isValidVersion","get","push","_updateKeyValues","value","trim","handleVersionInfo","init","latestAppVersion","ConfigDataModel","Platform","OS","latestBundleVersion","isDataReady","isNetwordDataReady","_handleResponse","OnlineItems","console","log","VipAndroidManager","setOfferings","emitChange","exports","defaultValues","Notification","addListener","_ref","isAuto","user","error","fetch","query","Query","equalTo","find","then","catch","e","key","emit","addListenerOnce","callback","once","on","shouldEnableByRate","enable","rate","_LoginManager$current","_LoginManager$current2","r","lastChar","LoginManager","currentUser","AVUser","slice","indexOf","toLowerCase"],"sources":["ConfigDataModel.ts"],"sourcesContent":["import { Object } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { LoginManager, LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { VersionManager } from './VersionManager';\nimport { VipAndroidManager } from './VipAndroidManager';\n\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\nexport interface ConfigsType {\n [key: string]: any;\n}\nlet MyItems: ConfigsType = {};\n\nconst AV = require('leancloud-storage');\n\nconst _filterByVersion = (items: Object[]) => {\n let ret = [];\n for (const item of items) {\n if (\n !VersionManager.isValidVersion(item.get('minVer'), item.get('maxVer'))\n ) {\n continue;\n }\n ret.push(item);\n }\n return ret;\n};\n\nconst _updateKeyValues = (items: Object[]) => {\n for (const item of items) {\n let value = item.get('value');\n if (typeof value === 'string') {\n // 因为 leancloud 无法配置空白内容,所以 trim 下,这样就能以空格代替空白{\n value = value.trim();\n }\n MyItems[item.get('key')] = value;\n }\n};\n\nconst handleVersionInfo = () => {\n VersionManager.init({\n latestAppVersion: ConfigDataModel.get(\n Platform.OS === 'android' ? 'aov' : 'ov'\n ),\n latestBundleVersion: ConfigDataModel.get(\n Platform.OS === 'android' ? 'abov' : 'bov'\n ),\n });\n};\n\nlet isDataReady = false;\nlet isNetwordDataReady = false;\n\nconst _handleResponse = (OnlineItems: Object[]) => {\n if (!isNetwordDataReady) {\n return;\n }\n\n // 根据版本过滤\n let items = _filterByVersion(OnlineItems);\n _updateKeyValues(items);\n // 处理 Version 信息\n handleVersionInfo();\n console.log('Config 处理完毕');\n isDataReady = true;\n VipAndroidManager.setOfferings(ConfigDataModel.get('vip_android_offerings'));\n ConfigDataModel.emitChange();\n};\n\n// ConfigDataModel 的 Config 是支持后台配置多条同一个 Key 的,按版本区分\nconst ConfigDataModel = {\n init: (defaultValues: ConfigsType) => {\n MyItems = defaultValues;\n\n Notification.addListener(\n 'onLogin',\n ({ isAuto, user, error }: LoginResultDataType) => {\n if (!isAuto && user && !error) {\n isDataReady = false;\n isNetwordDataReady = false;\n ConfigDataModel.fetch();\n }\n }\n );\n\n // 防止 Config 太慢,而 Vip 页面却已经打开导致无商品的问题\n VipAndroidManager.setOfferings(\n ConfigDataModel.get('vip_android_offerings')\n );\n ConfigDataModel.fetch();\n },\n\n fetch: () => {\n // 确保可重入,但如果网络一直出错的话,每次调用都会一直发\n if (isNetwordDataReady) {\n return;\n }\n\n const query = new AV.Query('Configs');\n query.equalTo('valid', true).equalTo(Platform.OS, true);\n query\n .find()\n .then((items: Object[]) => {\n console.log('Config 抓取完毕');\n isNetwordDataReady = true;\n _handleResponse(items);\n })\n .catch((e: any) => {\n console.error(e);\n });\n },\n\n get: (key: string) => {\n return MyItems[key];\n },\n\n emitChange: () => {\n eventEmitter.emit('change');\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return;\n }\n eventEmitter.once('change', callback);\n },\n\n addListener: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return;\n }\n eventEmitter.on('change', callback);\n },\n\n shouldEnableByRate: (enable?: boolean, rate?: number) => {\n if (!enable) {\n return false;\n }\n // rate 不传,默认为全量\n const r = rate ?? 1;\n if (r <= 0) {\n return false;\n }\n // ID 最后一位是 16 进制(0-f),未登录默认为全量\n const lastChar =\n LoginManager.currentUser()?.AVUser?.get('objectId')?.slice(-1) ?? '0';\n return '0123456789abcdef'.indexOf(lastChar.toLowerCase()) < r * 16;\n },\n};\n\nexport { ConfigDataModel };\n"],"mappings":"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"}
@@ -225,9 +225,19 @@ const VipManager = exports.VipManager = {
225
225
  return '';
226
226
  }
227
227
  },
228
- vipCountDay: () => {
228
+ vipBuyTime: () => {
229
229
  var _customerInfo5;
230
- const time = (_customerInfo5 = _customerInfo) === null || _customerInfo5 === void 0 || (_customerInfo5 = _customerInfo5.entitlements) === null || _customerInfo5 === void 0 || (_customerInfo5 = _customerInfo5.active) === null || _customerInfo5 === void 0 || (_customerInfo5 = _customerInfo5.vip) === null || _customerInfo5 === void 0 ? void 0 : _customerInfo5.expirationDate;
230
+ const time = (_customerInfo5 = _customerInfo) === null || _customerInfo5 === void 0 || (_customerInfo5 = _customerInfo5.entitlements) === null || _customerInfo5 === void 0 || (_customerInfo5 = _customerInfo5.active) === null || _customerInfo5 === void 0 || (_customerInfo5 = _customerInfo5.vip) === null || _customerInfo5 === void 0 ? void 0 : _customerInfo5.originalPurchaseDate;
231
+ if (VipManager.isVip() && time) {
232
+ const date = new Date(time);
233
+ return _Tool.Tool.formatDate(date, 'yyyy-MM-dd');
234
+ } else {
235
+ return '';
236
+ }
237
+ },
238
+ vipCountDay: () => {
239
+ var _customerInfo6;
240
+ const time = (_customerInfo6 = _customerInfo) === null || _customerInfo6 === void 0 || (_customerInfo6 = _customerInfo6.entitlements) === null || _customerInfo6 === void 0 || (_customerInfo6 = _customerInfo6.active) === null || _customerInfo6 === void 0 || (_customerInfo6 = _customerInfo6.vip) === null || _customerInfo6 === void 0 ? void 0 : _customerInfo6.expirationDate;
231
241
  if (VipManager.isVip() && time) {
232
242
  const date = new Date(time);
233
243
  const diff = date.getTime() - new Date().getTime();
@@ -249,6 +259,18 @@ const VipManager = exports.VipManager = {
249
259
  }
250
260
  return false;
251
261
  },
262
+ isFoundingVip: () => {
263
+ if (!VipManager.isForeverVip()) {
264
+ return false;
265
+ }
266
+ const buyTime = VipManager.vipBuyTime();
267
+ if (!buyTime) {
268
+ return false;
269
+ }
270
+ const foundingEndDate = new Date('2025-03-31');
271
+ const buyDate = new Date(buyTime);
272
+ return buyDate <= foundingEndDate;
273
+ },
252
274
  isVipExpired: () => {
253
275
  var _LoginManager$current2;
254
276
  // 不是会员,但是 vipType 存在,说明曾经领过会员
@@ -257,7 +279,7 @@ const VipManager = exports.VipManager = {
257
279
  },
258
280
  refreshVip: async customerInfo => {
259
281
  try {
260
- var _customerInfo6;
282
+ var _customerInfo7;
261
283
  if (!isReady) {
262
284
  console.log('VIP 模块无有效配置信息');
263
285
  return;
@@ -268,7 +290,7 @@ const VipManager = exports.VipManager = {
268
290
  } else {
269
291
  _customerInfo = await _reactNativePurchases.default.getCustomerInfo();
270
292
  }
271
- console.log('VIP 信息刷新完毕', (_customerInfo6 = _customerInfo) === null || _customerInfo6 === void 0 || (_customerInfo6 = _customerInfo6.entitlements) === null || _customerInfo6 === void 0 ? void 0 : _customerInfo6.active);
293
+ console.log('VIP 信息刷新完毕', (_customerInfo7 = _customerInfo) === null || _customerInfo7 === void 0 || (_customerInfo7 = _customerInfo7.entitlements) === null || _customerInfo7 === void 0 ? void 0 : _customerInfo7.active);
272
294
  console.log('是否是 VIP', VipManager.isVip());
273
295
  console.log('VipInfo 过期时间', VipManager.vipEndTime());
274
296
  await updateVipInfo();
@@ -283,13 +305,13 @@ const VipManager = exports.VipManager = {
283
305
  }
284
306
  };
285
307
  const updateVipInfo = async () => {
286
- var _customerInfo7, _LoginManager$current3;
308
+ var _customerInfo8, _LoginManager$current3;
287
309
  if (!VipManager.isVip() || !_LoginManager.LoginManager.isLogin()) {
288
310
  return;
289
311
  }
290
312
  const keys = [];
291
313
  const values = [];
292
- const vipType = (_customerInfo7 = _customerInfo) === null || _customerInfo7 === void 0 || (_customerInfo7 = _customerInfo7.entitlements) === null || _customerInfo7 === void 0 || (_customerInfo7 = _customerInfo7.active) === null || _customerInfo7 === void 0 || (_customerInfo7 = _customerInfo7.vip) === null || _customerInfo7 === void 0 ? void 0 : _customerInfo7.productIdentifier;
314
+ const vipType = (_customerInfo8 = _customerInfo) === null || _customerInfo8 === void 0 || (_customerInfo8 = _customerInfo8.entitlements) === null || _customerInfo8 === void 0 || (_customerInfo8 = _customerInfo8.active) === null || _customerInfo8 === void 0 || (_customerInfo8 = _customerInfo8.vip) === null || _customerInfo8 === void 0 ? void 0 : _customerInfo8.productIdentifier;
293
315
  const oldVipType = (_LoginManager$current3 = _LoginManager.LoginManager.currentUser()) === null || _LoginManager$current3 === void 0 ? void 0 : _LoginManager$current3.AVUser.get('vipType');
294
316
  if (vipType && vipType !== oldVipType) {
295
317
  keys.push('vipType');
@@ -299,8 +321,8 @@ const updateVipInfo = async () => {
299
321
  if (VipManager.isForeverVip()) {
300
322
  vipEndTime = new Date(10413763200000); // 约定 2300-01-01 00:00:00 为永久会员
301
323
  } else {
302
- var _customerInfo8;
303
- const expireDate = (_customerInfo8 = _customerInfo) === null || _customerInfo8 === void 0 || (_customerInfo8 = _customerInfo8.entitlements) === null || _customerInfo8 === void 0 || (_customerInfo8 = _customerInfo8.active) === null || _customerInfo8 === void 0 || (_customerInfo8 = _customerInfo8.vip) === null || _customerInfo8 === void 0 ? void 0 : _customerInfo8.expirationDate;
324
+ var _customerInfo9;
325
+ const expireDate = (_customerInfo9 = _customerInfo) === null || _customerInfo9 === void 0 || (_customerInfo9 = _customerInfo9.entitlements) === null || _customerInfo9 === void 0 || (_customerInfo9 = _customerInfo9.active) === null || _customerInfo9 === void 0 || (_customerInfo9 = _customerInfo9.vip) === null || _customerInfo9 === void 0 ? void 0 : _customerInfo9.expirationDate;
304
326
  if (expireDate) {
305
327
  vipEndTime = new Date(expireDate);
306
328
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_reactNativePurchases","_interopRequireDefault","_DevConfig","_LoginManager","_Notification","_PrefData","_Tool","_VipAndroidManager","obj","__esModule","default","_customerInfo","isReady","onLogin","user","Purchases","logIn","AVUser","get","setAttributes","nickname","VipManager","refreshVip","e","console","error","exports","init","ToolkitConfig","RC_API_KEY","log","RC_PROXY_URL","setProxyURL","configure","apiKey","loginUser","LoginManager","currentUser","Notification","addListener","_ref","logOut","purchase","purchasePackage","errorCode","isLogin","Platform","OS","VipAndroidManager","customerInfo","entitlements","active","RC_ENTITLEMENT_ID","errorMsg","userCancelled","message","recover","_customerInfo$entitle","restorePurchases","vip","getPackages","offeringId","isForeverVip","__DEV__","offerings","getOfferings","targetOffering","all","current","availablePackages","length","packages","isVip","isTrailVip","filter","item","productItem","product","productCategory","_customerInfo2","_customerInfo3","_isVip2","_isVip","isActive","isSandbox","DevConfig","hasValue","BuildInPrefs","DevVip","getValue","_VipManager$vipEndTim","vipEndTime","vipCountDay","_customerInfo4","time","expirationDate","date","Date","Tool","formatDate","_customerInfo5","diff","getTime","Math","max","ceil","_LoginManager$current","vipType","includes","isVipExpired","_LoginManager$current2","_customerInfo6","getCustomerInfo","updateVipInfo","postNotification","_customerInfo7","_LoginManager$current3","keys","values","productIdentifier","oldVipType","push","_customerInfo8","expireDate","_LoginManager$current4","oldVipEndTime","batchUpdateUser"],"sources":["VipManager.ts"],"sourcesContent":["import { Platform } from 'react-native';\nimport Purchases, {\n CustomerInfo,\n PurchasesPackage,\n} from 'react-native-purchases';\nimport { DevConfig } from './DevConfig';\nimport { LoginManager, LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { BuildInPrefs } from './PrefData';\nimport { Tool, ToolkitConfig } from './Tool';\nimport { VipAndroidManager } from './VipAndroidManager';\nimport { UserType } from './constant';\n\nlet _customerInfo: CustomerInfo | null;\nlet isReady = false;\n\nconst onLogin = async (user: UserType) => {\n try {\n await Purchases.logIn(user.AVUser.get('objectId'));\n await Purchases.setAttributes({ nickname: user.nickname });\n await VipManager.refreshVip();\n } catch (e) {\n console.error(e);\n }\n};\n\nexport const VipManager = {\n init: async () => {\n isReady = !!ToolkitConfig.RC_API_KEY;\n\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return;\n }\n\n console.log('Vip 模块初始化');\n\n if (ToolkitConfig.RC_PROXY_URL) {\n console.log('设置代理', ToolkitConfig.RC_PROXY_URL);\n await Purchases.setProxyURL(ToolkitConfig.RC_PROXY_URL);\n }\n Purchases.configure({ apiKey: ToolkitConfig.RC_API_KEY });\n\n VipManager.refreshVip();\n\n const loginUser = LoginManager.currentUser();\n if (loginUser) {\n console.log('Vip 模块用户登录 from 直接');\n onLogin(loginUser);\n }\n\n Notification.addListener(\n 'onLogin',\n async ({ error, user }: LoginResultDataType) => {\n console.log('Vip 模块用户登录 from 监听');\n if (!error && user) {\n onLogin(user);\n }\n }\n );\n\n Notification.addListener('onLogout', () => {\n Purchases.logOut();\n _customerInfo = null;\n });\n },\n\n purchase: async (purchasePackage: PurchasesPackage) => {\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return { errorCode: -99 };\n }\n\n if (!LoginManager.isLogin()) {\n return { errorCode: -1 };\n }\n\n if (!purchasePackage) {\n return { errorCode: -4 };\n }\n\n console.log('购买商品', purchasePackage);\n\n if (Platform.OS === 'android') {\n return await VipAndroidManager.purchase(purchasePackage);\n }\n\n try {\n const { customerInfo } = await Purchases.purchasePackage(purchasePackage);\n\n await VipManager.refreshVip(customerInfo);\n if (\n typeof customerInfo.entitlements.active[\n ToolkitConfig.RC_ENTITLEMENT_ID\n ] !== 'undefined'\n ) {\n console.log('购买成功');\n return { errorCode: 0 };\n } else {\n console.log('购买失败(-5)');\n return { errorCode: -5, errorMsg: '' };\n }\n } catch (e: any) {\n if (!e.userCancelled) {\n console.log('购买失败(-5)', e.message);\n return { errorCode: -5, errorMsg: e.message };\n } else {\n console.log('购买取消(-2)');\n return { errorCode: -2 };\n }\n }\n },\n\n recover: async () => {\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return { errorCode: -99 };\n }\n\n if (!LoginManager.isLogin()) {\n return { errorCode: -1 };\n }\n\n try {\n if (Platform.OS === 'android') {\n return await VipAndroidManager.recover();\n }\n\n console.log('iOS 恢复购买');\n const customerInfo = await Purchases.restorePurchases();\n await VipManager.refreshVip(customerInfo);\n if (customerInfo.entitlements.active?.vip) {\n console.log('恢复成功');\n return { errorCode: 0 };\n } else {\n console.log('恢复失败(-2)');\n return { errorCode: -2 };\n }\n } catch (e: any) {\n console.log('恢复失败(-3)', e.message);\n return { errorCode: -3, errorMsg: e.message };\n }\n },\n\n getPackages: async (offeringId?: string): Promise<PurchasesPackage[]> => {\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return [];\n }\n\n if (VipManager.isForeverVip()) {\n return [];\n }\n\n if (Platform.OS === 'android' || __DEV__) {\n return VipAndroidManager.getPackages(offeringId);\n }\n\n try {\n const offerings = await Purchases.getOfferings();\n let targetOffering;\n if (offeringId) {\n targetOffering = offerings.all[offeringId];\n }\n\n if (!targetOffering) {\n targetOffering = offerings.current;\n }\n\n console.log('获取商品');\n if (\n targetOffering !== null &&\n targetOffering.availablePackages.length !== 0\n ) {\n let packages = targetOffering.availablePackages;\n // 如果是订阅的,非试用的,过滤订阅产品,只展示永久 VIP\n if (VipManager.isVip() && !VipManager.isTrailVip()) {\n packages = packages.filter((item) => {\n const productItem: any = item.product;\n return productItem.productCategory === 'NON_SUBSCRIPTION';\n });\n }\n return packages;\n } else {\n return [];\n }\n } catch (e) {\n console.error('Get Product Fail', e);\n return [];\n }\n },\n\n isVip: () => {\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return false;\n }\n\n let _isVip = _customerInfo?.entitlements?.active?.vip?.isActive;\n if (\n _isVip &&\n !__DEV__ &&\n _customerInfo?.entitlements?.active?.vip.isSandbox\n ) {\n _isVip = false;\n }\n if (__DEV__) {\n if (DevConfig.hasValue(BuildInPrefs.DevVip)) {\n _isVip = DevConfig.getValue(BuildInPrefs.DevVip) ? true : false;\n }\n }\n return _isVip ?? false;\n },\n\n isForeverVip: () => {\n // 苹果的永久会员是非订阅制的,因此 RevenueCat 的 vipEndTime 会空\n return (\n VipManager.isVip() &&\n (VipManager.vipEndTime()?.length === 0 ||\n VipManager.vipCountDay() >= 36500)\n );\n },\n\n vipEndTime: () => {\n const time = _customerInfo?.entitlements?.active?.vip?.expirationDate;\n if (VipManager.isVip() && time) {\n const date = new Date(time);\n return Tool.formatDate(date, 'yyyy-MM-dd');\n } else {\n return '';\n }\n },\n\n vipCountDay: () => {\n const time = _customerInfo?.entitlements?.active?.vip?.expirationDate;\n if (VipManager.isVip() && time) {\n const date = new Date(time);\n const diff = date.getTime() - new Date().getTime();\n return Math.max(Math.ceil(diff / (24 * 60 * 60 * 1000)), 0);\n }\n return 0;\n },\n\n isTrailVip: () => {\n if (VipManager.isForeverVip()) {\n return false;\n }\n if (!VipManager.isVip()) {\n return false;\n }\n const vipType = LoginManager.currentUser()?.AVUser.get('vipType');\n if (vipType?.includes('rc_promo_')) {\n return true;\n }\n return false;\n },\n\n isVipExpired: () => {\n // 不是会员,但是 vipType 存在,说明曾经领过会员\n const vipType = LoginManager.currentUser()?.AVUser.get('vipType');\n return !VipManager.isVip() && vipType;\n },\n\n refreshVip: async (customerInfo?: CustomerInfo) => {\n try {\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return;\n }\n console.log('刷新 VIP');\n if (customerInfo) {\n _customerInfo = customerInfo;\n } else {\n _customerInfo = await Purchases.getCustomerInfo();\n }\n console.log('VIP 信息刷新完毕', _customerInfo?.entitlements?.active);\n console.log('是否是 VIP', VipManager.isVip());\n console.log('VipInfo 过期时间', VipManager.vipEndTime());\n\n await updateVipInfo();\n // 必须确保通知正常发出,因为其他模块依赖这个时机\n Notification.postNotification('onVipRefresh', {});\n } catch (e) {\n console.error(e);\n Notification.postNotification('onVipRefresh', { e });\n }\n },\n};\n\nconst updateVipInfo = async () => {\n if (!VipManager.isVip() || !LoginManager.isLogin()) {\n return;\n }\n\n const keys = [];\n const values = [];\n\n const vipType = _customerInfo?.entitlements?.active?.vip?.productIdentifier;\n const oldVipType = LoginManager.currentUser()?.AVUser.get('vipType');\n if (vipType && vipType !== oldVipType) {\n keys.push('vipType');\n values.push(vipType);\n }\n\n let vipEndTime;\n if (VipManager.isForeverVip()) {\n vipEndTime = new Date(10413763200000); // 约定 2300-01-01 00:00:00 为永久会员\n } else {\n const expireDate = _customerInfo?.entitlements?.active?.vip?.expirationDate;\n if (expireDate) {\n vipEndTime = new Date(expireDate);\n }\n }\n if (vipEndTime) {\n const oldVipEndTime = LoginManager.currentUser()?.AVUser.get('vipEndTime');\n if (vipEndTime.getTime() !== oldVipEndTime?.getTime()) {\n keys.push('vipEndTime');\n values.push(vipEndTime);\n }\n }\n\n if (keys.length > 0) {\n await LoginManager.batchUpdateUser(keys, values);\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_reactNative","require","_reactNativePurchases","_interopRequireDefault","_DevConfig","_LoginManager","_Notification","_PrefData","_Tool","_VipAndroidManager","obj","__esModule","default","_customerInfo","isReady","onLogin","user","Purchases","logIn","AVUser","get","setAttributes","nickname","VipManager","refreshVip","e","console","error","exports","init","ToolkitConfig","RC_API_KEY","log","RC_PROXY_URL","setProxyURL","configure","apiKey","loginUser","LoginManager","currentUser","Notification","addListener","_ref","logOut","purchase","purchasePackage","errorCode","isLogin","Platform","OS","VipAndroidManager","customerInfo","entitlements","active","RC_ENTITLEMENT_ID","errorMsg","userCancelled","message","recover","_customerInfo$entitle","restorePurchases","vip","getPackages","offeringId","isForeverVip","__DEV__","offerings","getOfferings","targetOffering","all","current","availablePackages","length","packages","isVip","isTrailVip","filter","item","productItem","product","productCategory","_customerInfo2","_customerInfo3","_isVip2","_isVip","isActive","isSandbox","DevConfig","hasValue","BuildInPrefs","DevVip","getValue","_VipManager$vipEndTim","vipEndTime","vipCountDay","_customerInfo4","time","expirationDate","date","Date","Tool","formatDate","vipBuyTime","_customerInfo5","originalPurchaseDate","_customerInfo6","diff","getTime","Math","max","ceil","_LoginManager$current","vipType","includes","isFoundingVip","buyTime","foundingEndDate","buyDate","isVipExpired","_LoginManager$current2","_customerInfo7","getCustomerInfo","updateVipInfo","postNotification","_customerInfo8","_LoginManager$current3","keys","values","productIdentifier","oldVipType","push","_customerInfo9","expireDate","_LoginManager$current4","oldVipEndTime","batchUpdateUser"],"sources":["VipManager.ts"],"sourcesContent":["import { Platform } from 'react-native';\nimport Purchases, {\n CustomerInfo,\n PurchasesPackage,\n} from 'react-native-purchases';\nimport { DevConfig } from './DevConfig';\nimport { LoginManager, LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { BuildInPrefs } from './PrefData';\nimport { Tool, ToolkitConfig } from './Tool';\nimport { VipAndroidManager } from './VipAndroidManager';\nimport { UserType } from './constant';\n\nlet _customerInfo: CustomerInfo | null;\nlet isReady = false;\n\nconst onLogin = async (user: UserType) => {\n try {\n await Purchases.logIn(user.AVUser.get('objectId'));\n await Purchases.setAttributes({ nickname: user.nickname });\n await VipManager.refreshVip();\n } catch (e) {\n console.error(e);\n }\n};\n\nexport const VipManager = {\n init: async () => {\n isReady = !!ToolkitConfig.RC_API_KEY;\n\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return;\n }\n\n console.log('Vip 模块初始化');\n\n if (ToolkitConfig.RC_PROXY_URL) {\n console.log('设置代理', ToolkitConfig.RC_PROXY_URL);\n await Purchases.setProxyURL(ToolkitConfig.RC_PROXY_URL);\n }\n Purchases.configure({ apiKey: ToolkitConfig.RC_API_KEY });\n\n VipManager.refreshVip();\n\n const loginUser = LoginManager.currentUser();\n if (loginUser) {\n console.log('Vip 模块用户登录 from 直接');\n onLogin(loginUser);\n }\n\n Notification.addListener(\n 'onLogin',\n async ({ error, user }: LoginResultDataType) => {\n console.log('Vip 模块用户登录 from 监听');\n if (!error && user) {\n onLogin(user);\n }\n }\n );\n\n Notification.addListener('onLogout', () => {\n Purchases.logOut();\n _customerInfo = null;\n });\n },\n\n purchase: async (purchasePackage: PurchasesPackage) => {\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return { errorCode: -99 };\n }\n\n if (!LoginManager.isLogin()) {\n return { errorCode: -1 };\n }\n\n if (!purchasePackage) {\n return { errorCode: -4 };\n }\n\n console.log('购买商品', purchasePackage);\n\n if (Platform.OS === 'android') {\n return await VipAndroidManager.purchase(purchasePackage);\n }\n\n try {\n const { customerInfo } = await Purchases.purchasePackage(purchasePackage);\n\n await VipManager.refreshVip(customerInfo);\n if (\n typeof customerInfo.entitlements.active[\n ToolkitConfig.RC_ENTITLEMENT_ID\n ] !== 'undefined'\n ) {\n console.log('购买成功');\n return { errorCode: 0 };\n } else {\n console.log('购买失败(-5)');\n return { errorCode: -5, errorMsg: '' };\n }\n } catch (e: any) {\n if (!e.userCancelled) {\n console.log('购买失败(-5)', e.message);\n return { errorCode: -5, errorMsg: e.message };\n } else {\n console.log('购买取消(-2)');\n return { errorCode: -2 };\n }\n }\n },\n\n recover: async () => {\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return { errorCode: -99 };\n }\n\n if (!LoginManager.isLogin()) {\n return { errorCode: -1 };\n }\n\n try {\n if (Platform.OS === 'android') {\n return await VipAndroidManager.recover();\n }\n\n console.log('iOS 恢复购买');\n const customerInfo = await Purchases.restorePurchases();\n await VipManager.refreshVip(customerInfo);\n if (customerInfo.entitlements.active?.vip) {\n console.log('恢复成功');\n return { errorCode: 0 };\n } else {\n console.log('恢复失败(-2)');\n return { errorCode: -2 };\n }\n } catch (e: any) {\n console.log('恢复失败(-3)', e.message);\n return { errorCode: -3, errorMsg: e.message };\n }\n },\n\n getPackages: async (offeringId?: string): Promise<PurchasesPackage[]> => {\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return [];\n }\n\n if (VipManager.isForeverVip()) {\n return [];\n }\n\n if (Platform.OS === 'android' || __DEV__) {\n return VipAndroidManager.getPackages(offeringId);\n }\n\n try {\n const offerings = await Purchases.getOfferings();\n let targetOffering;\n if (offeringId) {\n targetOffering = offerings.all[offeringId];\n }\n\n if (!targetOffering) {\n targetOffering = offerings.current;\n }\n\n console.log('获取商品');\n if (\n targetOffering !== null &&\n targetOffering.availablePackages.length !== 0\n ) {\n let packages = targetOffering.availablePackages;\n // 如果是订阅的,非试用的,过滤订阅产品,只展示永久 VIP\n if (VipManager.isVip() && !VipManager.isTrailVip()) {\n packages = packages.filter((item) => {\n const productItem: any = item.product;\n return productItem.productCategory === 'NON_SUBSCRIPTION';\n });\n }\n return packages;\n } else {\n return [];\n }\n } catch (e) {\n console.error('Get Product Fail', e);\n return [];\n }\n },\n\n isVip: () => {\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return false;\n }\n\n let _isVip = _customerInfo?.entitlements?.active?.vip?.isActive;\n if (\n _isVip &&\n !__DEV__ &&\n _customerInfo?.entitlements?.active?.vip.isSandbox\n ) {\n _isVip = false;\n }\n if (__DEV__) {\n if (DevConfig.hasValue(BuildInPrefs.DevVip)) {\n _isVip = DevConfig.getValue(BuildInPrefs.DevVip) ? true : false;\n }\n }\n return _isVip ?? false;\n },\n\n isForeverVip: () => {\n // 苹果的永久会员是非订阅制的,因此 RevenueCat 的 vipEndTime 会空\n return (\n VipManager.isVip() &&\n (VipManager.vipEndTime()?.length === 0 ||\n VipManager.vipCountDay() >= 36500)\n );\n },\n\n vipEndTime: () => {\n const time = _customerInfo?.entitlements?.active?.vip?.expirationDate;\n if (VipManager.isVip() && time) {\n const date = new Date(time);\n return Tool.formatDate(date, 'yyyy-MM-dd');\n } else {\n return '';\n }\n },\n\n vipBuyTime: () => {\n const time = _customerInfo?.entitlements?.active?.vip?.originalPurchaseDate;\n if (VipManager.isVip() && time) {\n const date = new Date(time);\n return Tool.formatDate(date, 'yyyy-MM-dd');\n } else {\n return '';\n }\n },\n\n vipCountDay: () => {\n const time = _customerInfo?.entitlements?.active?.vip?.expirationDate;\n if (VipManager.isVip() && time) {\n const date = new Date(time);\n const diff = date.getTime() - new Date().getTime();\n return Math.max(Math.ceil(diff / (24 * 60 * 60 * 1000)), 0);\n }\n return 0;\n },\n\n isTrailVip: () => {\n if (VipManager.isForeverVip()) {\n return false;\n }\n if (!VipManager.isVip()) {\n return false;\n }\n const vipType = LoginManager.currentUser()?.AVUser.get('vipType');\n if (vipType?.includes('rc_promo_')) {\n return true;\n }\n return false;\n },\n\n isFoundingVip: () => {\n if (!VipManager.isForeverVip()) {\n return false;\n }\n const buyTime = VipManager.vipBuyTime();\n if (!buyTime) {\n return false;\n }\n const foundingEndDate = new Date('2025-03-31');\n const buyDate = new Date(buyTime);\n return buyDate <= foundingEndDate;\n },\n\n isVipExpired: () => {\n // 不是会员,但是 vipType 存在,说明曾经领过会员\n const vipType = LoginManager.currentUser()?.AVUser.get('vipType');\n return !VipManager.isVip() && vipType;\n },\n\n refreshVip: async (customerInfo?: CustomerInfo) => {\n try {\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return;\n }\n console.log('刷新 VIP');\n if (customerInfo) {\n _customerInfo = customerInfo;\n } else {\n _customerInfo = await Purchases.getCustomerInfo();\n }\n console.log('VIP 信息刷新完毕', _customerInfo?.entitlements?.active);\n console.log('是否是 VIP', VipManager.isVip());\n console.log('VipInfo 过期时间', VipManager.vipEndTime());\n\n await updateVipInfo();\n // 必须确保通知正常发出,因为其他模块依赖这个时机\n Notification.postNotification('onVipRefresh', {});\n } catch (e) {\n console.error(e);\n Notification.postNotification('onVipRefresh', { e });\n }\n },\n};\n\nconst updateVipInfo = async () => {\n if (!VipManager.isVip() || !LoginManager.isLogin()) {\n return;\n }\n\n const keys = [];\n const values = [];\n\n const vipType = _customerInfo?.entitlements?.active?.vip?.productIdentifier;\n const oldVipType = LoginManager.currentUser()?.AVUser.get('vipType');\n if (vipType && vipType !== oldVipType) {\n keys.push('vipType');\n values.push(vipType);\n }\n\n let vipEndTime;\n if (VipManager.isForeverVip()) {\n vipEndTime = new Date(10413763200000); // 约定 2300-01-01 00:00:00 为永久会员\n } else {\n const expireDate = _customerInfo?.entitlements?.active?.vip?.expirationDate;\n if (expireDate) {\n vipEndTime = new Date(expireDate);\n }\n }\n if (vipEndTime) {\n const oldVipEndTime = LoginManager.currentUser()?.AVUser.get('vipEndTime');\n if (vipEndTime.getTime() !== oldVipEndTime?.getTime()) {\n keys.push('vipEndTime');\n values.push(vipEndTime);\n }\n }\n\n if (keys.length > 0) {\n await LoginManager.batchUpdateUser(keys, values);\n }\n};\n"],"mappings":"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"}
@@ -67,6 +67,9 @@ const ConfigDataModel = {
67
67
  ConfigDataModel.fetch();
68
68
  }
69
69
  });
70
+
71
+ // 防止 Config 太慢,而 Vip 页面却已经打开导致无商品的问题
72
+ VipAndroidManager.setOfferings(ConfigDataModel.get('vip_android_offerings'));
70
73
  ConfigDataModel.fetch();
71
74
  },
72
75
  fetch: () => {
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","LoginManager","Notification","VersionManager","VipAndroidManager","EventEmitter","require","eventEmitter","MyItems","AV","_filterByVersion","items","ret","item","isValidVersion","get","push","_updateKeyValues","value","trim","handleVersionInfo","init","latestAppVersion","ConfigDataModel","OS","latestBundleVersion","isDataReady","isNetwordDataReady","_handleResponse","OnlineItems","console","log","setOfferings","emitChange","defaultValues","addListener","_ref","isAuto","user","error","fetch","query","Query","equalTo","find","then","catch","e","key","emit","addListenerOnce","callback","once","on","shouldEnableByRate","enable","rate","_LoginManager$current","_LoginManager$current2","r","lastChar","currentUser","AVUser","slice","indexOf","toLowerCase"],"sources":["ConfigDataModel.ts"],"sourcesContent":["import { Object } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { LoginManager, LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { VersionManager } from './VersionManager';\nimport { VipAndroidManager } from './VipAndroidManager';\n\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\nexport interface ConfigsType {\n [key: string]: any;\n}\nlet MyItems: ConfigsType = {};\n\nconst AV = require('leancloud-storage');\n\nconst _filterByVersion = (items: Object[]) => {\n let ret = [];\n for (const item of items) {\n if (\n !VersionManager.isValidVersion(item.get('minVer'), item.get('maxVer'))\n ) {\n continue;\n }\n ret.push(item);\n }\n return ret;\n};\n\nconst _updateKeyValues = (items: Object[]) => {\n for (const item of items) {\n let value = item.get('value');\n if (typeof value === 'string') {\n // 因为 leancloud 无法配置空白内容,所以 trim 下,这样就能以空格代替空白{\n value = value.trim();\n }\n MyItems[item.get('key')] = value;\n }\n};\n\nconst handleVersionInfo = () => {\n VersionManager.init({\n latestAppVersion: ConfigDataModel.get(\n Platform.OS === 'android' ? 'aov' : 'ov'\n ),\n latestBundleVersion: ConfigDataModel.get(\n Platform.OS === 'android' ? 'abov' : 'bov'\n ),\n });\n};\n\nlet isDataReady = false;\nlet isNetwordDataReady = false;\n\nconst _handleResponse = (OnlineItems: Object[]) => {\n if (!isNetwordDataReady) {\n return;\n }\n\n // 根据版本过滤\n let items = _filterByVersion(OnlineItems);\n _updateKeyValues(items);\n // 处理 Version 信息\n handleVersionInfo();\n console.log('Config 处理完毕');\n isDataReady = true;\n VipAndroidManager.setOfferings(ConfigDataModel.get('vip_android_offerings'));\n ConfigDataModel.emitChange();\n};\n\n// ConfigDataModel 的 Config 是支持后台配置多条同一个 Key 的,按版本区分\nconst ConfigDataModel = {\n init: (defaultValues: ConfigsType) => {\n MyItems = defaultValues;\n\n Notification.addListener(\n 'onLogin',\n ({ isAuto, user, error }: LoginResultDataType) => {\n if (!isAuto && user && !error) {\n isDataReady = false;\n isNetwordDataReady = false;\n ConfigDataModel.fetch();\n }\n }\n );\n\n ConfigDataModel.fetch();\n },\n\n fetch: () => {\n // 确保可重入,但如果网络一直出错的话,每次调用都会一直发\n if (isNetwordDataReady) {\n return;\n }\n\n const query = new AV.Query('Configs');\n query.equalTo('valid', true).equalTo(Platform.OS, true);\n query\n .find()\n .then((items: Object[]) => {\n console.log('Config 抓取完毕');\n isNetwordDataReady = true;\n _handleResponse(items);\n })\n .catch((e: any) => {\n console.error(e);\n });\n },\n\n get: (key: string) => {\n return MyItems[key];\n },\n\n emitChange: () => {\n eventEmitter.emit('change');\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return;\n }\n eventEmitter.once('change', callback);\n },\n\n addListener: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return;\n }\n eventEmitter.on('change', callback);\n },\n\n shouldEnableByRate: (enable?: boolean, rate?: number) => {\n if (!enable) {\n return false;\n }\n // rate 不传,默认为全量\n const r = rate ?? 1;\n if (r <= 0) {\n return false;\n }\n // ID 最后一位是 16 进制(0-f),未登录默认为全量\n const lastChar =\n LoginManager.currentUser()?.AVUser?.get('objectId')?.slice(-1) ?? '0';\n return '0123456789abcdef'.indexOf(lastChar.toLowerCase()) < r * 16;\n },\n};\n\nexport { ConfigDataModel };\n"],"mappings":"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"}
1
+ {"version":3,"names":["Platform","LoginManager","Notification","VersionManager","VipAndroidManager","EventEmitter","require","eventEmitter","MyItems","AV","_filterByVersion","items","ret","item","isValidVersion","get","push","_updateKeyValues","value","trim","handleVersionInfo","init","latestAppVersion","ConfigDataModel","OS","latestBundleVersion","isDataReady","isNetwordDataReady","_handleResponse","OnlineItems","console","log","setOfferings","emitChange","defaultValues","addListener","_ref","isAuto","user","error","fetch","query","Query","equalTo","find","then","catch","e","key","emit","addListenerOnce","callback","once","on","shouldEnableByRate","enable","rate","_LoginManager$current","_LoginManager$current2","r","lastChar","currentUser","AVUser","slice","indexOf","toLowerCase"],"sources":["ConfigDataModel.ts"],"sourcesContent":["import { Object } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { LoginManager, LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { VersionManager } from './VersionManager';\nimport { VipAndroidManager } from './VipAndroidManager';\n\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\nexport interface ConfigsType {\n [key: string]: any;\n}\nlet MyItems: ConfigsType = {};\n\nconst AV = require('leancloud-storage');\n\nconst _filterByVersion = (items: Object[]) => {\n let ret = [];\n for (const item of items) {\n if (\n !VersionManager.isValidVersion(item.get('minVer'), item.get('maxVer'))\n ) {\n continue;\n }\n ret.push(item);\n }\n return ret;\n};\n\nconst _updateKeyValues = (items: Object[]) => {\n for (const item of items) {\n let value = item.get('value');\n if (typeof value === 'string') {\n // 因为 leancloud 无法配置空白内容,所以 trim 下,这样就能以空格代替空白{\n value = value.trim();\n }\n MyItems[item.get('key')] = value;\n }\n};\n\nconst handleVersionInfo = () => {\n VersionManager.init({\n latestAppVersion: ConfigDataModel.get(\n Platform.OS === 'android' ? 'aov' : 'ov'\n ),\n latestBundleVersion: ConfigDataModel.get(\n Platform.OS === 'android' ? 'abov' : 'bov'\n ),\n });\n};\n\nlet isDataReady = false;\nlet isNetwordDataReady = false;\n\nconst _handleResponse = (OnlineItems: Object[]) => {\n if (!isNetwordDataReady) {\n return;\n }\n\n // 根据版本过滤\n let items = _filterByVersion(OnlineItems);\n _updateKeyValues(items);\n // 处理 Version 信息\n handleVersionInfo();\n console.log('Config 处理完毕');\n isDataReady = true;\n VipAndroidManager.setOfferings(ConfigDataModel.get('vip_android_offerings'));\n ConfigDataModel.emitChange();\n};\n\n// ConfigDataModel 的 Config 是支持后台配置多条同一个 Key 的,按版本区分\nconst ConfigDataModel = {\n init: (defaultValues: ConfigsType) => {\n MyItems = defaultValues;\n\n Notification.addListener(\n 'onLogin',\n ({ isAuto, user, error }: LoginResultDataType) => {\n if (!isAuto && user && !error) {\n isDataReady = false;\n isNetwordDataReady = false;\n ConfigDataModel.fetch();\n }\n }\n );\n\n // 防止 Config 太慢,而 Vip 页面却已经打开导致无商品的问题\n VipAndroidManager.setOfferings(\n ConfigDataModel.get('vip_android_offerings')\n );\n ConfigDataModel.fetch();\n },\n\n fetch: () => {\n // 确保可重入,但如果网络一直出错的话,每次调用都会一直发\n if (isNetwordDataReady) {\n return;\n }\n\n const query = new AV.Query('Configs');\n query.equalTo('valid', true).equalTo(Platform.OS, true);\n query\n .find()\n .then((items: Object[]) => {\n console.log('Config 抓取完毕');\n isNetwordDataReady = true;\n _handleResponse(items);\n })\n .catch((e: any) => {\n console.error(e);\n });\n },\n\n get: (key: string) => {\n return MyItems[key];\n },\n\n emitChange: () => {\n eventEmitter.emit('change');\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return;\n }\n eventEmitter.once('change', callback);\n },\n\n addListener: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return;\n }\n eventEmitter.on('change', callback);\n },\n\n shouldEnableByRate: (enable?: boolean, rate?: number) => {\n if (!enable) {\n return false;\n }\n // rate 不传,默认为全量\n const r = rate ?? 1;\n if (r <= 0) {\n return false;\n }\n // ID 最后一位是 16 进制(0-f),未登录默认为全量\n const lastChar =\n LoginManager.currentUser()?.AVUser?.get('objectId')?.slice(-1) ?? '0';\n return '0123456789abcdef'.indexOf(lastChar.toLowerCase()) < r * 16;\n },\n};\n\nexport { ConfigDataModel };\n"],"mappings":"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"}
@@ -218,9 +218,19 @@ export const VipManager = {
218
218
  return '';
219
219
  }
220
220
  },
221
- vipCountDay: () => {
221
+ vipBuyTime: () => {
222
222
  var _customerInfo5;
223
- const time = (_customerInfo5 = _customerInfo) === null || _customerInfo5 === void 0 || (_customerInfo5 = _customerInfo5.entitlements) === null || _customerInfo5 === void 0 || (_customerInfo5 = _customerInfo5.active) === null || _customerInfo5 === void 0 || (_customerInfo5 = _customerInfo5.vip) === null || _customerInfo5 === void 0 ? void 0 : _customerInfo5.expirationDate;
223
+ const time = (_customerInfo5 = _customerInfo) === null || _customerInfo5 === void 0 || (_customerInfo5 = _customerInfo5.entitlements) === null || _customerInfo5 === void 0 || (_customerInfo5 = _customerInfo5.active) === null || _customerInfo5 === void 0 || (_customerInfo5 = _customerInfo5.vip) === null || _customerInfo5 === void 0 ? void 0 : _customerInfo5.originalPurchaseDate;
224
+ if (VipManager.isVip() && time) {
225
+ const date = new Date(time);
226
+ return Tool.formatDate(date, 'yyyy-MM-dd');
227
+ } else {
228
+ return '';
229
+ }
230
+ },
231
+ vipCountDay: () => {
232
+ var _customerInfo6;
233
+ const time = (_customerInfo6 = _customerInfo) === null || _customerInfo6 === void 0 || (_customerInfo6 = _customerInfo6.entitlements) === null || _customerInfo6 === void 0 || (_customerInfo6 = _customerInfo6.active) === null || _customerInfo6 === void 0 || (_customerInfo6 = _customerInfo6.vip) === null || _customerInfo6 === void 0 ? void 0 : _customerInfo6.expirationDate;
224
234
  if (VipManager.isVip() && time) {
225
235
  const date = new Date(time);
226
236
  const diff = date.getTime() - new Date().getTime();
@@ -242,6 +252,18 @@ export const VipManager = {
242
252
  }
243
253
  return false;
244
254
  },
255
+ isFoundingVip: () => {
256
+ if (!VipManager.isForeverVip()) {
257
+ return false;
258
+ }
259
+ const buyTime = VipManager.vipBuyTime();
260
+ if (!buyTime) {
261
+ return false;
262
+ }
263
+ const foundingEndDate = new Date('2025-03-31');
264
+ const buyDate = new Date(buyTime);
265
+ return buyDate <= foundingEndDate;
266
+ },
245
267
  isVipExpired: () => {
246
268
  var _LoginManager$current2;
247
269
  // 不是会员,但是 vipType 存在,说明曾经领过会员
@@ -250,7 +272,7 @@ export const VipManager = {
250
272
  },
251
273
  refreshVip: async customerInfo => {
252
274
  try {
253
- var _customerInfo6;
275
+ var _customerInfo7;
254
276
  if (!isReady) {
255
277
  console.log('VIP 模块无有效配置信息');
256
278
  return;
@@ -261,7 +283,7 @@ export const VipManager = {
261
283
  } else {
262
284
  _customerInfo = await Purchases.getCustomerInfo();
263
285
  }
264
- console.log('VIP 信息刷新完毕', (_customerInfo6 = _customerInfo) === null || _customerInfo6 === void 0 || (_customerInfo6 = _customerInfo6.entitlements) === null || _customerInfo6 === void 0 ? void 0 : _customerInfo6.active);
286
+ console.log('VIP 信息刷新完毕', (_customerInfo7 = _customerInfo) === null || _customerInfo7 === void 0 || (_customerInfo7 = _customerInfo7.entitlements) === null || _customerInfo7 === void 0 ? void 0 : _customerInfo7.active);
265
287
  console.log('是否是 VIP', VipManager.isVip());
266
288
  console.log('VipInfo 过期时间', VipManager.vipEndTime());
267
289
  await updateVipInfo();
@@ -276,13 +298,13 @@ export const VipManager = {
276
298
  }
277
299
  };
278
300
  const updateVipInfo = async () => {
279
- var _customerInfo7, _LoginManager$current3;
301
+ var _customerInfo8, _LoginManager$current3;
280
302
  if (!VipManager.isVip() || !LoginManager.isLogin()) {
281
303
  return;
282
304
  }
283
305
  const keys = [];
284
306
  const values = [];
285
- const vipType = (_customerInfo7 = _customerInfo) === null || _customerInfo7 === void 0 || (_customerInfo7 = _customerInfo7.entitlements) === null || _customerInfo7 === void 0 || (_customerInfo7 = _customerInfo7.active) === null || _customerInfo7 === void 0 || (_customerInfo7 = _customerInfo7.vip) === null || _customerInfo7 === void 0 ? void 0 : _customerInfo7.productIdentifier;
307
+ const vipType = (_customerInfo8 = _customerInfo) === null || _customerInfo8 === void 0 || (_customerInfo8 = _customerInfo8.entitlements) === null || _customerInfo8 === void 0 || (_customerInfo8 = _customerInfo8.active) === null || _customerInfo8 === void 0 || (_customerInfo8 = _customerInfo8.vip) === null || _customerInfo8 === void 0 ? void 0 : _customerInfo8.productIdentifier;
286
308
  const oldVipType = (_LoginManager$current3 = LoginManager.currentUser()) === null || _LoginManager$current3 === void 0 ? void 0 : _LoginManager$current3.AVUser.get('vipType');
287
309
  if (vipType && vipType !== oldVipType) {
288
310
  keys.push('vipType');
@@ -292,8 +314,8 @@ const updateVipInfo = async () => {
292
314
  if (VipManager.isForeverVip()) {
293
315
  vipEndTime = new Date(10413763200000); // 约定 2300-01-01 00:00:00 为永久会员
294
316
  } else {
295
- var _customerInfo8;
296
- const expireDate = (_customerInfo8 = _customerInfo) === null || _customerInfo8 === void 0 || (_customerInfo8 = _customerInfo8.entitlements) === null || _customerInfo8 === void 0 || (_customerInfo8 = _customerInfo8.active) === null || _customerInfo8 === void 0 || (_customerInfo8 = _customerInfo8.vip) === null || _customerInfo8 === void 0 ? void 0 : _customerInfo8.expirationDate;
317
+ var _customerInfo9;
318
+ const expireDate = (_customerInfo9 = _customerInfo) === null || _customerInfo9 === void 0 || (_customerInfo9 = _customerInfo9.entitlements) === null || _customerInfo9 === void 0 || (_customerInfo9 = _customerInfo9.active) === null || _customerInfo9 === void 0 || (_customerInfo9 = _customerInfo9.vip) === null || _customerInfo9 === void 0 ? void 0 : _customerInfo9.expirationDate;
297
319
  if (expireDate) {
298
320
  vipEndTime = new Date(expireDate);
299
321
  }
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","Purchases","DevConfig","LoginManager","Notification","BuildInPrefs","Tool","ToolkitConfig","VipAndroidManager","_customerInfo","isReady","onLogin","user","logIn","AVUser","get","setAttributes","nickname","VipManager","refreshVip","e","console","error","init","RC_API_KEY","log","RC_PROXY_URL","setProxyURL","configure","apiKey","loginUser","currentUser","addListener","_ref","logOut","purchase","purchasePackage","errorCode","isLogin","OS","customerInfo","entitlements","active","RC_ENTITLEMENT_ID","errorMsg","userCancelled","message","recover","_customerInfo$entitle","restorePurchases","vip","getPackages","offeringId","isForeverVip","__DEV__","offerings","getOfferings","targetOffering","all","current","availablePackages","length","packages","isVip","isTrailVip","filter","item","productItem","product","productCategory","_customerInfo2","_customerInfo3","_isVip2","_isVip","isActive","isSandbox","hasValue","DevVip","getValue","_VipManager$vipEndTim","vipEndTime","vipCountDay","_customerInfo4","time","expirationDate","date","Date","formatDate","_customerInfo5","diff","getTime","Math","max","ceil","_LoginManager$current","vipType","includes","isVipExpired","_LoginManager$current2","_customerInfo6","getCustomerInfo","updateVipInfo","postNotification","_customerInfo7","_LoginManager$current3","keys","values","productIdentifier","oldVipType","push","_customerInfo8","expireDate","_LoginManager$current4","oldVipEndTime","batchUpdateUser"],"sources":["VipManager.ts"],"sourcesContent":["import { Platform } from 'react-native';\nimport Purchases, {\n CustomerInfo,\n PurchasesPackage,\n} from 'react-native-purchases';\nimport { DevConfig } from './DevConfig';\nimport { LoginManager, LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { BuildInPrefs } from './PrefData';\nimport { Tool, ToolkitConfig } from './Tool';\nimport { VipAndroidManager } from './VipAndroidManager';\nimport { UserType } from './constant';\n\nlet _customerInfo: CustomerInfo | null;\nlet isReady = false;\n\nconst onLogin = async (user: UserType) => {\n try {\n await Purchases.logIn(user.AVUser.get('objectId'));\n await Purchases.setAttributes({ nickname: user.nickname });\n await VipManager.refreshVip();\n } catch (e) {\n console.error(e);\n }\n};\n\nexport const VipManager = {\n init: async () => {\n isReady = !!ToolkitConfig.RC_API_KEY;\n\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return;\n }\n\n console.log('Vip 模块初始化');\n\n if (ToolkitConfig.RC_PROXY_URL) {\n console.log('设置代理', ToolkitConfig.RC_PROXY_URL);\n await Purchases.setProxyURL(ToolkitConfig.RC_PROXY_URL);\n }\n Purchases.configure({ apiKey: ToolkitConfig.RC_API_KEY });\n\n VipManager.refreshVip();\n\n const loginUser = LoginManager.currentUser();\n if (loginUser) {\n console.log('Vip 模块用户登录 from 直接');\n onLogin(loginUser);\n }\n\n Notification.addListener(\n 'onLogin',\n async ({ error, user }: LoginResultDataType) => {\n console.log('Vip 模块用户登录 from 监听');\n if (!error && user) {\n onLogin(user);\n }\n }\n );\n\n Notification.addListener('onLogout', () => {\n Purchases.logOut();\n _customerInfo = null;\n });\n },\n\n purchase: async (purchasePackage: PurchasesPackage) => {\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return { errorCode: -99 };\n }\n\n if (!LoginManager.isLogin()) {\n return { errorCode: -1 };\n }\n\n if (!purchasePackage) {\n return { errorCode: -4 };\n }\n\n console.log('购买商品', purchasePackage);\n\n if (Platform.OS === 'android') {\n return await VipAndroidManager.purchase(purchasePackage);\n }\n\n try {\n const { customerInfo } = await Purchases.purchasePackage(purchasePackage);\n\n await VipManager.refreshVip(customerInfo);\n if (\n typeof customerInfo.entitlements.active[\n ToolkitConfig.RC_ENTITLEMENT_ID\n ] !== 'undefined'\n ) {\n console.log('购买成功');\n return { errorCode: 0 };\n } else {\n console.log('购买失败(-5)');\n return { errorCode: -5, errorMsg: '' };\n }\n } catch (e: any) {\n if (!e.userCancelled) {\n console.log('购买失败(-5)', e.message);\n return { errorCode: -5, errorMsg: e.message };\n } else {\n console.log('购买取消(-2)');\n return { errorCode: -2 };\n }\n }\n },\n\n recover: async () => {\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return { errorCode: -99 };\n }\n\n if (!LoginManager.isLogin()) {\n return { errorCode: -1 };\n }\n\n try {\n if (Platform.OS === 'android') {\n return await VipAndroidManager.recover();\n }\n\n console.log('iOS 恢复购买');\n const customerInfo = await Purchases.restorePurchases();\n await VipManager.refreshVip(customerInfo);\n if (customerInfo.entitlements.active?.vip) {\n console.log('恢复成功');\n return { errorCode: 0 };\n } else {\n console.log('恢复失败(-2)');\n return { errorCode: -2 };\n }\n } catch (e: any) {\n console.log('恢复失败(-3)', e.message);\n return { errorCode: -3, errorMsg: e.message };\n }\n },\n\n getPackages: async (offeringId?: string): Promise<PurchasesPackage[]> => {\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return [];\n }\n\n if (VipManager.isForeverVip()) {\n return [];\n }\n\n if (Platform.OS === 'android' || __DEV__) {\n return VipAndroidManager.getPackages(offeringId);\n }\n\n try {\n const offerings = await Purchases.getOfferings();\n let targetOffering;\n if (offeringId) {\n targetOffering = offerings.all[offeringId];\n }\n\n if (!targetOffering) {\n targetOffering = offerings.current;\n }\n\n console.log('获取商品');\n if (\n targetOffering !== null &&\n targetOffering.availablePackages.length !== 0\n ) {\n let packages = targetOffering.availablePackages;\n // 如果是订阅的,非试用的,过滤订阅产品,只展示永久 VIP\n if (VipManager.isVip() && !VipManager.isTrailVip()) {\n packages = packages.filter((item) => {\n const productItem: any = item.product;\n return productItem.productCategory === 'NON_SUBSCRIPTION';\n });\n }\n return packages;\n } else {\n return [];\n }\n } catch (e) {\n console.error('Get Product Fail', e);\n return [];\n }\n },\n\n isVip: () => {\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return false;\n }\n\n let _isVip = _customerInfo?.entitlements?.active?.vip?.isActive;\n if (\n _isVip &&\n !__DEV__ &&\n _customerInfo?.entitlements?.active?.vip.isSandbox\n ) {\n _isVip = false;\n }\n if (__DEV__) {\n if (DevConfig.hasValue(BuildInPrefs.DevVip)) {\n _isVip = DevConfig.getValue(BuildInPrefs.DevVip) ? true : false;\n }\n }\n return _isVip ?? false;\n },\n\n isForeverVip: () => {\n // 苹果的永久会员是非订阅制的,因此 RevenueCat 的 vipEndTime 会空\n return (\n VipManager.isVip() &&\n (VipManager.vipEndTime()?.length === 0 ||\n VipManager.vipCountDay() >= 36500)\n );\n },\n\n vipEndTime: () => {\n const time = _customerInfo?.entitlements?.active?.vip?.expirationDate;\n if (VipManager.isVip() && time) {\n const date = new Date(time);\n return Tool.formatDate(date, 'yyyy-MM-dd');\n } else {\n return '';\n }\n },\n\n vipCountDay: () => {\n const time = _customerInfo?.entitlements?.active?.vip?.expirationDate;\n if (VipManager.isVip() && time) {\n const date = new Date(time);\n const diff = date.getTime() - new Date().getTime();\n return Math.max(Math.ceil(diff / (24 * 60 * 60 * 1000)), 0);\n }\n return 0;\n },\n\n isTrailVip: () => {\n if (VipManager.isForeverVip()) {\n return false;\n }\n if (!VipManager.isVip()) {\n return false;\n }\n const vipType = LoginManager.currentUser()?.AVUser.get('vipType');\n if (vipType?.includes('rc_promo_')) {\n return true;\n }\n return false;\n },\n\n isVipExpired: () => {\n // 不是会员,但是 vipType 存在,说明曾经领过会员\n const vipType = LoginManager.currentUser()?.AVUser.get('vipType');\n return !VipManager.isVip() && vipType;\n },\n\n refreshVip: async (customerInfo?: CustomerInfo) => {\n try {\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return;\n }\n console.log('刷新 VIP');\n if (customerInfo) {\n _customerInfo = customerInfo;\n } else {\n _customerInfo = await Purchases.getCustomerInfo();\n }\n console.log('VIP 信息刷新完毕', _customerInfo?.entitlements?.active);\n console.log('是否是 VIP', VipManager.isVip());\n console.log('VipInfo 过期时间', VipManager.vipEndTime());\n\n await updateVipInfo();\n // 必须确保通知正常发出,因为其他模块依赖这个时机\n Notification.postNotification('onVipRefresh', {});\n } catch (e) {\n console.error(e);\n Notification.postNotification('onVipRefresh', { e });\n }\n },\n};\n\nconst updateVipInfo = async () => {\n if (!VipManager.isVip() || !LoginManager.isLogin()) {\n return;\n }\n\n const keys = [];\n const values = [];\n\n const vipType = _customerInfo?.entitlements?.active?.vip?.productIdentifier;\n const oldVipType = LoginManager.currentUser()?.AVUser.get('vipType');\n if (vipType && vipType !== oldVipType) {\n keys.push('vipType');\n values.push(vipType);\n }\n\n let vipEndTime;\n if (VipManager.isForeverVip()) {\n vipEndTime = new Date(10413763200000); // 约定 2300-01-01 00:00:00 为永久会员\n } else {\n const expireDate = _customerInfo?.entitlements?.active?.vip?.expirationDate;\n if (expireDate) {\n vipEndTime = new Date(expireDate);\n }\n }\n if (vipEndTime) {\n const oldVipEndTime = LoginManager.currentUser()?.AVUser.get('vipEndTime');\n if (vipEndTime.getTime() !== oldVipEndTime?.getTime()) {\n keys.push('vipEndTime');\n values.push(vipEndTime);\n }\n }\n\n if (keys.length > 0) {\n await LoginManager.batchUpdateUser(keys, values);\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["Platform","Purchases","DevConfig","LoginManager","Notification","BuildInPrefs","Tool","ToolkitConfig","VipAndroidManager","_customerInfo","isReady","onLogin","user","logIn","AVUser","get","setAttributes","nickname","VipManager","refreshVip","e","console","error","init","RC_API_KEY","log","RC_PROXY_URL","setProxyURL","configure","apiKey","loginUser","currentUser","addListener","_ref","logOut","purchase","purchasePackage","errorCode","isLogin","OS","customerInfo","entitlements","active","RC_ENTITLEMENT_ID","errorMsg","userCancelled","message","recover","_customerInfo$entitle","restorePurchases","vip","getPackages","offeringId","isForeverVip","__DEV__","offerings","getOfferings","targetOffering","all","current","availablePackages","length","packages","isVip","isTrailVip","filter","item","productItem","product","productCategory","_customerInfo2","_customerInfo3","_isVip2","_isVip","isActive","isSandbox","hasValue","DevVip","getValue","_VipManager$vipEndTim","vipEndTime","vipCountDay","_customerInfo4","time","expirationDate","date","Date","formatDate","vipBuyTime","_customerInfo5","originalPurchaseDate","_customerInfo6","diff","getTime","Math","max","ceil","_LoginManager$current","vipType","includes","isFoundingVip","buyTime","foundingEndDate","buyDate","isVipExpired","_LoginManager$current2","_customerInfo7","getCustomerInfo","updateVipInfo","postNotification","_customerInfo8","_LoginManager$current3","keys","values","productIdentifier","oldVipType","push","_customerInfo9","expireDate","_LoginManager$current4","oldVipEndTime","batchUpdateUser"],"sources":["VipManager.ts"],"sourcesContent":["import { Platform } from 'react-native';\nimport Purchases, {\n CustomerInfo,\n PurchasesPackage,\n} from 'react-native-purchases';\nimport { DevConfig } from './DevConfig';\nimport { LoginManager, LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { BuildInPrefs } from './PrefData';\nimport { Tool, ToolkitConfig } from './Tool';\nimport { VipAndroidManager } from './VipAndroidManager';\nimport { UserType } from './constant';\n\nlet _customerInfo: CustomerInfo | null;\nlet isReady = false;\n\nconst onLogin = async (user: UserType) => {\n try {\n await Purchases.logIn(user.AVUser.get('objectId'));\n await Purchases.setAttributes({ nickname: user.nickname });\n await VipManager.refreshVip();\n } catch (e) {\n console.error(e);\n }\n};\n\nexport const VipManager = {\n init: async () => {\n isReady = !!ToolkitConfig.RC_API_KEY;\n\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return;\n }\n\n console.log('Vip 模块初始化');\n\n if (ToolkitConfig.RC_PROXY_URL) {\n console.log('设置代理', ToolkitConfig.RC_PROXY_URL);\n await Purchases.setProxyURL(ToolkitConfig.RC_PROXY_URL);\n }\n Purchases.configure({ apiKey: ToolkitConfig.RC_API_KEY });\n\n VipManager.refreshVip();\n\n const loginUser = LoginManager.currentUser();\n if (loginUser) {\n console.log('Vip 模块用户登录 from 直接');\n onLogin(loginUser);\n }\n\n Notification.addListener(\n 'onLogin',\n async ({ error, user }: LoginResultDataType) => {\n console.log('Vip 模块用户登录 from 监听');\n if (!error && user) {\n onLogin(user);\n }\n }\n );\n\n Notification.addListener('onLogout', () => {\n Purchases.logOut();\n _customerInfo = null;\n });\n },\n\n purchase: async (purchasePackage: PurchasesPackage) => {\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return { errorCode: -99 };\n }\n\n if (!LoginManager.isLogin()) {\n return { errorCode: -1 };\n }\n\n if (!purchasePackage) {\n return { errorCode: -4 };\n }\n\n console.log('购买商品', purchasePackage);\n\n if (Platform.OS === 'android') {\n return await VipAndroidManager.purchase(purchasePackage);\n }\n\n try {\n const { customerInfo } = await Purchases.purchasePackage(purchasePackage);\n\n await VipManager.refreshVip(customerInfo);\n if (\n typeof customerInfo.entitlements.active[\n ToolkitConfig.RC_ENTITLEMENT_ID\n ] !== 'undefined'\n ) {\n console.log('购买成功');\n return { errorCode: 0 };\n } else {\n console.log('购买失败(-5)');\n return { errorCode: -5, errorMsg: '' };\n }\n } catch (e: any) {\n if (!e.userCancelled) {\n console.log('购买失败(-5)', e.message);\n return { errorCode: -5, errorMsg: e.message };\n } else {\n console.log('购买取消(-2)');\n return { errorCode: -2 };\n }\n }\n },\n\n recover: async () => {\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return { errorCode: -99 };\n }\n\n if (!LoginManager.isLogin()) {\n return { errorCode: -1 };\n }\n\n try {\n if (Platform.OS === 'android') {\n return await VipAndroidManager.recover();\n }\n\n console.log('iOS 恢复购买');\n const customerInfo = await Purchases.restorePurchases();\n await VipManager.refreshVip(customerInfo);\n if (customerInfo.entitlements.active?.vip) {\n console.log('恢复成功');\n return { errorCode: 0 };\n } else {\n console.log('恢复失败(-2)');\n return { errorCode: -2 };\n }\n } catch (e: any) {\n console.log('恢复失败(-3)', e.message);\n return { errorCode: -3, errorMsg: e.message };\n }\n },\n\n getPackages: async (offeringId?: string): Promise<PurchasesPackage[]> => {\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return [];\n }\n\n if (VipManager.isForeverVip()) {\n return [];\n }\n\n if (Platform.OS === 'android' || __DEV__) {\n return VipAndroidManager.getPackages(offeringId);\n }\n\n try {\n const offerings = await Purchases.getOfferings();\n let targetOffering;\n if (offeringId) {\n targetOffering = offerings.all[offeringId];\n }\n\n if (!targetOffering) {\n targetOffering = offerings.current;\n }\n\n console.log('获取商品');\n if (\n targetOffering !== null &&\n targetOffering.availablePackages.length !== 0\n ) {\n let packages = targetOffering.availablePackages;\n // 如果是订阅的,非试用的,过滤订阅产品,只展示永久 VIP\n if (VipManager.isVip() && !VipManager.isTrailVip()) {\n packages = packages.filter((item) => {\n const productItem: any = item.product;\n return productItem.productCategory === 'NON_SUBSCRIPTION';\n });\n }\n return packages;\n } else {\n return [];\n }\n } catch (e) {\n console.error('Get Product Fail', e);\n return [];\n }\n },\n\n isVip: () => {\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return false;\n }\n\n let _isVip = _customerInfo?.entitlements?.active?.vip?.isActive;\n if (\n _isVip &&\n !__DEV__ &&\n _customerInfo?.entitlements?.active?.vip.isSandbox\n ) {\n _isVip = false;\n }\n if (__DEV__) {\n if (DevConfig.hasValue(BuildInPrefs.DevVip)) {\n _isVip = DevConfig.getValue(BuildInPrefs.DevVip) ? true : false;\n }\n }\n return _isVip ?? false;\n },\n\n isForeverVip: () => {\n // 苹果的永久会员是非订阅制的,因此 RevenueCat 的 vipEndTime 会空\n return (\n VipManager.isVip() &&\n (VipManager.vipEndTime()?.length === 0 ||\n VipManager.vipCountDay() >= 36500)\n );\n },\n\n vipEndTime: () => {\n const time = _customerInfo?.entitlements?.active?.vip?.expirationDate;\n if (VipManager.isVip() && time) {\n const date = new Date(time);\n return Tool.formatDate(date, 'yyyy-MM-dd');\n } else {\n return '';\n }\n },\n\n vipBuyTime: () => {\n const time = _customerInfo?.entitlements?.active?.vip?.originalPurchaseDate;\n if (VipManager.isVip() && time) {\n const date = new Date(time);\n return Tool.formatDate(date, 'yyyy-MM-dd');\n } else {\n return '';\n }\n },\n\n vipCountDay: () => {\n const time = _customerInfo?.entitlements?.active?.vip?.expirationDate;\n if (VipManager.isVip() && time) {\n const date = new Date(time);\n const diff = date.getTime() - new Date().getTime();\n return Math.max(Math.ceil(diff / (24 * 60 * 60 * 1000)), 0);\n }\n return 0;\n },\n\n isTrailVip: () => {\n if (VipManager.isForeverVip()) {\n return false;\n }\n if (!VipManager.isVip()) {\n return false;\n }\n const vipType = LoginManager.currentUser()?.AVUser.get('vipType');\n if (vipType?.includes('rc_promo_')) {\n return true;\n }\n return false;\n },\n\n isFoundingVip: () => {\n if (!VipManager.isForeverVip()) {\n return false;\n }\n const buyTime = VipManager.vipBuyTime();\n if (!buyTime) {\n return false;\n }\n const foundingEndDate = new Date('2025-03-31');\n const buyDate = new Date(buyTime);\n return buyDate <= foundingEndDate;\n },\n\n isVipExpired: () => {\n // 不是会员,但是 vipType 存在,说明曾经领过会员\n const vipType = LoginManager.currentUser()?.AVUser.get('vipType');\n return !VipManager.isVip() && vipType;\n },\n\n refreshVip: async (customerInfo?: CustomerInfo) => {\n try {\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return;\n }\n console.log('刷新 VIP');\n if (customerInfo) {\n _customerInfo = customerInfo;\n } else {\n _customerInfo = await Purchases.getCustomerInfo();\n }\n console.log('VIP 信息刷新完毕', _customerInfo?.entitlements?.active);\n console.log('是否是 VIP', VipManager.isVip());\n console.log('VipInfo 过期时间', VipManager.vipEndTime());\n\n await updateVipInfo();\n // 必须确保通知正常发出,因为其他模块依赖这个时机\n Notification.postNotification('onVipRefresh', {});\n } catch (e) {\n console.error(e);\n Notification.postNotification('onVipRefresh', { e });\n }\n },\n};\n\nconst updateVipInfo = async () => {\n if (!VipManager.isVip() || !LoginManager.isLogin()) {\n return;\n }\n\n const keys = [];\n const values = [];\n\n const vipType = _customerInfo?.entitlements?.active?.vip?.productIdentifier;\n const oldVipType = LoginManager.currentUser()?.AVUser.get('vipType');\n if (vipType && vipType !== oldVipType) {\n keys.push('vipType');\n values.push(vipType);\n }\n\n let vipEndTime;\n if (VipManager.isForeverVip()) {\n vipEndTime = new Date(10413763200000); // 约定 2300-01-01 00:00:00 为永久会员\n } else {\n const expireDate = _customerInfo?.entitlements?.active?.vip?.expirationDate;\n if (expireDate) {\n vipEndTime = new Date(expireDate);\n }\n }\n if (vipEndTime) {\n const oldVipEndTime = LoginManager.currentUser()?.AVUser.get('vipEndTime');\n if (vipEndTime.getTime() !== oldVipEndTime?.getTime()) {\n keys.push('vipEndTime');\n values.push(vipEndTime);\n }\n }\n\n if (keys.length > 0) {\n await LoginManager.batchUpdateUser(keys, values);\n }\n};\n"],"mappings":"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"}
@@ -19,8 +19,10 @@ export declare const VipManager: {
19
19
  isVip: () => boolean;
20
20
  isForeverVip: () => boolean;
21
21
  vipEndTime: () => string;
22
+ vipBuyTime: () => string;
22
23
  vipCountDay: () => number;
23
24
  isTrailVip: () => boolean;
25
+ isFoundingVip: () => boolean;
24
26
  isVipExpired: () => any;
25
27
  refreshVip: (customerInfo?: CustomerInfo) => Promise<void>;
26
28
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@norcy/react-native-toolkit",
3
- "version": "0.1.124",
3
+ "version": "0.1.126",
4
4
  "description": "My Toolkit",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -85,6 +85,10 @@ const ConfigDataModel = {
85
85
  }
86
86
  );
87
87
 
88
+ // 防止 Config 太慢,而 Vip 页面却已经打开导致无商品的问题
89
+ VipAndroidManager.setOfferings(
90
+ ConfigDataModel.get('vip_android_offerings')
91
+ );
88
92
  ConfigDataModel.fetch();
89
93
  },
90
94
 
package/src/VipManager.ts CHANGED
@@ -231,6 +231,16 @@ export const VipManager = {
231
231
  }
232
232
  },
233
233
 
234
+ vipBuyTime: () => {
235
+ const time = _customerInfo?.entitlements?.active?.vip?.originalPurchaseDate;
236
+ if (VipManager.isVip() && time) {
237
+ const date = new Date(time);
238
+ return Tool.formatDate(date, 'yyyy-MM-dd');
239
+ } else {
240
+ return '';
241
+ }
242
+ },
243
+
234
244
  vipCountDay: () => {
235
245
  const time = _customerInfo?.entitlements?.active?.vip?.expirationDate;
236
246
  if (VipManager.isVip() && time) {
@@ -255,6 +265,19 @@ export const VipManager = {
255
265
  return false;
256
266
  },
257
267
 
268
+ isFoundingVip: () => {
269
+ if (!VipManager.isForeverVip()) {
270
+ return false;
271
+ }
272
+ const buyTime = VipManager.vipBuyTime();
273
+ if (!buyTime) {
274
+ return false;
275
+ }
276
+ const foundingEndDate = new Date('2025-03-31');
277
+ const buyDate = new Date(buyTime);
278
+ return buyDate <= foundingEndDate;
279
+ },
280
+
258
281
  isVipExpired: () => {
259
282
  // 不是会员,但是 vipType 存在,说明曾经领过会员
260
283
  const vipType = LoginManager.currentUser()?.AVUser.get('vipType');
@@ -1,9 +0,0 @@
1
- {
2
- "editor.formatOnSave": true,
3
- "editor.codeActionsOnSave": {
4
- "source.organizeImports": "explicit"
5
- },
6
- "prettier.tabWidth": 4,
7
- "prettier.jsxBracketSameLine": true,
8
- "editor.tabSize": 2
9
- }