@norcy/react-native-toolkit 0.1.48 → 0.1.50
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 +0 -0
- package/.vscode/settings.json +9 -0
- package/ios/.DS_Store +0 -0
- package/ios/ReactNativeToolkit.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
- package/lib/commonjs/ConfigDataModel.js +31 -11
- package/lib/commonjs/ConfigDataModel.js.map +1 -1
- package/lib/commonjs/MessageModel.js +45 -16
- package/lib/commonjs/MessageModel.js.map +1 -1
- package/lib/commonjs/Tool.js +6 -0
- package/lib/commonjs/Tool.js.map +1 -1
- package/lib/commonjs/VipAndroidManager.js +5 -2
- package/lib/commonjs/VipAndroidManager.js.map +1 -1
- package/lib/commonjs/VipManager.js +8 -7
- package/lib/commonjs/VipManager.js.map +1 -1
- package/lib/module/ConfigDataModel.js +31 -11
- package/lib/module/ConfigDataModel.js.map +1 -1
- package/lib/module/MessageModel.js +45 -16
- package/lib/module/MessageModel.js.map +1 -1
- package/lib/module/Tool.js +6 -0
- package/lib/module/Tool.js.map +1 -1
- package/lib/module/VipAndroidManager.js +5 -2
- package/lib/module/VipAndroidManager.js.map +1 -1
- package/lib/module/VipManager.js +8 -7
- package/lib/module/VipManager.js.map +1 -1
- package/lib/typescript/MessageModel.d.ts +1 -0
- package/lib/typescript/Tool.d.ts +2 -2
- package/lib/typescript/VipAndroidManager.d.ts +2 -1
- package/package.json +1 -1
- package/src/.DS_Store +0 -0
- package/src/ConfigDataModel.ts +34 -12
- package/src/MessageModel.ts +52 -18
- package/src/Tool.ts +4 -0
- package/src/VipAndroidManager.ts +6 -2
- package/src/VipManager.ts +8 -7
package/lib/module/VipManager.js
CHANGED
|
@@ -12,7 +12,7 @@ export const VipManager = {
|
|
|
12
12
|
init: () => {
|
|
13
13
|
isReady = !!ToolkitConfig.RC_API_KEY;
|
|
14
14
|
if (!isReady) {
|
|
15
|
-
console.log('VIP
|
|
15
|
+
console.log('VIP 模块无有效配置信息');
|
|
16
16
|
return;
|
|
17
17
|
}
|
|
18
18
|
console.log('Vip 模块初始化');
|
|
@@ -45,7 +45,7 @@ export const VipManager = {
|
|
|
45
45
|
},
|
|
46
46
|
purchase: async purchasePackage => {
|
|
47
47
|
if (!isReady) {
|
|
48
|
-
console.log('VIP
|
|
48
|
+
console.log('VIP 模块无有效配置信息');
|
|
49
49
|
return {
|
|
50
50
|
errorCode: -99
|
|
51
51
|
};
|
|
@@ -98,7 +98,7 @@ export const VipManager = {
|
|
|
98
98
|
},
|
|
99
99
|
recover: async () => {
|
|
100
100
|
if (!isReady) {
|
|
101
|
-
console.log('VIP
|
|
101
|
+
console.log('VIP 模块无有效配置信息');
|
|
102
102
|
return {
|
|
103
103
|
errorCode: -99
|
|
104
104
|
};
|
|
@@ -137,7 +137,7 @@ export const VipManager = {
|
|
|
137
137
|
},
|
|
138
138
|
getPackages: async () => {
|
|
139
139
|
if (!isReady) {
|
|
140
|
-
console.log('VIP
|
|
140
|
+
console.log('VIP 模块无有效配置信息');
|
|
141
141
|
return [];
|
|
142
142
|
}
|
|
143
143
|
if (VipManager.isForeverVip()) {
|
|
@@ -171,7 +171,7 @@ export const VipManager = {
|
|
|
171
171
|
isVip: () => {
|
|
172
172
|
var _customerInfo2, _customerInfo3, _isVip2;
|
|
173
173
|
if (!isReady) {
|
|
174
|
-
console.log('VIP
|
|
174
|
+
console.log('VIP 模块无有效配置信息');
|
|
175
175
|
return false;
|
|
176
176
|
}
|
|
177
177
|
let _isVip = (_customerInfo2 = _customerInfo) === null || _customerInfo2 === void 0 || (_customerInfo2 = _customerInfo2.entitlements) === null || _customerInfo2 === void 0 || (_customerInfo2 = _customerInfo2.active) === null || _customerInfo2 === void 0 || (_customerInfo2 = _customerInfo2.vip) === null || _customerInfo2 === void 0 ? void 0 : _customerInfo2.isActive;
|
|
@@ -228,7 +228,7 @@ export const VipManager = {
|
|
|
228
228
|
try {
|
|
229
229
|
var _customerInfo6;
|
|
230
230
|
if (!isReady) {
|
|
231
|
-
console.log('VIP
|
|
231
|
+
console.log('VIP 模块无有效配置信息');
|
|
232
232
|
return;
|
|
233
233
|
}
|
|
234
234
|
console.log('刷新 VIP');
|
|
@@ -237,10 +237,11 @@ export const VipManager = {
|
|
|
237
237
|
} else {
|
|
238
238
|
_customerInfo = await Purchases.getCustomerInfo();
|
|
239
239
|
}
|
|
240
|
-
console.log('VIP
|
|
240
|
+
console.log('VIP 信息刷新完毕', (_customerInfo6 = _customerInfo) === null || _customerInfo6 === void 0 || (_customerInfo6 = _customerInfo6.entitlements) === null || _customerInfo6 === void 0 ? void 0 : _customerInfo6.active);
|
|
241
241
|
console.log('是否是 VIP', VipManager.isVip());
|
|
242
242
|
console.log('VipInfo 过期时间', VipManager.vipEndTime());
|
|
243
243
|
await updateVipInfo();
|
|
244
|
+
// 必须确保通知正常发出,因为其他模块依赖这个时机
|
|
244
245
|
Notification.postNotification('onVipRefresh', {});
|
|
245
246
|
} catch (e) {
|
|
246
247
|
console.error(e);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","Purchases","DevConfig","LoginManager","Notification","BuildInPrefs","Tool","ToolkitConfig","VipAndroidManager","_customerInfo","isReady","VipManager","init","RC_API_KEY","console","log","configure","apiKey","refreshVip","addListener","_ref","error","user","logIn","AVUser","get","setAttributes","nickname","e","logOut","purchase","purchasePackage","errorCode","isLogin","OS","customerInfo","entitlements","active","RC_ENTITLEMENT_ID","errorMsg","userCancelled","message","recover","_customerInfo$entitle","restorePurchases","vip","getPackages","isForeverVip","__DEV__","offerings","getOfferings","targetOffering","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","currentUser","includes","_customerInfo6","getCustomerInfo","updateVipInfo","postNotification","_customerInfo7","_LoginManager$current2","keys","values","productIdentifier","oldVipType","push","_customerInfo8","expireDate","_LoginManager$current3","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';\n\nlet _customerInfo: CustomerInfo | null;\nlet isReady = false;\n\nexport const VipManager = {\n init: () => {\n isReady = !!ToolkitConfig.RC_API_KEY;\n\n if (!isReady) {\n console.log('VIP 模块未初始化');\n return;\n }\n\n console.log('Vip 模块初始化');\n\n Purchases.configure({ apiKey: ToolkitConfig.RC_API_KEY });\n\n VipManager.refreshVip();\n\n Notification.addListener(\n 'onLogin',\n async ({ error, user }: LoginResultDataType) => {\n console.log('Vip 模块用户登录');\n if (!error && user) {\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 }\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 (): 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();\n }\n\n try {\n const offerings = await Purchases.getOfferings();\n let targetOffering = offerings.current;\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 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 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","VipManager","init","RC_API_KEY","console","log","configure","apiKey","refreshVip","addListener","_ref","error","user","logIn","AVUser","get","setAttributes","nickname","e","logOut","purchase","purchasePackage","errorCode","isLogin","OS","customerInfo","entitlements","active","RC_ENTITLEMENT_ID","errorMsg","userCancelled","message","recover","_customerInfo$entitle","restorePurchases","vip","getPackages","isForeverVip","__DEV__","offerings","getOfferings","targetOffering","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","currentUser","includes","_customerInfo6","getCustomerInfo","updateVipInfo","postNotification","_customerInfo7","_LoginManager$current2","keys","values","productIdentifier","oldVipType","push","_customerInfo8","expireDate","_LoginManager$current3","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';\n\nlet _customerInfo: CustomerInfo | null;\nlet isReady = false;\n\nexport const VipManager = {\n init: () => {\n isReady = !!ToolkitConfig.RC_API_KEY;\n\n if (!isReady) {\n console.log('VIP 模块无有效配置信息');\n return;\n }\n\n console.log('Vip 模块初始化');\n\n Purchases.configure({ apiKey: ToolkitConfig.RC_API_KEY });\n\n VipManager.refreshVip();\n\n Notification.addListener(\n 'onLogin',\n async ({ error, user }: LoginResultDataType) => {\n console.log('Vip 模块用户登录');\n if (!error && user) {\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 }\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 (): 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();\n }\n\n try {\n const offerings = await Purchases.getOfferings();\n let targetOffering = offerings.current;\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 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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"}
|
package/lib/typescript/Tool.d.ts
CHANGED
|
@@ -46,9 +46,9 @@ export declare const Tool: {
|
|
|
46
46
|
hasAndroidWritePermission: () => Promise<boolean>;
|
|
47
47
|
savePicture: (url: string, albumName?: string) => Promise<{
|
|
48
48
|
errorCode: number;
|
|
49
|
-
errMsg
|
|
49
|
+
errMsg: string;
|
|
50
50
|
} | {
|
|
51
51
|
errorCode: number;
|
|
52
|
-
errMsg
|
|
52
|
+
errMsg?: undefined;
|
|
53
53
|
}>;
|
|
54
54
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { PurchasesPackage } from 'react-native-purchases';
|
|
2
2
|
export declare const VipAndroidManager: {
|
|
3
|
+
setPackages: (packages: PurchasesPackage[]) => void;
|
|
3
4
|
queryOrder: (orderId?: string) => Promise<{
|
|
4
5
|
paid: any;
|
|
5
6
|
e?: undefined;
|
|
@@ -14,7 +15,7 @@ export declare const VipAndroidManager: {
|
|
|
14
15
|
errorCode: number;
|
|
15
16
|
errorMsg: string;
|
|
16
17
|
}>;
|
|
17
|
-
getPackages: () =>
|
|
18
|
+
getPackages: () => PurchasesPackage[];
|
|
18
19
|
purchase: (purchasePackage: PurchasesPackage) => Promise<{
|
|
19
20
|
errorCode: number;
|
|
20
21
|
errorMsg: string | undefined;
|
package/package.json
CHANGED
package/src/.DS_Store
ADDED
|
Binary file
|
package/src/ConfigDataModel.ts
CHANGED
|
@@ -2,7 +2,9 @@ import { Object } from 'leancloud-storage';
|
|
|
2
2
|
import { Platform } from 'react-native';
|
|
3
3
|
import { getReadableVersion } from 'react-native-device-info';
|
|
4
4
|
import { DevConfig } from './DevConfig';
|
|
5
|
+
import { Notification } from './Notification';
|
|
5
6
|
import { BuildInPrefs } from './PrefData';
|
|
7
|
+
import { VipAndroidManager } from './VipAndroidManager';
|
|
6
8
|
import { VipManager } from './VipManager';
|
|
7
9
|
|
|
8
10
|
const EventEmitter = require('events').EventEmitter;
|
|
@@ -11,8 +13,6 @@ const semverGt = require('semver/functions/gt');
|
|
|
11
13
|
const semverGte = require('semver/functions/gte');
|
|
12
14
|
const semverCoerce = require('semver/functions/coerce');
|
|
13
15
|
|
|
14
|
-
let isDataLoaded = false;
|
|
15
|
-
|
|
16
16
|
export interface ConfigsType {
|
|
17
17
|
[key: string]: any;
|
|
18
18
|
}
|
|
@@ -103,26 +103,48 @@ const handleVersionInfo = () => {
|
|
|
103
103
|
}
|
|
104
104
|
};
|
|
105
105
|
|
|
106
|
+
let isDataReady = false;
|
|
107
|
+
let isVipStateReady = false;
|
|
108
|
+
let OnlineItems: Object[] = [];
|
|
109
|
+
|
|
110
|
+
const _handleResponse = () => {
|
|
111
|
+
if (!isVipStateReady || !OnlineItems.length) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// 根据版本过滤
|
|
116
|
+
let items = _filterByVersion(OnlineItems);
|
|
117
|
+
// 根据 VIP 状态过滤
|
|
118
|
+
items = _filterByVip(items);
|
|
119
|
+
_updateKeyValues(items);
|
|
120
|
+
// 处理 Version 信息
|
|
121
|
+
handleVersionInfo();
|
|
122
|
+
console.log('Config 处理完毕');
|
|
123
|
+
isDataReady = true;
|
|
124
|
+
VipAndroidManager.setPackages(ConfigDataModel.get('vip_android_products'));
|
|
125
|
+
ConfigDataModel.emitChange();
|
|
126
|
+
};
|
|
127
|
+
|
|
106
128
|
const ConfigDataModel = {
|
|
107
129
|
init: (defaultValues: ConfigsType) => {
|
|
108
130
|
MyItems = defaultValues;
|
|
131
|
+
// TODO 这里切换登录信息会复用
|
|
132
|
+
Notification.addListenerOnce('onVipRefresh', () => {
|
|
133
|
+
isVipStateReady = true;
|
|
134
|
+
_handleResponse();
|
|
135
|
+
});
|
|
136
|
+
ConfigDataModel.fetch();
|
|
109
137
|
},
|
|
138
|
+
|
|
110
139
|
fetch: () => {
|
|
111
140
|
const query = new AV.Query('Configs');
|
|
112
141
|
query.equalTo('valid', true).equalTo(Platform.OS, true);
|
|
113
142
|
query
|
|
114
143
|
.find()
|
|
115
144
|
.then((items: Object[]) => {
|
|
116
|
-
// 根据版本过滤
|
|
117
|
-
items = _filterByVersion(items);
|
|
118
|
-
// 根据 VIP 状态过滤
|
|
119
|
-
items = _filterByVip(items);
|
|
120
|
-
_updateKeyValues(items);
|
|
121
|
-
// 处理 Version 信息
|
|
122
|
-
handleVersionInfo();
|
|
123
145
|
console.log('Config 抓取完毕');
|
|
124
|
-
|
|
125
|
-
|
|
146
|
+
OnlineItems = items;
|
|
147
|
+
_handleResponse();
|
|
126
148
|
})
|
|
127
149
|
.catch((e: any) => {
|
|
128
150
|
console.error(e);
|
|
@@ -142,7 +164,7 @@ const ConfigDataModel = {
|
|
|
142
164
|
},
|
|
143
165
|
|
|
144
166
|
addListenerOnce: (callback: Function) => {
|
|
145
|
-
if (
|
|
167
|
+
if (isDataReady) {
|
|
146
168
|
callback && callback();
|
|
147
169
|
return;
|
|
148
170
|
}
|
package/src/MessageModel.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { NavigationProp, ParamListBase } from '@react-navigation/native';
|
|
2
|
+
import { Object } from 'leancloud-storage';
|
|
2
3
|
import { Linking, Platform } from 'react-native';
|
|
3
4
|
import { getReadableVersion } from 'react-native-device-info';
|
|
4
5
|
import { ConfigDataModel } from './ConfigDataModel';
|
|
5
6
|
import { FreConfigType, FrequenceManager } from './Frequence';
|
|
6
7
|
import { LoginManager } from './LoginManager';
|
|
8
|
+
import { Notification } from './Notification';
|
|
7
9
|
import { BuildInPrefs, PrefData } from './PrefData';
|
|
8
10
|
import { Tool, ToolkitConfig } from './Tool';
|
|
9
11
|
import { VipManager } from './VipManager';
|
|
@@ -15,8 +17,6 @@ const semverGt = require('semver/functions/gt');
|
|
|
15
17
|
const semverGte = require('semver/functions/gte');
|
|
16
18
|
const semverCoerce = require('semver/functions/coerce');
|
|
17
19
|
|
|
18
|
-
let isDataLoaded = false;
|
|
19
|
-
|
|
20
20
|
export interface Message {
|
|
21
21
|
objectId: string;
|
|
22
22
|
android: boolean;
|
|
@@ -142,7 +142,53 @@ const _handleReadMessages = (items: Message[]): Message[] => {
|
|
|
142
142
|
return items;
|
|
143
143
|
};
|
|
144
144
|
|
|
145
|
+
let isDataReady = false;
|
|
146
|
+
let isVipStateReady = false;
|
|
147
|
+
let isConfigStateReady = false;
|
|
148
|
+
let OnlineItems: Object[] = [];
|
|
149
|
+
|
|
150
|
+
const _handleResponse = () => {
|
|
151
|
+
if (!isVipStateReady || !isConfigStateReady || !OnlineItems.length) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (ConfigDataModel.getVersionConfig()?.isDanger) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
MyMessages = OnlineItems.map((item) => Tool.jsonify(item));
|
|
160
|
+
MyMessages = _filterByVersion(MyMessages);
|
|
161
|
+
MyMessages = _filterByVip(MyMessages);
|
|
162
|
+
MyMessages = _filterByUser(MyMessages);
|
|
163
|
+
MyMessages = _handleReadMessages(MyMessages);
|
|
164
|
+
|
|
165
|
+
// 由于强制插入的未读消息更改了时间,因此需要重新排序
|
|
166
|
+
MyMessages = MyMessages.sort((a: Message, b: Message) => {
|
|
167
|
+
let dateA = new Date(a.updatedAt).getTime();
|
|
168
|
+
let dateB = new Date(b.updatedAt).getTime();
|
|
169
|
+
return dateB - dateA;
|
|
170
|
+
});
|
|
171
|
+
console.log('Message 处理完毕');
|
|
172
|
+
isDataReady = true;
|
|
173
|
+
MessageModel.emitChange();
|
|
174
|
+
};
|
|
175
|
+
|
|
145
176
|
export const MessageModel = {
|
|
177
|
+
init: () => {
|
|
178
|
+
ConfigDataModel.addListenerOnce(() => {
|
|
179
|
+
isConfigStateReady = true;
|
|
180
|
+
_handleResponse();
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
// TODO 这里切换登录信息会复用
|
|
184
|
+
Notification.addListenerOnce('onVipRefresh', () => {
|
|
185
|
+
isVipStateReady = true;
|
|
186
|
+
_handleResponse();
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
MessageModel.fetch();
|
|
190
|
+
},
|
|
191
|
+
|
|
146
192
|
fetch: () => {
|
|
147
193
|
const query = new AV.Query('Message');
|
|
148
194
|
query
|
|
@@ -151,22 +197,10 @@ export const MessageModel = {
|
|
|
151
197
|
.descending('updatedAt');
|
|
152
198
|
query
|
|
153
199
|
.find()
|
|
154
|
-
.then(async (items:
|
|
200
|
+
.then(async (items: Object[]) => {
|
|
155
201
|
console.log('Message 抓取完毕');
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
MyMessages = _filterByVip(MyMessages);
|
|
159
|
-
MyMessages = _filterByUser(MyMessages);
|
|
160
|
-
MyMessages = _handleReadMessages(MyMessages);
|
|
161
|
-
|
|
162
|
-
// 由于强制插入的未读消息更改了时间,因此需要重新排序
|
|
163
|
-
MyMessages = MyMessages.sort((a: Message, b: Message) => {
|
|
164
|
-
let dateA = new Date(a.updatedAt).getTime();
|
|
165
|
-
let dateB = new Date(b.updatedAt).getTime();
|
|
166
|
-
return dateB - dateA;
|
|
167
|
-
});
|
|
168
|
-
isDataLoaded = true;
|
|
169
|
-
MessageModel.emitChange();
|
|
202
|
+
OnlineItems = items;
|
|
203
|
+
_handleResponse();
|
|
170
204
|
})
|
|
171
205
|
.catch((e: any) => {
|
|
172
206
|
console.error(e);
|
|
@@ -224,7 +258,7 @@ export const MessageModel = {
|
|
|
224
258
|
},
|
|
225
259
|
|
|
226
260
|
addListenerOnce: (callback: Function) => {
|
|
227
|
-
if (
|
|
261
|
+
if (isDataReady) {
|
|
228
262
|
callback && callback();
|
|
229
263
|
return;
|
|
230
264
|
}
|
package/src/Tool.ts
CHANGED
|
@@ -234,6 +234,10 @@ export const Tool = {
|
|
|
234
234
|
savePicture: async (url: string, albumName?: string) => {
|
|
235
235
|
console.log('savePicture', url);
|
|
236
236
|
|
|
237
|
+
if (!url) {
|
|
238
|
+
return { errorCode: -5, errMsg: 'url is empty' };
|
|
239
|
+
}
|
|
240
|
+
|
|
237
241
|
// 检查权限
|
|
238
242
|
if (
|
|
239
243
|
Platform.OS === 'android' &&
|
package/src/VipAndroidManager.ts
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import Purchases, { PurchasesPackage } from 'react-native-purchases';
|
|
2
2
|
import * as WeChat from 'react-native-wechat-lib';
|
|
3
|
-
import { ConfigDataModel } from './ConfigDataModel';
|
|
4
3
|
import { LoginManager } from './LoginManager';
|
|
5
4
|
import { Tool, ToolkitConfig } from './Tool';
|
|
5
|
+
let AndroidPackages: PurchasesPackage[] = [];
|
|
6
6
|
|
|
7
7
|
export const VipAndroidManager = {
|
|
8
|
+
setPackages: (packages: PurchasesPackage[]) => {
|
|
9
|
+
AndroidPackages = packages;
|
|
10
|
+
},
|
|
11
|
+
|
|
8
12
|
queryOrder: async (orderId?: string) => {
|
|
9
13
|
const user = LoginManager.currentUser();
|
|
10
14
|
// Step1:生成预订单
|
|
@@ -51,7 +55,7 @@ export const VipAndroidManager = {
|
|
|
51
55
|
},
|
|
52
56
|
|
|
53
57
|
getPackages: () => {
|
|
54
|
-
return
|
|
58
|
+
return AndroidPackages;
|
|
55
59
|
},
|
|
56
60
|
|
|
57
61
|
purchase: async (purchasePackage: PurchasesPackage) => {
|
package/src/VipManager.ts
CHANGED
|
@@ -18,7 +18,7 @@ export const VipManager = {
|
|
|
18
18
|
isReady = !!ToolkitConfig.RC_API_KEY;
|
|
19
19
|
|
|
20
20
|
if (!isReady) {
|
|
21
|
-
console.log('VIP
|
|
21
|
+
console.log('VIP 模块无有效配置信息');
|
|
22
22
|
return;
|
|
23
23
|
}
|
|
24
24
|
|
|
@@ -52,7 +52,7 @@ export const VipManager = {
|
|
|
52
52
|
|
|
53
53
|
purchase: async (purchasePackage: PurchasesPackage) => {
|
|
54
54
|
if (!isReady) {
|
|
55
|
-
console.log('VIP
|
|
55
|
+
console.log('VIP 模块无有效配置信息');
|
|
56
56
|
return { errorCode: -99 };
|
|
57
57
|
}
|
|
58
58
|
|
|
@@ -98,7 +98,7 @@ export const VipManager = {
|
|
|
98
98
|
|
|
99
99
|
recover: async () => {
|
|
100
100
|
if (!isReady) {
|
|
101
|
-
console.log('VIP
|
|
101
|
+
console.log('VIP 模块无有效配置信息');
|
|
102
102
|
return { errorCode: -99 };
|
|
103
103
|
}
|
|
104
104
|
|
|
@@ -129,7 +129,7 @@ export const VipManager = {
|
|
|
129
129
|
|
|
130
130
|
getPackages: async (): Promise<PurchasesPackage[]> => {
|
|
131
131
|
if (!isReady) {
|
|
132
|
-
console.log('VIP
|
|
132
|
+
console.log('VIP 模块无有效配置信息');
|
|
133
133
|
return [];
|
|
134
134
|
}
|
|
135
135
|
|
|
@@ -169,7 +169,7 @@ export const VipManager = {
|
|
|
169
169
|
|
|
170
170
|
isVip: () => {
|
|
171
171
|
if (!isReady) {
|
|
172
|
-
console.log('VIP
|
|
172
|
+
console.log('VIP 模块无有效配置信息');
|
|
173
173
|
return false;
|
|
174
174
|
}
|
|
175
175
|
|
|
@@ -235,7 +235,7 @@ export const VipManager = {
|
|
|
235
235
|
refreshVip: async (customerInfo?: CustomerInfo) => {
|
|
236
236
|
try {
|
|
237
237
|
if (!isReady) {
|
|
238
|
-
console.log('VIP
|
|
238
|
+
console.log('VIP 模块无有效配置信息');
|
|
239
239
|
return;
|
|
240
240
|
}
|
|
241
241
|
console.log('刷新 VIP');
|
|
@@ -244,11 +244,12 @@ export const VipManager = {
|
|
|
244
244
|
} else {
|
|
245
245
|
_customerInfo = await Purchases.getCustomerInfo();
|
|
246
246
|
}
|
|
247
|
-
console.log('VIP
|
|
247
|
+
console.log('VIP 信息刷新完毕', _customerInfo?.entitlements?.active);
|
|
248
248
|
console.log('是否是 VIP', VipManager.isVip());
|
|
249
249
|
console.log('VipInfo 过期时间', VipManager.vipEndTime());
|
|
250
250
|
|
|
251
251
|
await updateVipInfo();
|
|
252
|
+
// 必须确保通知正常发出,因为其他模块依赖这个时机
|
|
252
253
|
Notification.postNotification('onVipRefresh', {});
|
|
253
254
|
} catch (e) {
|
|
254
255
|
console.error(e);
|