@norcy/react-native-toolkit 0.1.16 → 0.1.18

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.
Files changed (66) hide show
  1. package/lib/commonjs/ConfigDataModel.js +122 -0
  2. package/lib/commonjs/ConfigDataModel.js.map +1 -0
  3. package/lib/commonjs/DevConfig.js +9 -5
  4. package/lib/commonjs/DevConfig.js.map +1 -1
  5. package/lib/commonjs/Frequence.js +67 -0
  6. package/lib/commonjs/Frequence.js.map +1 -0
  7. package/lib/commonjs/LoginManager.js +21 -18
  8. package/lib/commonjs/LoginManager.js.map +1 -1
  9. package/lib/commonjs/MessageModel.js +157 -0
  10. package/lib/commonjs/MessageModel.js.map +1 -0
  11. package/lib/commonjs/PrefData.js +10 -0
  12. package/lib/commonjs/PrefData.js.map +1 -1
  13. package/lib/commonjs/SentryManager.js +3 -3
  14. package/lib/commonjs/SentryManager.js.map +1 -1
  15. package/lib/commonjs/Tool.js +52 -0
  16. package/lib/commonjs/Tool.js.map +1 -0
  17. package/lib/commonjs/VipAndroidManager.js +154 -0
  18. package/lib/commonjs/VipAndroidManager.js.map +1 -0
  19. package/lib/commonjs/VipManager.js +280 -0
  20. package/lib/commonjs/VipManager.js.map +1 -0
  21. package/lib/commonjs/index.js +72 -0
  22. package/lib/commonjs/index.js.map +1 -1
  23. package/lib/module/ConfigDataModel.js +117 -0
  24. package/lib/module/ConfigDataModel.js.map +1 -0
  25. package/lib/module/DevConfig.js +5 -1
  26. package/lib/module/DevConfig.js.map +1 -1
  27. package/lib/module/Frequence.js +61 -0
  28. package/lib/module/Frequence.js.map +1 -0
  29. package/lib/module/LoginManager.js +5 -2
  30. package/lib/module/LoginManager.js.map +1 -1
  31. package/lib/module/MessageModel.js +151 -0
  32. package/lib/module/MessageModel.js.map +1 -0
  33. package/lib/module/PrefData.js +10 -0
  34. package/lib/module/PrefData.js.map +1 -1
  35. package/lib/module/SentryManager.js +1 -1
  36. package/lib/module/SentryManager.js.map +1 -1
  37. package/lib/module/Tool.js +46 -0
  38. package/lib/module/Tool.js.map +1 -0
  39. package/lib/module/VipAndroidManager.js +145 -0
  40. package/lib/module/VipAndroidManager.js.map +1 -0
  41. package/lib/module/VipManager.js +273 -0
  42. package/lib/module/VipManager.js.map +1 -0
  43. package/lib/module/index.js +6 -0
  44. package/lib/module/index.js.map +1 -1
  45. package/lib/typescript/ConfigDataModel.d.ts +17 -0
  46. package/lib/typescript/DevConfig.d.ts +1 -1
  47. package/lib/typescript/Frequence.d.ts +10 -0
  48. package/lib/typescript/LoginManager.d.ts +2 -3
  49. package/lib/typescript/MessageModel.d.ts +26 -0
  50. package/lib/typescript/Tool.d.ts +7 -0
  51. package/lib/typescript/VipAndroidManager.d.ts +28 -0
  52. package/lib/typescript/VipManager.d.ts +29 -0
  53. package/lib/typescript/index.d.ts +6 -0
  54. package/package.json +5 -3
  55. package/src/ConfigDataModel.ts +146 -0
  56. package/src/DevConfig.ts +4 -1
  57. package/src/Frequence.ts +70 -0
  58. package/src/LoginManager.ts +6 -9
  59. package/src/MessageModel.ts +191 -0
  60. package/src/PrefData.ts +10 -0
  61. package/src/SentryManager.ts +2 -1
  62. package/src/Tool.ts +64 -0
  63. package/src/VipAndroidManager.ts +110 -0
  64. package/src/VipManager.ts +282 -0
  65. package/src/index.tsx +6 -0
  66. package/ios/ReactNativeToolkit.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -4
@@ -0,0 +1,145 @@
1
+ import Purchases from 'react-native-purchases';
2
+ import * as WeChat from 'react-native-wechat-lib';
3
+ import { ConfigDataModel } from './ConfigDataModel';
4
+ import { LoginManager } from './LoginManager';
5
+ import { Tool } from './Tool';
6
+ let SERVER_URL = '';
7
+ export const VipAndroidManager = {
8
+ init: _ref => {
9
+ let {
10
+ WeChatPayServer
11
+ } = _ref;
12
+ SERVER_URL = WeChatPayServer;
13
+ },
14
+ queryOrder: async orderId => {
15
+ const user = LoginManager.currentUser();
16
+ // Step1:生成预订单
17
+ try {
18
+ const rawResponse = await fetch(SERVER_URL, {
19
+ method: 'POST',
20
+ headers: {
21
+ 'Accept': 'application/json',
22
+ 'Content-Type': 'application/json'
23
+ },
24
+ body: JSON.stringify({
25
+ user: user === null || user === void 0 ? void 0 : user.AVUser.get('objectId'),
26
+ order: orderId,
27
+ cmd: 'check'
28
+ })
29
+ });
30
+ const res = await rawResponse.json();
31
+ // console.log(res);
32
+ if (rawResponse.status === 200 && !res.error) {
33
+ return {
34
+ paid: res.paid
35
+ };
36
+ } else {
37
+ return {
38
+ paid: false,
39
+ e: res.error
40
+ };
41
+ }
42
+ } catch (e) {
43
+ return {
44
+ paid: false,
45
+ e: e
46
+ };
47
+ }
48
+ },
49
+ recover: async () => {
50
+ const {
51
+ paid,
52
+ e
53
+ } = await VipAndroidManager.queryOrder();
54
+ if (paid && !e) {
55
+ await Purchases.invalidateCustomerInfoCache();
56
+ console.log('恢复成功');
57
+ return {
58
+ errorCode: 0
59
+ };
60
+ } else {
61
+ if (e) {
62
+ console.log('恢复失败(-3)', JSON.stringify(e));
63
+ return {
64
+ errorCode: -3,
65
+ errorMsg: JSON.stringify(e)
66
+ };
67
+ } else {
68
+ console.log('恢复失败(-2)');
69
+ return {
70
+ errorCode: -2
71
+ };
72
+ }
73
+ }
74
+ },
75
+ getPackages: () => {
76
+ return ConfigDataModel.get('vip_android_products');
77
+ },
78
+ purchase: async purchasePackage => {
79
+ try {
80
+ var _purchasePackage$prod;
81
+ const user = LoginManager.currentUser();
82
+ // Step1:生成预订单
83
+ const rawResponse = await fetch(SERVER_URL, {
84
+ method: 'POST',
85
+ headers: {
86
+ 'Accept': 'application/json',
87
+ 'Content-Type': 'application/json'
88
+ },
89
+ body: JSON.stringify({
90
+ user: user === null || user === void 0 ? void 0 : user.AVUser.get('objectId'),
91
+ product: (_purchasePackage$prod = purchasePackage.product) === null || _purchasePackage$prod === void 0 ? void 0 : _purchasePackage$prod.identifier,
92
+ cmd: 'prepare'
93
+ })
94
+ });
95
+ const res = await rawResponse.json();
96
+ // console.log(res);
97
+ if (rawResponse.status === 200 && !res.error) {
98
+ // Step2:调用微信支付 SDK
99
+ const {
100
+ errCode,
101
+ errStr
102
+ } = await WeChat.pay(res.payload);
103
+ if (errCode) {
104
+ console.log('购买失败(-5)', errStr);
105
+ return {
106
+ errorCode: -5,
107
+ errorMsg: errStr
108
+ };
109
+ }
110
+ // 虽然没什么问题,但保险起见还是延时下,让后台先更新
111
+ await Tool.sleep(4000);
112
+ // Step3:查询后台
113
+ const {
114
+ paid,
115
+ e
116
+ } = await VipAndroidManager.queryOrder(res.payload.order);
117
+ if (paid && !e) {
118
+ await Purchases.invalidateCustomerInfoCache();
119
+ return {
120
+ errorCode: 0
121
+ };
122
+ } else {
123
+ console.log('购买失败(-5)', JSON.stringify(e));
124
+ return {
125
+ errorCode: -5,
126
+ errorMsg: JSON.stringify(e)
127
+ };
128
+ }
129
+ } else {
130
+ console.log('购买失败(-5)', JSON.stringify(res === null || res === void 0 ? void 0 : res.error));
131
+ return {
132
+ errorCode: -5,
133
+ errorMsg: JSON.stringify(res === null || res === void 0 ? void 0 : res.error)
134
+ };
135
+ }
136
+ } catch (e) {
137
+ console.log('购买失败(-5)', JSON.stringify(e));
138
+ return {
139
+ errorCode: -5,
140
+ errorMsg: JSON.stringify(e)
141
+ };
142
+ }
143
+ }
144
+ };
145
+ //# sourceMappingURL=VipAndroidManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Purchases","WeChat","ConfigDataModel","LoginManager","Tool","SERVER_URL","VipAndroidManager","init","_ref","WeChatPayServer","queryOrder","orderId","user","currentUser","rawResponse","fetch","method","headers","body","JSON","stringify","AVUser","get","order","cmd","res","json","status","error","paid","e","recover","invalidateCustomerInfoCache","console","log","errorCode","errorMsg","getPackages","purchase","purchasePackage","_purchasePackage$prod","product","identifier","errCode","errStr","pay","payload","sleep"],"sources":["VipAndroidManager.ts"],"sourcesContent":["import Purchases, { PurchasesPackage } from 'react-native-purchases';\nimport * as WeChat from 'react-native-wechat-lib';\nimport { ConfigDataModel } from './ConfigDataModel';\nimport { LoginManager } from './LoginManager';\nimport { Tool } from './Tool';\n\nlet SERVER_URL = '';\n\nexport const VipAndroidManager = {\n init: ({ WeChatPayServer }: { WeChatPayServer: string }) => {\n SERVER_URL = WeChatPayServer;\n },\n\n queryOrder: async (orderId?: string) => {\n const user = LoginManager.currentUser();\n // Step1:生成预订单\n try {\n const rawResponse = await fetch(SERVER_URL, {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n user: user?.AVUser.get('objectId'),\n order: orderId,\n cmd: 'check',\n }),\n });\n const res = await rawResponse.json();\n // console.log(res);\n if (rawResponse.status === 200 && !res.error) {\n return { paid: res.paid };\n } else {\n return { paid: false, e: res.error };\n }\n } catch (e) {\n return { paid: false, e: e };\n }\n },\n\n recover: async () => {\n const { paid, e } = await VipAndroidManager.queryOrder();\n if (paid && !e) {\n await Purchases.invalidateCustomerInfoCache();\n console.log('恢复成功');\n return { errorCode: 0 };\n } else {\n if (e) {\n console.log('恢复失败(-3)', JSON.stringify(e));\n return { errorCode: -3, errorMsg: JSON.stringify(e) };\n } else {\n console.log('恢复失败(-2)');\n return { errorCode: -2 };\n }\n }\n },\n\n getPackages: () => {\n return ConfigDataModel.get('vip_android_products');\n },\n\n purchase: async (purchasePackage: PurchasesPackage) => {\n try {\n const user = LoginManager.currentUser();\n // Step1:生成预订单\n const rawResponse = await fetch(SERVER_URL, {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n user: user?.AVUser.get('objectId'),\n product: purchasePackage.product?.identifier,\n cmd: 'prepare',\n }),\n });\n const res = await rawResponse.json();\n // console.log(res);\n if (rawResponse.status === 200 && !res.error) {\n // Step2:调用微信支付 SDK\n const { errCode, errStr } = await WeChat.pay(res.payload);\n if (errCode) {\n console.log('购买失败(-5)', errStr);\n return { errorCode: -5, errorMsg: errStr };\n }\n // 虽然没什么问题,但保险起见还是延时下,让后台先更新\n await Tool.sleep(4000);\n // Step3:查询后台\n const { paid, e } = await VipAndroidManager.queryOrder(\n res.payload.order\n );\n if (paid && !e) {\n await Purchases.invalidateCustomerInfoCache();\n return { errorCode: 0 };\n } else {\n console.log('购买失败(-5)', JSON.stringify(e));\n return { errorCode: -5, errorMsg: JSON.stringify(e) };\n }\n } else {\n console.log('购买失败(-5)', JSON.stringify(res?.error));\n return { errorCode: -5, errorMsg: JSON.stringify(res?.error) };\n }\n } catch (e) {\n console.log('购买失败(-5)', JSON.stringify(e));\n return { errorCode: -5, errorMsg: JSON.stringify(e) };\n }\n },\n};\n"],"mappings":"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"}
@@ -0,0 +1,273 @@
1
+ import { Platform } from 'react-native';
2
+ import Purchases from 'react-native-purchases';
3
+ import { DevConfig } from './DevConfig';
4
+ import { LoginManager } from './LoginManager';
5
+ import { Notification } from './Notification';
6
+ import { BuildInPrefs } from './PrefData';
7
+ import { Tool } from './Tool';
8
+ import { VipAndroidManager } from './VipAndroidManager';
9
+ let _customerInfo;
10
+ let _RC_ENTITLEMENT_ID = '';
11
+ export const VipManager = {
12
+ init: _ref => {
13
+ let {
14
+ RC_API_KEY,
15
+ RC_ENTITLEMENT_ID,
16
+ WeChatPayServer
17
+ } = _ref;
18
+ console.log('Vip 模块初始化');
19
+ VipAndroidManager.init({
20
+ WeChatPayServer
21
+ });
22
+ _RC_ENTITLEMENT_ID = RC_ENTITLEMENT_ID;
23
+ Purchases.configure({
24
+ apiKey: RC_API_KEY
25
+ });
26
+ VipManager.refreshVip();
27
+ Notification.addListener('onLogin', async _ref2 => {
28
+ let {
29
+ error,
30
+ user
31
+ } = _ref2;
32
+ console.log('Vip 模块用户登录');
33
+ if (!error && user) {
34
+ try {
35
+ await Purchases.logIn(user.AVUser.get('objectId'));
36
+ await Purchases.setAttributes({
37
+ nickname: user.nickname
38
+ });
39
+ await VipManager.refreshVip();
40
+ } catch (e) {
41
+ console.error(e);
42
+ }
43
+ }
44
+ });
45
+ Notification.addListener('onLogout', () => {
46
+ Purchases.logOut();
47
+ _customerInfo = null;
48
+ });
49
+ },
50
+ purchase: async purchasePackage => {
51
+ if (!LoginManager.isLogin()) {
52
+ return {
53
+ errorCode: -1
54
+ };
55
+ }
56
+ if (!purchasePackage) {
57
+ return {
58
+ errorCode: -4
59
+ };
60
+ }
61
+ console.log('购买商品', purchasePackage);
62
+ if (Platform.OS === 'android') {
63
+ return await VipAndroidManager.purchase(purchasePackage);
64
+ }
65
+ try {
66
+ const {
67
+ customerInfo
68
+ } = await Purchases.purchasePackage(purchasePackage);
69
+ await VipManager.refreshVip(customerInfo);
70
+ if (typeof customerInfo.entitlements.active[_RC_ENTITLEMENT_ID] !== 'undefined') {
71
+ console.log('购买成功');
72
+ return {
73
+ errorCode: 0
74
+ };
75
+ } else {
76
+ console.log('购买失败(-5)');
77
+ return {
78
+ errorCode: -5,
79
+ errorMsg: ''
80
+ };
81
+ }
82
+ } catch (e) {
83
+ if (!e.userCancelled) {
84
+ console.log('购买失败(-5)', e.message);
85
+ return {
86
+ errorCode: -5,
87
+ errorMsg: e.message
88
+ };
89
+ } else {
90
+ console.log('购买取消(-2)');
91
+ return {
92
+ errorCode: -2
93
+ };
94
+ }
95
+ }
96
+ },
97
+ recover: async () => {
98
+ if (!LoginManager.isLogin()) {
99
+ return {
100
+ errorCode: -1
101
+ };
102
+ }
103
+ try {
104
+ var _customerInfo$entitle;
105
+ if (Platform.OS === 'android') {
106
+ return await VipAndroidManager.recover();
107
+ }
108
+ console.log('iOS 恢复购买');
109
+ const customerInfo = await Purchases.restorePurchases();
110
+ await VipManager.refreshVip(customerInfo);
111
+ if ((_customerInfo$entitle = customerInfo.entitlements.active) !== null && _customerInfo$entitle !== void 0 && _customerInfo$entitle.vip) {
112
+ console.log('恢复成功');
113
+ return {
114
+ errorCode: 0
115
+ };
116
+ } else {
117
+ console.log('恢复失败(-2)');
118
+ return {
119
+ errorCode: -2
120
+ };
121
+ }
122
+ } catch (e) {
123
+ console.log('恢复失败(-3)', e.message);
124
+ return {
125
+ errorCode: -3,
126
+ errorMsg: e.message
127
+ };
128
+ }
129
+ },
130
+ getPackages: async () => {
131
+ if (VipManager.isForeverVip()) {
132
+ return [];
133
+ }
134
+ if (Platform.OS === 'android' || __DEV__) {
135
+ return VipAndroidManager.getPackages();
136
+ }
137
+ try {
138
+ const offerings = await Purchases.getOfferings();
139
+ let targetOffering = offerings.current;
140
+ if (__DEV__) {
141
+ targetOffering = offerings.all.NormalVip;
142
+ }
143
+ console.log('获取商品');
144
+ if (targetOffering !== null && targetOffering.availablePackages.length !== 0) {
145
+ let packages = targetOffering.availablePackages;
146
+ // 如果是订阅的,非试用的,展示永久 VIP
147
+ if (VipManager.isVip() && !VipManager.isTrailVip()) {
148
+ packages = packages.filter(item => {
149
+ return item;
150
+ // TODO
151
+ // return item.product.productCategory === 'NON_SUBSCRIPTION';
152
+ });
153
+ }
154
+
155
+ return packages;
156
+ } else {
157
+ return [];
158
+ }
159
+ } catch (e) {
160
+ console.error('Get Product Fail', e);
161
+ return [];
162
+ }
163
+ },
164
+ isVip: () => {
165
+ var _customerInfo2, _customerInfo3;
166
+ 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;
167
+ if (_isVip && !__DEV__ && (_customerInfo3 = _customerInfo) !== null && _customerInfo3 !== void 0 && (_customerInfo3 = _customerInfo3.entitlements) !== null && _customerInfo3 !== void 0 && (_customerInfo3 = _customerInfo3.active) !== null && _customerInfo3 !== void 0 && _customerInfo3.vip.isSandbox) {
168
+ _isVip = false;
169
+ }
170
+ if (__DEV__) {
171
+ if (DevConfig.hasValue(BuildInPrefs.DevVip)) {
172
+ _isVip = DevConfig.getValue(BuildInPrefs.DevVip);
173
+ }
174
+ }
175
+ return _isVip;
176
+ },
177
+ isForeverVip: () => {
178
+ var _VipManager$vipEndTim;
179
+ // 苹果的永久会员是非订阅制的,因此 RevenueCat 的 vipEndTime 会空
180
+ return VipManager.isVip() && (((_VipManager$vipEndTim = VipManager.vipEndTime()) === null || _VipManager$vipEndTim === void 0 ? void 0 : _VipManager$vipEndTim.length) === 0 || VipManager.vipCountDay() >= 36500);
181
+ },
182
+ vipEndTime: () => {
183
+ var _customerInfo4;
184
+ const time = (_customerInfo4 = _customerInfo) === null || _customerInfo4 === void 0 || (_customerInfo4 = _customerInfo4.entitlements) === null || _customerInfo4 === void 0 || (_customerInfo4 = _customerInfo4.active) === null || _customerInfo4 === void 0 || (_customerInfo4 = _customerInfo4.vip) === null || _customerInfo4 === void 0 ? void 0 : _customerInfo4.expirationDate;
185
+ if (VipManager.isVip() && time) {
186
+ const date = new Date(time);
187
+ return Tool.formatDate(date, 'yyyy-MM-dd');
188
+ } else {
189
+ return '';
190
+ }
191
+ },
192
+ vipCountDay: () => {
193
+ var _customerInfo5;
194
+ 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;
195
+ if (VipManager.isVip() && time) {
196
+ const date = new Date(time);
197
+ const diff = date.getTime() - new Date().getTime();
198
+ return Math.max(Math.ceil(diff / (24 * 60 * 60 * 1000)), 0);
199
+ }
200
+ return 0;
201
+ },
202
+ isTrailVip: () => {
203
+ var _LoginManager$current;
204
+ if (VipManager.isForeverVip()) {
205
+ return false;
206
+ }
207
+ if (!VipManager.isVip()) {
208
+ return false;
209
+ }
210
+ const vipType = (_LoginManager$current = LoginManager.currentUser()) === null || _LoginManager$current === void 0 ? void 0 : _LoginManager$current.AVUser.get('vipType');
211
+ if (vipType !== null && vipType !== void 0 && vipType.includes('rc_promo_')) {
212
+ return true;
213
+ }
214
+ return false;
215
+ },
216
+ refreshVip: async customerInfo => {
217
+ try {
218
+ var _customerInfo6;
219
+ console.log('刷新 VIP');
220
+ if (customerInfo) {
221
+ _customerInfo = customerInfo;
222
+ } else {
223
+ _customerInfo = await Purchases.getCustomerInfo();
224
+ }
225
+ console.log('VIP 信息', (_customerInfo6 = _customerInfo) === null || _customerInfo6 === void 0 || (_customerInfo6 = _customerInfo6.entitlements) === null || _customerInfo6 === void 0 ? void 0 : _customerInfo6.active);
226
+ console.log('是否是 VIP', VipManager.isVip());
227
+ console.log('VipInfo 过期时间', VipManager.vipEndTime());
228
+ await updateVipInfo();
229
+ Notification.postNotification('onVipRefresh', {});
230
+ } catch (e) {
231
+ console.error(e);
232
+ Notification.postNotification('onVipRefresh', {
233
+ e
234
+ });
235
+ }
236
+ }
237
+ };
238
+ const updateVipInfo = async () => {
239
+ var _customerInfo7, _LoginManager$current2;
240
+ if (!VipManager.isVip() || !LoginManager.isLogin()) {
241
+ return;
242
+ }
243
+ const keys = [];
244
+ const values = [];
245
+ 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;
246
+ const oldVipType = (_LoginManager$current2 = LoginManager.currentUser()) === null || _LoginManager$current2 === void 0 ? void 0 : _LoginManager$current2.AVUser.get('vipType');
247
+ if (vipType && vipType !== oldVipType) {
248
+ keys.push('vipType');
249
+ values.push(vipType);
250
+ }
251
+ let vipEndTime;
252
+ if (VipManager.isForeverVip()) {
253
+ vipEndTime = new Date(10413763200000); // 约定 2300-01-01 00:00:00 为永久会员
254
+ } else {
255
+ var _customerInfo8;
256
+ 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;
257
+ if (expireDate) {
258
+ vipEndTime = new Date(expireDate);
259
+ }
260
+ }
261
+ if (vipEndTime) {
262
+ var _LoginManager$current3;
263
+ const oldVipEndTime = (_LoginManager$current3 = LoginManager.currentUser()) === null || _LoginManager$current3 === void 0 ? void 0 : _LoginManager$current3.AVUser.get('vipEndTime');
264
+ if (vipEndTime.getTime() !== (oldVipEndTime === null || oldVipEndTime === void 0 ? void 0 : oldVipEndTime.getTime())) {
265
+ keys.push('vipEndTime');
266
+ values.push(vipEndTime);
267
+ }
268
+ }
269
+ if (keys.length > 0) {
270
+ await LoginManager.batchUpdateUser(keys, values);
271
+ }
272
+ };
273
+ //# sourceMappingURL=VipManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","Purchases","DevConfig","LoginManager","Notification","BuildInPrefs","Tool","VipAndroidManager","_customerInfo","_RC_ENTITLEMENT_ID","VipManager","init","_ref","RC_API_KEY","RC_ENTITLEMENT_ID","WeChatPayServer","console","log","configure","apiKey","refreshVip","addListener","_ref2","error","user","logIn","AVUser","get","setAttributes","nickname","e","logOut","purchase","purchasePackage","isLogin","errorCode","OS","customerInfo","entitlements","active","errorMsg","userCancelled","message","recover","_customerInfo$entitle","restorePurchases","vip","getPackages","isForeverVip","__DEV__","offerings","getOfferings","targetOffering","current","all","NormalVip","availablePackages","length","packages","isVip","isTrailVip","filter","item","_customerInfo2","_customerInfo3","_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 } from './LoginManager';\nimport { Notification } from './Notification';\nimport { BuildInPrefs } from './PrefData';\nimport { Tool } from './Tool';\nimport { VipAndroidManager } from './VipAndroidManager';\nimport { UserType } from './constant';\n\nlet _customerInfo: CustomerInfo | null;\nlet _RC_ENTITLEMENT_ID: string = '';\n\nexport const VipManager = {\n init: ({\n RC_API_KEY,\n RC_ENTITLEMENT_ID,\n WeChatPayServer,\n }: {\n RC_API_KEY: string;\n RC_ENTITLEMENT_ID: string;\n WeChatPayServer: string;\n }) => {\n console.log('Vip 模块初始化');\n\n VipAndroidManager.init({ WeChatPayServer });\n\n _RC_ENTITLEMENT_ID = RC_ENTITLEMENT_ID;\n\n Purchases.configure({\n apiKey: RC_API_KEY,\n });\n\n VipManager.refreshVip();\n\n Notification.addListener(\n 'onLogin',\n async ({ error, user }: { error: any; user: UserType }) => {\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 (!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[_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 (!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 (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 if (__DEV__) {\n targetOffering = offerings.all.NormalVip;\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 return item;\n // TODO\n // return item.product.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 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);\n }\n }\n return _isVip;\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 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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"}
@@ -4,13 +4,19 @@ const {
4
4
  } = NativeModules;
5
5
  export default ReactNativeToolkit;
6
6
  export * from './AppleLoginUtil';
7
+ export * from './ConfigDataModel';
7
8
  export * from './DevConfig';
9
+ export * from './Frequence';
8
10
  export * from './LoginManager';
11
+ export * from './MessageModel';
9
12
  export * from './Notification';
10
13
  export * from './PrefData';
11
14
  export * from './ReportUtil';
12
15
  export * from './SentryManager';
13
16
  export * from './SyncPrefData';
17
+ export * from './Tool';
18
+ export * from './VipAndroidManager';
19
+ export * from './VipManager';
14
20
  export * from './WeChatLoginUtil';
15
21
  export * from './constant';
16
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","ReactNativeToolkit"],"sources":["index.tsx"],"sourcesContent":["import { NativeModules } from 'react-native';\n\ntype ReactNativeToolkitType = {\n multiply(a: number, b: number): Promise<number>;\n};\n\nconst { ReactNativeToolkit } = NativeModules;\n\nexport default ReactNativeToolkit as ReactNativeToolkitType;\nexport * from './AppleLoginUtil';\nexport * from './DevConfig';\nexport * from './LoginManager';\nexport * from './Notification';\nexport * from './PrefData';\nexport * from './ReportUtil';\nexport * from './SentryManager';\nexport * from './SyncPrefData';\nexport * from './WeChatLoginUtil';\nexport * from './constant';\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,cAAc;AAM5C,MAAM;EAAEC;AAAmB,CAAC,GAAGD,aAAa;AAE5C,eAAeC,kBAAkB;AACjC,cAAc,kBAAkB;AAChC,cAAc,aAAa;AAC3B,cAAc,gBAAgB;AAC9B,cAAc,gBAAgB;AAC9B,cAAc,YAAY;AAC1B,cAAc,cAAc;AAC5B,cAAc,iBAAiB;AAC/B,cAAc,gBAAgB;AAC9B,cAAc,mBAAmB;AACjC,cAAc,YAAY"}
1
+ {"version":3,"names":["NativeModules","ReactNativeToolkit"],"sources":["index.tsx"],"sourcesContent":["import { NativeModules } from 'react-native';\n\ntype ReactNativeToolkitType = {\n multiply(a: number, b: number): Promise<number>;\n};\n\nconst { ReactNativeToolkit } = NativeModules;\n\nexport default ReactNativeToolkit as ReactNativeToolkitType;\nexport * from './AppleLoginUtil';\nexport * from './ConfigDataModel';\nexport * from './DevConfig';\nexport * from './Frequence';\nexport * from './LoginManager';\nexport * from './MessageModel';\nexport * from './Notification';\nexport * from './PrefData';\nexport * from './ReportUtil';\nexport * from './SentryManager';\nexport * from './SyncPrefData';\nexport * from './Tool';\nexport * from './VipAndroidManager';\nexport * from './VipManager';\nexport * from './WeChatLoginUtil';\nexport * from './constant';\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,cAAc;AAM5C,MAAM;EAAEC;AAAmB,CAAC,GAAGD,aAAa;AAE5C,eAAeC,kBAAkB;AACjC,cAAc,kBAAkB;AAChC,cAAc,mBAAmB;AACjC,cAAc,aAAa;AAC3B,cAAc,aAAa;AAC3B,cAAc,gBAAgB;AAC9B,cAAc,gBAAgB;AAC9B,cAAc,gBAAgB;AAC9B,cAAc,YAAY;AAC1B,cAAc,cAAc;AAC5B,cAAc,iBAAiB;AAC/B,cAAc,gBAAgB;AAC9B,cAAc,QAAQ;AACtB,cAAc,qBAAqB;AACnC,cAAc,cAAc;AAC5B,cAAc,mBAAmB;AACjC,cAAc,YAAY"}
@@ -0,0 +1,17 @@
1
+ export interface ConfigsType {
2
+ [key: string]: any;
3
+ }
4
+ declare const ConfigDataModel: {
5
+ init: (defaultValues: ConfigsType) => void;
6
+ fetch: () => void;
7
+ getVersionConfig: () => {
8
+ currentVersion: any;
9
+ latestVersion: any;
10
+ isDanger: boolean;
11
+ hasNewVersion: boolean;
12
+ };
13
+ get: (key: string) => any;
14
+ emitChange: () => void;
15
+ addListenerOnce: (callback: Function) => void;
16
+ };
17
+ export { ConfigDataModel };
@@ -1,4 +1,4 @@
1
- import { PrefType } from '@norcy/react-native-toolkit';
1
+ import { PrefType } from './PrefData';
2
2
  export interface DevConfigType {
3
3
  label: string;
4
4
  value: number;
@@ -0,0 +1,10 @@
1
+ export interface FreConfigType {
2
+ key: string;
3
+ limit?: number;
4
+ gap?: number;
5
+ }
6
+ export declare const FrequenceManager: {
7
+ canRun: (config: FreConfigType) => boolean;
8
+ markFinishForCount: (config: FreConfigType) => void;
9
+ markFinishForTime: (configKey: string) => void;
10
+ };
@@ -1,5 +1,4 @@
1
- import { LoginType } from '@norcy/react-native-toolkit';
2
- import { LoginAuthDataType, UserType } from './constant';
1
+ import { LoginAuthDataType, LoginType, UserType } from './constant';
3
2
  export declare const LoginManager: {
4
3
  setup: (WeChatId: string, WeChatSecret: string) => void;
5
4
  autoLogin: () => Promise<void>;
@@ -8,7 +7,7 @@ export declare const LoginManager: {
8
7
  isLogin: () => boolean;
9
8
  isVisitor: () => boolean;
10
9
  currentUser: () => UserType | null;
11
- batchUpdateUser: (keys: string[], values: string[], callback?: Function) => Promise<void>;
10
+ batchUpdateUser: (keys: string[], values: (string | Date)[], callback?: Function) => Promise<void>;
12
11
  updateUser: (key: string, value: string, callback?: Function) => void;
13
12
  deleteUser: (callback: Function) => Promise<void>;
14
13
  lastLoginType: () => any;
@@ -0,0 +1,26 @@
1
+ interface Message {
2
+ objectId: string;
3
+ android: boolean;
4
+ ios: boolean;
5
+ title?: string;
6
+ content?: string;
7
+ maxVer?: string;
8
+ minVer?: string;
9
+ key?: string;
10
+ updatedAt: string;
11
+ valid: boolean;
12
+ vipFilter?: number;
13
+ isRead: boolean;
14
+ users?: string[];
15
+ limit?: number;
16
+ gap?: number;
17
+ }
18
+ export declare const MessageModel: {
19
+ fetch: () => void;
20
+ getUnreadMessages: () => Message[];
21
+ getAllMessages: () => Message[];
22
+ markMessageRead: (message: Message) => Promise<void>;
23
+ emitChange: () => void;
24
+ addListenerOnce: (callback: Function) => void;
25
+ };
26
+ export {};
@@ -0,0 +1,7 @@
1
+ export declare const Tool: {
2
+ sleep: (delay: number) => Promise<unknown>;
3
+ formatDate(date: Date, fmt: string): string;
4
+ isPlainObject: (target: any) => any;
5
+ _jsonify: (target: any) => any;
6
+ jsonify: (target: any) => any;
7
+ };
@@ -0,0 +1,28 @@
1
+ import { PurchasesPackage } from 'react-native-purchases';
2
+ export declare const VipAndroidManager: {
3
+ init: ({ WeChatPayServer }: {
4
+ WeChatPayServer: string;
5
+ }) => void;
6
+ queryOrder: (orderId?: string) => Promise<{
7
+ paid: any;
8
+ e?: undefined;
9
+ } | {
10
+ paid: boolean;
11
+ e: any;
12
+ }>;
13
+ recover: () => Promise<{
14
+ errorCode: number;
15
+ errorMsg?: undefined;
16
+ } | {
17
+ errorCode: number;
18
+ errorMsg: string;
19
+ }>;
20
+ getPackages: () => any;
21
+ purchase: (purchasePackage: PurchasesPackage) => Promise<{
22
+ errorCode: number;
23
+ errorMsg: string | undefined;
24
+ } | {
25
+ errorCode: number;
26
+ errorMsg?: undefined;
27
+ }>;
28
+ };
@@ -0,0 +1,29 @@
1
+ import { CustomerInfo, PurchasesPackage } from 'react-native-purchases';
2
+ export declare const VipManager: {
3
+ init: ({ RC_API_KEY, RC_ENTITLEMENT_ID, WeChatPayServer, }: {
4
+ RC_API_KEY: string;
5
+ RC_ENTITLEMENT_ID: string;
6
+ WeChatPayServer: string;
7
+ }) => void;
8
+ purchase: (purchasePackage: PurchasesPackage) => Promise<{
9
+ errorCode: number;
10
+ errorMsg?: undefined;
11
+ } | {
12
+ errorCode: number;
13
+ errorMsg: any;
14
+ }>;
15
+ recover: () => Promise<{
16
+ errorCode: number;
17
+ errorMsg?: undefined;
18
+ } | {
19
+ errorCode: number;
20
+ errorMsg: any;
21
+ }>;
22
+ getPackages: () => Promise<PurchasesPackage[]>;
23
+ isVip: () => boolean | undefined;
24
+ isForeverVip: () => boolean | undefined;
25
+ vipEndTime: () => string;
26
+ vipCountDay: () => number;
27
+ isTrailVip: () => boolean;
28
+ refreshVip: (customerInfo?: CustomerInfo) => Promise<void>;
29
+ };