@norcy/react-native-toolkit 0.1.45 → 0.1.47
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/README.md +2 -1
- package/lib/commonjs/ConfigDataModel.js +2 -2
- package/lib/commonjs/ConfigDataModel.js.map +1 -1
- package/lib/commonjs/MessageModel.js +2 -2
- package/lib/commonjs/MessageModel.js.map +1 -1
- package/lib/commonjs/SentryManager.js +6 -4
- package/lib/commonjs/SentryManager.js.map +1 -1
- package/lib/commonjs/VipManager.js +30 -0
- package/lib/commonjs/VipManager.js.map +1 -1
- package/lib/module/ConfigDataModel.js +2 -2
- package/lib/module/ConfigDataModel.js.map +1 -1
- package/lib/module/MessageModel.js +2 -2
- package/lib/module/MessageModel.js.map +1 -1
- package/lib/module/SentryManager.js +6 -4
- package/lib/module/SentryManager.js.map +1 -1
- package/lib/module/VipManager.js +30 -0
- package/lib/module/VipManager.js.map +1 -1
- package/package.json +1 -1
- package/src/ConfigDataModel.ts +2 -2
- package/src/MessageModel.ts +2 -2
- package/src/SentryManager.ts +6 -4
- package/src/VipManager.ts +32 -0
package/README.md
CHANGED
|
@@ -31,10 +31,10 @@ const _filterByVersion = items => {
|
|
|
31
31
|
const minVer = (_item$get = item.get('minVer')) === null || _item$get === void 0 ? void 0 : _item$get.trim();
|
|
32
32
|
const maxVer = (_item$get2 = item.get('maxVer')) === null || _item$get2 === void 0 ? void 0 : _item$get2.trim();
|
|
33
33
|
// 确保 cur 处于 [minVer, maxVer)
|
|
34
|
-
if (minVer
|
|
34
|
+
if (!!minVer && semverGt(semverCoerce(minVer).version, curVer)) {
|
|
35
35
|
continue;
|
|
36
36
|
}
|
|
37
|
-
if (maxVer
|
|
37
|
+
if (!!maxVer && semverGte(curVer, semverCoerce(maxVer).version)) {
|
|
38
38
|
continue;
|
|
39
39
|
}
|
|
40
40
|
ret.push(item);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_reactNativeDeviceInfo","_DevConfig","_PrefData","_VipManager","EventEmitter","eventEmitter","semverGt","semverGte","semverCoerce","isDataLoaded","MyItems","VersionInfo","currentVersion","getReadableVersion","version","latestVersion","isDanger","hasNewVersion","AV","_filterByVersion","items","ret","curVer","item","_item$get","_item$get2","minVer","get","trim","maxVer","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_reactNativeDeviceInfo","_DevConfig","_PrefData","_VipManager","EventEmitter","eventEmitter","semverGt","semverGte","semverCoerce","isDataLoaded","MyItems","VersionInfo","currentVersion","getReadableVersion","version","latestVersion","isDanger","hasNewVersion","AV","_filterByVersion","items","ret","curVer","item","_item$get","_item$get2","minVer","get","trim","maxVer","push","_filterByVip","isVip","VipManager","isForeverVip","vipFilter","_updateKeyValues","value","handleVersionInfo","key","Platform","OS","configVersion","ConfigDataModel","__DEV__","DevConfig","hasValue","BuildInPrefs","DevDanger","getValue","exports","init","defaultValues","fetch","query","Query","equalTo","find","then","console","log","emitChange","catch","e","error","getVersionConfig","emit","addListenerOnce","callback","once"],"sources":["ConfigDataModel.ts"],"sourcesContent":["import { Object } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { getReadableVersion } from 'react-native-device-info';\nimport { DevConfig } from './DevConfig';\nimport { BuildInPrefs } from './PrefData';\nimport { VipManager } from './VipManager';\n\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\nconst semverGt = require('semver/functions/gt');\nconst semverGte = require('semver/functions/gte');\nconst semverCoerce = require('semver/functions/coerce');\n\nlet isDataLoaded = false;\n\nexport interface ConfigsType {\n [key: string]: any;\n}\nlet MyItems: ConfigsType = {};\nlet VersionInfo = {\n currentVersion: semverCoerce(getReadableVersion()).version,\n latestVersion: semverCoerce(getReadableVersion()).version,\n isDanger: true,\n hasNewVersion: false,\n};\n\nconst AV = require('leancloud-storage');\n\nconst _filterByVersion = (items: Object[]) => {\n let ret = [];\n const curVer = semverCoerce(getReadableVersion()).version;\n for (const item of items) {\n const minVer = item.get('minVer')?.trim();\n const maxVer = item.get('maxVer')?.trim();\n // 确保 cur 处于 [minVer, maxVer)\n if (!!minVer && semverGt(semverCoerce(minVer).version, curVer)) {\n continue;\n }\n if (!!maxVer && semverGte(curVer, semverCoerce(maxVer).version)) {\n continue;\n }\n\n ret.push(item);\n }\n return ret;\n};\n\nconst _filterByVip = (items: Object[]) => {\n let ret = [];\n const isVip = VipManager.isVip();\n const isForeverVip = VipManager.isForeverVip();\n for (const item of items) {\n const vipFilter = item.get('vipFilter');\n if (\n vipFilter === 0 ||\n (vipFilter === 1 && !isVip) ||\n (vipFilter === 2 && !isForeverVip)\n ) {\n ret.push(item);\n }\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 // online > current,则更新 latestVersion\n let key = 'ov';\n if (Platform.OS === 'android') {\n key = 'aov';\n }\n const configVersion = ConfigDataModel.get(key);\n if (configVersion) {\n if (\n semverGt(semverCoerce(configVersion).version, VersionInfo.latestVersion)\n ) {\n VersionInfo.latestVersion = semverCoerce(configVersion).version;\n\n VersionInfo.hasNewVersion = true;\n }\n // current <= online,才安全 ,防止忘记修改 online\n if (\n !semverGt(VersionInfo.currentVersion, semverCoerce(configVersion).version)\n ) {\n VersionInfo.isDanger = false;\n }\n }\n\n if (__DEV__) {\n if (DevConfig.hasValue(BuildInPrefs.DevDanger)) {\n VersionInfo.isDanger = DevConfig.getValue(BuildInPrefs.DevDanger);\n }\n }\n};\n\nconst ConfigDataModel = {\n init: (defaultValues: ConfigsType) => {\n MyItems = defaultValues;\n },\n fetch: () => {\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 // 根据版本过滤\n items = _filterByVersion(items);\n // 根据 VIP 状态过滤\n items = _filterByVip(items);\n _updateKeyValues(items);\n // 处理 Version 信息\n handleVersionInfo();\n console.log('Config 抓取完毕');\n isDataLoaded = true;\n ConfigDataModel.emitChange();\n })\n .catch((e: any) => {\n console.error(e);\n });\n },\n\n getVersionConfig: () => {\n return VersionInfo;\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 (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.once('change', callback);\n },\n};\n\nexport { ConfigDataModel };\n"],"mappings":"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"}
|
|
@@ -28,10 +28,10 @@ const _filterByVersion = items => {
|
|
|
28
28
|
const minVer = (_item$minVer = item.minVer) === null || _item$minVer === void 0 ? void 0 : _item$minVer.trim();
|
|
29
29
|
const maxVer = (_item$maxVer = item.maxVer) === null || _item$maxVer === void 0 ? void 0 : _item$maxVer.trim();
|
|
30
30
|
// 确保 cur 处于 [minVer, maxVer)
|
|
31
|
-
if (minVer
|
|
31
|
+
if (!!minVer && semverGt(semverCoerce(minVer).version, curVer)) {
|
|
32
32
|
continue;
|
|
33
33
|
}
|
|
34
|
-
if (maxVer
|
|
34
|
+
if (!!maxVer && semverGte(curVer, semverCoerce(maxVer).version)) {
|
|
35
35
|
continue;
|
|
36
36
|
}
|
|
37
37
|
ret.push(item);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_reactNativeDeviceInfo","_ConfigDataModel","_Frequence","_LoginManager","_PrefData","_Tool","_VipManager","AV","EventEmitter","eventEmitter","semverGt","semverGte","semverCoerce","isDataLoaded","MyMessages","_filterByVersion","items","ret","curVer","getReadableVersion","version","item","_item$minVer","_item$maxVer","minVer","trim","maxVer","length","push","_filterByVip","isVip","VipManager","isForeverVip","vipFilter","_filterByUser","users","LoginManager","isLogin","_LoginManager$current","includes","currentUser","AVUser","get","_handleReadMessages","__DEV__","readMsgs","PrefData","getValue","BuildInPrefs","Messages","objectId","isRead","_item$key","key","config","ConfigDataModel","getVersionConfig","hasNewVersion","updatedAt","Date","toString","freConfig","limit","gap","FrequenceManager","canRun","markFinishForTime","markFinishForCount","MessageModel","exports","fetch","query","Query","equalTo","Platform","OS","descending","find","then","console","log","map","Tool","jsonify","sort","a","b","dateA","getTime","dateB","emitChange","catch","e","error","getUnreadMessages","filter","getAllMessages","markMessageRead","message","setValue","handleMessageAction","url","navigation","startsWith","ToolkitConfig","iOSStoreUrl","AndroidStoreUrl","goAppStoreReview","Linking","canOpenURL","supported","openURL","navigate","emit","slice","addListenerOnce","callback","once"],"sources":["MessageModel.ts"],"sourcesContent":["import { NavigationProp, ParamListBase } from '@react-navigation/native';\nimport { Linking, Platform } from 'react-native';\nimport { getReadableVersion } from 'react-native-device-info';\nimport { ConfigDataModel } from './ConfigDataModel';\nimport { FreConfigType, FrequenceManager } from './Frequence';\nimport { LoginManager } from './LoginManager';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { Tool, ToolkitConfig } from './Tool';\nimport { VipManager } from './VipManager';\n\nconst AV = require('leancloud-storage');\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\nconst semverGt = require('semver/functions/gt');\nconst semverGte = require('semver/functions/gte');\nconst semverCoerce = require('semver/functions/coerce');\n\nlet isDataLoaded = false;\n\nexport interface Message {\n objectId: string;\n android: boolean;\n ios: boolean;\n title?: string;\n content?: string;\n maxVer?: string;\n minVer?: string;\n key?: string;\n updatedAt: string;\n valid: boolean;\n vipFilter?: number;\n isRead: boolean;\n users?: string[];\n limit?: number;\n gap?: number;\n url: string;\n actionTitle?: string;\n}\n\nlet MyMessages: Message[] = [];\n\nconst _filterByVersion = (items: Message[]): Message[] => {\n let ret: Message[] = [];\n const curVer = semverCoerce(getReadableVersion()).version;\n for (const item of items) {\n const minVer = item.minVer?.trim();\n const maxVer = item.maxVer?.trim();\n // 确保 cur 处于 [minVer, maxVer)\n if (minVer?.length && semverGt(semverCoerce(minVer).version, curVer)) {\n continue;\n }\n if (maxVer?.length && semverGte(curVer, semverCoerce(maxVer).version)) {\n continue;\n }\n\n ret.push(item);\n }\n return ret;\n};\n\nconst _filterByVip = (items: Message[]): Message[] => {\n let ret: Message[] = [];\n const isVip = VipManager.isVip();\n const isForeverVip = VipManager.isForeverVip();\n for (const item of items) {\n const vipFilter = item.vipFilter;\n if (\n vipFilter === 0 ||\n (vipFilter === 1 && !isVip) ||\n (vipFilter === 2 && !isForeverVip)\n ) {\n ret.push(item);\n }\n }\n return ret;\n};\n\nconst _filterByUser = (items: Message[]): Message[] => {\n let ret: Message[] = [];\n for (const item of items) {\n const users = item.users;\n if (users?.length) {\n if (LoginManager.isLogin()) {\n if (\n users?.includes(LoginManager.currentUser()?.AVUser.get('objectId'))\n ) {\n ret.push(item);\n }\n }\n } else {\n ret.push(item);\n }\n }\n return ret;\n};\n\nconst _handleReadMessages = (items: Message[]): Message[] => {\n if (__DEV__) {\n // return items;\n }\n\n // 根据已读状态标为已读\n const readMsgs = PrefData.getValue(BuildInPrefs.Messages);\n for (const item of items) {\n if (readMsgs.includes(item.objectId)) {\n item.isRead = true;\n }\n }\n\n // 挑选需要强制未读\n for (const item of items) {\n if (!item.isRead) {\n continue;\n }\n if (item.key === 'changeLog') {\n // 强制升级弹窗\n // Message 是在 Config 回包之后再请求的,因此此时 Config 的值一定是准确的\n const config = ConfigDataModel.getVersionConfig();\n if (ConfigDataModel.get('upgrade_alert') && config.hasNewVersion) {\n item.isRead = false;\n item.updatedAt = new Date().toString();\n }\n } else if (item.key?.length) {\n const freConfig: FreConfigType = {\n key: item.key,\n limit: item.limit,\n gap: item.gap,\n };\n if (FrequenceManager.canRun(freConfig)) {\n if (freConfig.gap) {\n FrequenceManager.markFinishForTime(freConfig);\n } else if (freConfig.limit) {\n FrequenceManager.markFinishForCount(freConfig);\n }\n\n item.isRead = false;\n item.updatedAt = new Date().toString();\n }\n }\n }\n\n return items;\n};\n\nexport const MessageModel = {\n fetch: () => {\n const query = new AV.Query('Message');\n query\n .equalTo('valid', true)\n .equalTo(Platform.OS, true)\n .descending('updatedAt');\n query\n .find()\n .then(async (items: any[]) => {\n console.log('Message 抓取完毕');\n MyMessages = items.map((item) => Tool.jsonify(item));\n MyMessages = _filterByVersion(MyMessages);\n MyMessages = _filterByVip(MyMessages);\n MyMessages = _filterByUser(MyMessages);\n MyMessages = _handleReadMessages(MyMessages);\n\n // 由于强制插入的未读消息更改了时间,因此需要重新排序\n MyMessages = MyMessages.sort((a: Message, b: Message) => {\n let dateA = new Date(a.updatedAt).getTime();\n let dateB = new Date(b.updatedAt).getTime();\n return dateB - dateA;\n });\n isDataLoaded = true;\n MessageModel.emitChange();\n })\n .catch((e: any) => {\n console.error(e);\n });\n },\n\n getUnreadMessages: (): Message[] => {\n return MyMessages.filter((item) => !item.isRead);\n },\n\n getAllMessages: (): Message[] => {\n return MyMessages;\n },\n\n markMessageRead: async (message: Message) => {\n if (message.isRead || !message.objectId) {\n return;\n }\n message.isRead = true;\n const readMsgs = PrefData.getValue(BuildInPrefs.Messages);\n readMsgs.push(message.objectId);\n await PrefData.setValue(BuildInPrefs.Messages, readMsgs);\n MessageModel.emitChange();\n },\n\n handleMessageAction: (\n url: string,\n navigation: NavigationProp<ParamListBase>\n ) => {\n if (\n url.startsWith(ToolkitConfig.iOSStoreUrl) ||\n url.startsWith(ToolkitConfig.AndroidStoreUrl)\n ) {\n Tool.goAppStoreReview();\n return;\n }\n\n if (url?.length > 0) {\n Linking.canOpenURL(url)\n .then((supported) => {\n if (supported) {\n Linking.openURL(url);\n } else {\n navigation.navigate(url);\n }\n })\n .catch(() => {\n navigation.navigate(url);\n });\n }\n },\n\n emitChange: () => {\n eventEmitter.emit('change', MyMessages.slice());\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.once('change', callback);\n },\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_reactNativeDeviceInfo","_ConfigDataModel","_Frequence","_LoginManager","_PrefData","_Tool","_VipManager","AV","EventEmitter","eventEmitter","semverGt","semverGte","semverCoerce","isDataLoaded","MyMessages","_filterByVersion","items","ret","curVer","getReadableVersion","version","item","_item$minVer","_item$maxVer","minVer","trim","maxVer","push","_filterByVip","isVip","VipManager","isForeverVip","vipFilter","_filterByUser","users","length","LoginManager","isLogin","_LoginManager$current","includes","currentUser","AVUser","get","_handleReadMessages","__DEV__","readMsgs","PrefData","getValue","BuildInPrefs","Messages","objectId","isRead","_item$key","key","config","ConfigDataModel","getVersionConfig","hasNewVersion","updatedAt","Date","toString","freConfig","limit","gap","FrequenceManager","canRun","markFinishForTime","markFinishForCount","MessageModel","exports","fetch","query","Query","equalTo","Platform","OS","descending","find","then","console","log","map","Tool","jsonify","sort","a","b","dateA","getTime","dateB","emitChange","catch","e","error","getUnreadMessages","filter","getAllMessages","markMessageRead","message","setValue","handleMessageAction","url","navigation","startsWith","ToolkitConfig","iOSStoreUrl","AndroidStoreUrl","goAppStoreReview","Linking","canOpenURL","supported","openURL","navigate","emit","slice","addListenerOnce","callback","once"],"sources":["MessageModel.ts"],"sourcesContent":["import { NavigationProp, ParamListBase } from '@react-navigation/native';\nimport { Linking, Platform } from 'react-native';\nimport { getReadableVersion } from 'react-native-device-info';\nimport { ConfigDataModel } from './ConfigDataModel';\nimport { FreConfigType, FrequenceManager } from './Frequence';\nimport { LoginManager } from './LoginManager';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { Tool, ToolkitConfig } from './Tool';\nimport { VipManager } from './VipManager';\n\nconst AV = require('leancloud-storage');\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\nconst semverGt = require('semver/functions/gt');\nconst semverGte = require('semver/functions/gte');\nconst semverCoerce = require('semver/functions/coerce');\n\nlet isDataLoaded = false;\n\nexport interface Message {\n objectId: string;\n android: boolean;\n ios: boolean;\n title?: string;\n content?: string;\n maxVer?: string;\n minVer?: string;\n key?: string;\n updatedAt: string;\n valid: boolean;\n vipFilter?: number;\n isRead: boolean;\n users?: string[];\n limit?: number;\n gap?: number;\n url: string;\n actionTitle?: string;\n}\n\nlet MyMessages: Message[] = [];\n\nconst _filterByVersion = (items: Message[]): Message[] => {\n let ret: Message[] = [];\n const curVer = semverCoerce(getReadableVersion()).version;\n for (const item of items) {\n const minVer = item.minVer?.trim();\n const maxVer = item.maxVer?.trim();\n // 确保 cur 处于 [minVer, maxVer)\n if (!!minVer && semverGt(semverCoerce(minVer).version, curVer)) {\n continue;\n }\n if (!!maxVer && semverGte(curVer, semverCoerce(maxVer).version)) {\n continue;\n }\n\n ret.push(item);\n }\n return ret;\n};\n\nconst _filterByVip = (items: Message[]): Message[] => {\n let ret: Message[] = [];\n const isVip = VipManager.isVip();\n const isForeverVip = VipManager.isForeverVip();\n for (const item of items) {\n const vipFilter = item.vipFilter;\n if (\n vipFilter === 0 ||\n (vipFilter === 1 && !isVip) ||\n (vipFilter === 2 && !isForeverVip)\n ) {\n ret.push(item);\n }\n }\n return ret;\n};\n\nconst _filterByUser = (items: Message[]): Message[] => {\n let ret: Message[] = [];\n for (const item of items) {\n const users = item.users;\n if (users?.length) {\n if (LoginManager.isLogin()) {\n if (\n users?.includes(LoginManager.currentUser()?.AVUser.get('objectId'))\n ) {\n ret.push(item);\n }\n }\n } else {\n ret.push(item);\n }\n }\n return ret;\n};\n\nconst _handleReadMessages = (items: Message[]): Message[] => {\n if (__DEV__) {\n // return items;\n }\n\n // 根据已读状态标为已读\n const readMsgs = PrefData.getValue(BuildInPrefs.Messages);\n for (const item of items) {\n if (readMsgs.includes(item.objectId)) {\n item.isRead = true;\n }\n }\n\n // 挑选需要强制未读\n for (const item of items) {\n if (!item.isRead) {\n continue;\n }\n if (item.key === 'changeLog') {\n // 强制升级弹窗\n // Message 是在 Config 回包之后再请求的,因此此时 Config 的值一定是准确的\n const config = ConfigDataModel.getVersionConfig();\n if (ConfigDataModel.get('upgrade_alert') && config.hasNewVersion) {\n item.isRead = false;\n item.updatedAt = new Date().toString();\n }\n } else if (item.key?.length) {\n const freConfig: FreConfigType = {\n key: item.key,\n limit: item.limit,\n gap: item.gap,\n };\n if (FrequenceManager.canRun(freConfig)) {\n if (freConfig.gap) {\n FrequenceManager.markFinishForTime(freConfig);\n } else if (freConfig.limit) {\n FrequenceManager.markFinishForCount(freConfig);\n }\n\n item.isRead = false;\n item.updatedAt = new Date().toString();\n }\n }\n }\n\n return items;\n};\n\nexport const MessageModel = {\n fetch: () => {\n const query = new AV.Query('Message');\n query\n .equalTo('valid', true)\n .equalTo(Platform.OS, true)\n .descending('updatedAt');\n query\n .find()\n .then(async (items: any[]) => {\n console.log('Message 抓取完毕');\n MyMessages = items.map((item) => Tool.jsonify(item));\n MyMessages = _filterByVersion(MyMessages);\n MyMessages = _filterByVip(MyMessages);\n MyMessages = _filterByUser(MyMessages);\n MyMessages = _handleReadMessages(MyMessages);\n\n // 由于强制插入的未读消息更改了时间,因此需要重新排序\n MyMessages = MyMessages.sort((a: Message, b: Message) => {\n let dateA = new Date(a.updatedAt).getTime();\n let dateB = new Date(b.updatedAt).getTime();\n return dateB - dateA;\n });\n isDataLoaded = true;\n MessageModel.emitChange();\n })\n .catch((e: any) => {\n console.error(e);\n });\n },\n\n getUnreadMessages: (): Message[] => {\n return MyMessages.filter((item) => !item.isRead);\n },\n\n getAllMessages: (): Message[] => {\n return MyMessages;\n },\n\n markMessageRead: async (message: Message) => {\n if (message.isRead || !message.objectId) {\n return;\n }\n message.isRead = true;\n const readMsgs = PrefData.getValue(BuildInPrefs.Messages);\n readMsgs.push(message.objectId);\n await PrefData.setValue(BuildInPrefs.Messages, readMsgs);\n MessageModel.emitChange();\n },\n\n handleMessageAction: (\n url: string,\n navigation: NavigationProp<ParamListBase>\n ) => {\n if (\n url.startsWith(ToolkitConfig.iOSStoreUrl) ||\n url.startsWith(ToolkitConfig.AndroidStoreUrl)\n ) {\n Tool.goAppStoreReview();\n return;\n }\n\n if (url?.length > 0) {\n Linking.canOpenURL(url)\n .then((supported) => {\n if (supported) {\n Linking.openURL(url);\n } else {\n navigation.navigate(url);\n }\n })\n .catch(() => {\n navigation.navigate(url);\n });\n }\n },\n\n emitChange: () => {\n eventEmitter.emit('change', MyMessages.slice());\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.once('change', callback);\n },\n};\n"],"mappings":"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"}
|
|
@@ -9,13 +9,15 @@ var _Notification = require("./Notification");
|
|
|
9
9
|
var _Tool = require("./Tool");
|
|
10
10
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
11
11
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
12
|
+
let isReady = false;
|
|
12
13
|
const SentryManager = exports.SentryManager = {
|
|
13
14
|
init: () => {
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
isReady = !__DEV__ && !!_Tool.ToolkitConfig.SentryDSN;
|
|
16
|
+
if (!isReady) {
|
|
17
|
+
console.log('不使用 Sentry');
|
|
16
18
|
} else {
|
|
17
19
|
// DEV 下不打开 Sentry
|
|
18
|
-
console.log('
|
|
20
|
+
console.log('使用 Sentry');
|
|
19
21
|
Sentry.init({
|
|
20
22
|
dsn: _Tool.ToolkitConfig.SentryDSN,
|
|
21
23
|
tracesSampleRate: 1.0
|
|
@@ -45,7 +47,7 @@ const SentryManager = exports.SentryManager = {
|
|
|
45
47
|
},
|
|
46
48
|
|
|
47
49
|
setTag: (key, value) => {
|
|
48
|
-
if (
|
|
50
|
+
if (isReady) {
|
|
49
51
|
if (key.length) {
|
|
50
52
|
Sentry.setTag(key, value);
|
|
51
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Sentry","_interopRequireWildcard","require","_Notification","_Tool","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","SentryManager","exports","init","__DEV__","
|
|
1
|
+
{"version":3,"names":["Sentry","_interopRequireWildcard","require","_Notification","_Tool","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","isReady","SentryManager","exports","init","__DEV__","ToolkitConfig","SentryDSN","console","log","dsn","tracesSampleRate","Notification","addListener","_ref","error","user","sentryUser","id","AVUser","email","username","nickname","setUser","setTag","value","length"],"sources":["SentryManager.ts"],"sourcesContent":["import * as Sentry from '@sentry/react-native';\nimport { LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { ToolkitConfig } from './Tool';\n\nlet isReady = false;\nexport const SentryManager = {\n init: () => {\n isReady = !__DEV__ && !!ToolkitConfig.SentryDSN;\n if (!isReady) {\n console.log('不使用 Sentry');\n } else {\n // DEV 下不打开 Sentry\n console.log('使用 Sentry');\n Sentry.init({\n dsn: ToolkitConfig.SentryDSN,\n tracesSampleRate: 1.0,\n });\n\n Notification.addListener(\n 'onLogin',\n ({ error, user }: LoginResultDataType) => {\n if (!error && user) {\n const sentryUser: Sentry.User = {\n id: user.AVUser.get('objectId'),\n email: user.email,\n username: user.nickname,\n };\n Sentry.setUser(sentryUser);\n }\n }\n );\n\n Notification.addListener('onLogout', () => {\n Sentry.setUser(null);\n });\n\n // Sentry.nativeCrash();\n // Sentry.captureException(new Error('测试77!'));\n // throw new Error('My first Sentry error!');\n }\n },\n\n setTag: (key: string, value: any) => {\n if (isReady) {\n if (key.length) {\n Sentry.setTag(key, value);\n }\n }\n },\n};\n"],"mappings":"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"}
|
|
@@ -14,8 +14,14 @@ var _Tool = require("./Tool");
|
|
|
14
14
|
var _VipAndroidManager = require("./VipAndroidManager");
|
|
15
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
16
|
let _customerInfo;
|
|
17
|
+
let isReady = false;
|
|
17
18
|
const VipManager = exports.VipManager = {
|
|
18
19
|
init: () => {
|
|
20
|
+
isReady = !!_Tool.ToolkitConfig.RC_API_KEY;
|
|
21
|
+
if (!isReady) {
|
|
22
|
+
console.log('VIP 模块未初始化');
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
19
25
|
console.log('Vip 模块初始化');
|
|
20
26
|
_reactNativePurchases.default.configure({
|
|
21
27
|
apiKey: _Tool.ToolkitConfig.RC_API_KEY
|
|
@@ -45,6 +51,12 @@ const VipManager = exports.VipManager = {
|
|
|
45
51
|
});
|
|
46
52
|
},
|
|
47
53
|
purchase: async purchasePackage => {
|
|
54
|
+
if (!isReady) {
|
|
55
|
+
console.log('VIP 模块未初始化');
|
|
56
|
+
return {
|
|
57
|
+
errorCode: -99
|
|
58
|
+
};
|
|
59
|
+
}
|
|
48
60
|
if (!_LoginManager.LoginManager.isLogin()) {
|
|
49
61
|
return {
|
|
50
62
|
errorCode: -1
|
|
@@ -92,6 +104,12 @@ const VipManager = exports.VipManager = {
|
|
|
92
104
|
}
|
|
93
105
|
},
|
|
94
106
|
recover: async () => {
|
|
107
|
+
if (!isReady) {
|
|
108
|
+
console.log('VIP 模块未初始化');
|
|
109
|
+
return {
|
|
110
|
+
errorCode: -99
|
|
111
|
+
};
|
|
112
|
+
}
|
|
95
113
|
if (!_LoginManager.LoginManager.isLogin()) {
|
|
96
114
|
return {
|
|
97
115
|
errorCode: -1
|
|
@@ -125,6 +143,10 @@ const VipManager = exports.VipManager = {
|
|
|
125
143
|
}
|
|
126
144
|
},
|
|
127
145
|
getPackages: async () => {
|
|
146
|
+
if (!isReady) {
|
|
147
|
+
console.log('VIP 模块未初始化');
|
|
148
|
+
return [];
|
|
149
|
+
}
|
|
128
150
|
if (VipManager.isForeverVip()) {
|
|
129
151
|
return [];
|
|
130
152
|
}
|
|
@@ -155,6 +177,10 @@ const VipManager = exports.VipManager = {
|
|
|
155
177
|
},
|
|
156
178
|
isVip: () => {
|
|
157
179
|
var _customerInfo2, _customerInfo3, _isVip2;
|
|
180
|
+
if (!isReady) {
|
|
181
|
+
console.log('VIP 模块未初始化');
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
158
184
|
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;
|
|
159
185
|
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) {
|
|
160
186
|
_isVip = false;
|
|
@@ -208,6 +234,10 @@ const VipManager = exports.VipManager = {
|
|
|
208
234
|
refreshVip: async customerInfo => {
|
|
209
235
|
try {
|
|
210
236
|
var _customerInfo6;
|
|
237
|
+
if (!isReady) {
|
|
238
|
+
console.log('VIP 模块未初始化');
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
211
241
|
console.log('刷新 VIP');
|
|
212
242
|
if (customerInfo) {
|
|
213
243
|
_customerInfo = customerInfo;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_reactNativePurchases","_interopRequireDefault","_DevConfig","_LoginManager","_Notification","_PrefData","_Tool","_VipAndroidManager","obj","__esModule","default","_customerInfo","VipManager","exports","init","console","log","Purchases","configure","apiKey","ToolkitConfig","RC_API_KEY","refreshVip","Notification","addListener","_ref","error","user","logIn","AVUser","get","setAttributes","nickname","e","logOut","purchase","purchasePackage","LoginManager","isLogin","errorCode","Platform","OS","VipAndroidManager","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","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","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;\n\nexport const VipManager = {\n init: () => {\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 (!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 (!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 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 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 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":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAIA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AACA,IAAAO,KAAA,GAAAP,OAAA;AACA,IAAAQ,kBAAA,GAAAR,OAAA;AAAwD,SAAAE,uBAAAO,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAExD,IAAIG,aAAkC;AAE/B,MAAMC,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAG;EACxBE,IAAI,EAAEA,CAAA,KAAM;IACVC,OAAO,CAACC,GAAG,CAAC,WAAW,CAAC;IAExBC,6BAAS,CAACC,SAAS,CAAC;MAAEC,MAAM,EAAEC,mBAAa,CAACC;IAAW,CAAC,CAAC;IAEzDT,UAAU,CAACU,UAAU,CAAC,CAAC;IAEvBC,0BAAY,CAACC,WAAW,CACtB,SAAS,EACT,MAAAC,IAAA,IAAgD;MAAA,IAAzC;QAAEC,KAAK;QAAEC;MAA0B,CAAC,GAAAF,IAAA;MACzCV,OAAO,CAACC,GAAG,CAAC,YAAY,CAAC;MACzB,IAAI,CAACU,KAAK,IAAIC,IAAI,EAAE;QAClB,IAAI;UACF,MAAMV,6BAAS,CAACW,KAAK,CAACD,IAAI,CAACE,MAAM,CAACC,GAAG,CAAC,UAAU,CAAC,CAAC;UAClD,MAAMb,6BAAS,CAACc,aAAa,CAAC;YAAEC,QAAQ,EAAEL,IAAI,CAACK;UAAS,CAAC,CAAC;UAC1D,MAAMpB,UAAU,CAACU,UAAU,CAAC,CAAC;QAC/B,CAAC,CAAC,OAAOW,CAAC,EAAE;UACVlB,OAAO,CAACW,KAAK,CAACO,CAAC,CAAC;QAClB;MACF;IACF,CACF,CAAC;IAEDV,0BAAY,CAACC,WAAW,CAAC,UAAU,EAAE,MAAM;MACzCP,6BAAS,CAACiB,MAAM,CAAC,CAAC;MAClBvB,aAAa,GAAG,IAAI;IACtB,CAAC,CAAC;EACJ,CAAC;EAEDwB,QAAQ,EAAE,MAAOC,eAAiC,IAAK;IACrD,IAAI,CAACC,0BAAY,CAACC,OAAO,CAAC,CAAC,EAAE;MAC3B,OAAO;QAAEC,SAAS,EAAE,CAAC;MAAE,CAAC;IAC1B;IAEA,IAAI,CAACH,eAAe,EAAE;MACpB,OAAO;QAAEG,SAAS,EAAE,CAAC;MAAE,CAAC;IAC1B;IAEAxB,OAAO,CAACC,GAAG,CAAC,MAAM,EAAEoB,eAAe,CAAC;IAEpC,IAAII,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;MAC7B,OAAO,MAAMC,oCAAiB,CAACP,QAAQ,CAACC,eAAe,CAAC;IAC1D;IAEA,IAAI;MACF,MAAM;QAAEO;MAAa,CAAC,GAAG,MAAM1B,6BAAS,CAACmB,eAAe,CAACA,eAAe,CAAC;MAEzE,MAAMxB,UAAU,CAACU,UAAU,CAACqB,YAAY,CAAC;MACzC,IACE,OAAOA,YAAY,CAACC,YAAY,CAACC,MAAM,CACrCzB,mBAAa,CAAC0B,iBAAiB,CAChC,KAAK,WAAW,EACjB;QACA/B,OAAO,CAACC,GAAG,CAAC,MAAM,CAAC;QACnB,OAAO;UAAEuB,SAAS,EAAE;QAAE,CAAC;MACzB,CAAC,MAAM;QACLxB,OAAO,CAACC,GAAG,CAAC,UAAU,CAAC;QACvB,OAAO;UAAEuB,SAAS,EAAE,CAAC,CAAC;UAAEQ,QAAQ,EAAE;QAAG,CAAC;MACxC;IACF,CAAC,CAAC,OAAOd,CAAM,EAAE;MACf,IAAI,CAACA,CAAC,CAACe,aAAa,EAAE;QACpBjC,OAAO,CAACC,GAAG,CAAC,UAAU,EAAEiB,CAAC,CAACgB,OAAO,CAAC;QAClC,OAAO;UAAEV,SAAS,EAAE,CAAC,CAAC;UAAEQ,QAAQ,EAAEd,CAAC,CAACgB;QAAQ,CAAC;MAC/C,CAAC,MAAM;QACLlC,OAAO,CAACC,GAAG,CAAC,UAAU,CAAC;QACvB,OAAO;UAAEuB,SAAS,EAAE,CAAC;QAAE,CAAC;MAC1B;IACF;EACF,CAAC;EAEDW,OAAO,EAAE,MAAAA,CAAA,KAAY;IACnB,IAAI,CAACb,0BAAY,CAACC,OAAO,CAAC,CAAC,EAAE;MAC3B,OAAO;QAAEC,SAAS,EAAE,CAAC;MAAE,CAAC;IAC1B;IAEA,IAAI;MAAA,IAAAY,qBAAA;MACF,IAAIX,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;QAC7B,OAAO,MAAMC,oCAAiB,CAACQ,OAAO,CAAC,CAAC;MAC1C;MAEAnC,OAAO,CAACC,GAAG,CAAC,UAAU,CAAC;MACvB,MAAM2B,YAAY,GAAG,MAAM1B,6BAAS,CAACmC,gBAAgB,CAAC,CAAC;MACvD,MAAMxC,UAAU,CAACU,UAAU,CAACqB,YAAY,CAAC;MACzC,KAAAQ,qBAAA,GAAIR,YAAY,CAACC,YAAY,CAACC,MAAM,cAAAM,qBAAA,eAAhCA,qBAAA,CAAkCE,GAAG,EAAE;QACzCtC,OAAO,CAACC,GAAG,CAAC,MAAM,CAAC;QACnB,OAAO;UAAEuB,SAAS,EAAE;QAAE,CAAC;MACzB,CAAC,MAAM;QACLxB,OAAO,CAACC,GAAG,CAAC,UAAU,CAAC;QACvB,OAAO;UAAEuB,SAAS,EAAE,CAAC;QAAE,CAAC;MAC1B;IACF,CAAC,CAAC,OAAON,CAAM,EAAE;MACflB,OAAO,CAACC,GAAG,CAAC,UAAU,EAAEiB,CAAC,CAACgB,OAAO,CAAC;MAClC,OAAO;QAAEV,SAAS,EAAE,CAAC,CAAC;QAAEQ,QAAQ,EAAEd,CAAC,CAACgB;MAAQ,CAAC;IAC/C;EACF,CAAC;EAEDK,WAAW,EAAE,MAAAA,CAAA,KAAyC;IACpD,IAAI1C,UAAU,CAAC2C,YAAY,CAAC,CAAC,EAAE;MAC7B,OAAO,EAAE;IACX;IAEA,IAAIf,qBAAQ,CAACC,EAAE,KAAK,SAAS,IAAIe,OAAO,EAAE;MACxC,OAAOd,oCAAiB,CAACY,WAAW,CAAC,CAAC;IACxC;IAEA,IAAI;MACF,MAAMG,SAAS,GAAG,MAAMxC,6BAAS,CAACyC,YAAY,CAAC,CAAC;MAChD,IAAIC,cAAc,GAAGF,SAAS,CAACG,OAAO;MACtC7C,OAAO,CAACC,GAAG,CAAC,MAAM,CAAC;MACnB,IACE2C,cAAc,KAAK,IAAI,IACvBA,cAAc,CAACE,iBAAiB,CAACC,MAAM,KAAK,CAAC,EAC7C;QACA,IAAIC,QAAQ,GAAGJ,cAAc,CAACE,iBAAiB;QAC/C;QACA,IAAIjD,UAAU,CAACoD,KAAK,CAAC,CAAC,IAAI,CAACpD,UAAU,CAACqD,UAAU,CAAC,CAAC,EAAE;UAClDF,QAAQ,GAAGA,QAAQ,CAACG,MAAM,CAAEC,IAAI,IAAK;YACnC,MAAMC,WAAgB,GAAGD,IAAI,CAACE,OAAO;YACrC,OAAOD,WAAW,CAACE,eAAe,KAAK,kBAAkB;UAC3D,CAAC,CAAC;QACJ;QACA,OAAOP,QAAQ;MACjB,CAAC,MAAM;QACL,OAAO,EAAE;MACX;IACF,CAAC,CAAC,OAAO9B,CAAC,EAAE;MACVlB,OAAO,CAACW,KAAK,CAAC,kBAAkB,EAAEO,CAAC,CAAC;MACpC,OAAO,EAAE;IACX;EACF,CAAC;EAED+B,KAAK,EAAEA,CAAA,KAAM;IAAA,IAAAO,cAAA,EAAAC,cAAA,EAAAC,OAAA;IACX,IAAIC,MAAM,IAAAH,cAAA,GAAG5D,aAAa,cAAA4D,cAAA,gBAAAA,cAAA,GAAbA,cAAA,CAAe3B,YAAY,cAAA2B,cAAA,gBAAAA,cAAA,GAA3BA,cAAA,CAA6B1B,MAAM,cAAA0B,cAAA,gBAAAA,cAAA,GAAnCA,cAAA,CAAqClB,GAAG,cAAAkB,cAAA,uBAAxCA,cAAA,CAA0CI,QAAQ;IAC/D,IACED,MAAM,IACN,CAAClB,OAAO,KAAAgB,cAAA,GACR7D,aAAa,cAAA6D,cAAA,gBAAAA,cAAA,GAAbA,cAAA,CAAe5B,YAAY,cAAA4B,cAAA,gBAAAA,cAAA,GAA3BA,cAAA,CAA6B3B,MAAM,cAAA2B,cAAA,eAAnCA,cAAA,CAAqCnB,GAAG,CAACuB,SAAS,EAClD;MACAF,MAAM,GAAG,KAAK;IAChB;IACA,IAAIlB,OAAO,EAAE;MACX,IAAIqB,oBAAS,CAACC,QAAQ,CAACC,sBAAY,CAACC,MAAM,CAAC,EAAE;QAC3CN,MAAM,GAAGG,oBAAS,CAACI,QAAQ,CAACF,sBAAY,CAACC,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK;MACjE;IACF;IACA,QAAAP,OAAA,GAAOC,MAAM,cAAAD,OAAA,cAAAA,OAAA,GAAI,KAAK;EACxB,CAAC;EAEDlB,YAAY,EAAEA,CAAA,KAAM;IAAA,IAAA2B,qBAAA;IAClB;IACA,OACEtE,UAAU,CAACoD,KAAK,CAAC,CAAC,KACjB,EAAAkB,qBAAA,GAAAtE,UAAU,CAACuE,UAAU,CAAC,CAAC,cAAAD,qBAAA,uBAAvBA,qBAAA,CAAyBpB,MAAM,MAAK,CAAC,IACpClD,UAAU,CAACwE,WAAW,CAAC,CAAC,IAAI,KAAK,CAAC;EAExC,CAAC;EAEDD,UAAU,EAAEA,CAAA,KAAM;IAAA,IAAAE,cAAA;IAChB,MAAMC,IAAI,IAAAD,cAAA,GAAG1E,aAAa,cAAA0E,cAAA,gBAAAA,cAAA,GAAbA,cAAA,CAAezC,YAAY,cAAAyC,cAAA,gBAAAA,cAAA,GAA3BA,cAAA,CAA6BxC,MAAM,cAAAwC,cAAA,gBAAAA,cAAA,GAAnCA,cAAA,CAAqChC,GAAG,cAAAgC,cAAA,uBAAxCA,cAAA,CAA0CE,cAAc;IACrE,IAAI3E,UAAU,CAACoD,KAAK,CAAC,CAAC,IAAIsB,IAAI,EAAE;MAC9B,MAAME,IAAI,GAAG,IAAIC,IAAI,CAACH,IAAI,CAAC;MAC3B,OAAOI,UAAI,CAACC,UAAU,CAACH,IAAI,EAAE,YAAY,CAAC;IAC5C,CAAC,MAAM;MACL,OAAO,EAAE;IACX;EACF,CAAC;EAEDJ,WAAW,EAAEA,CAAA,KAAM;IAAA,IAAAQ,cAAA;IACjB,MAAMN,IAAI,IAAAM,cAAA,GAAGjF,aAAa,cAAAiF,cAAA,gBAAAA,cAAA,GAAbA,cAAA,CAAehD,YAAY,cAAAgD,cAAA,gBAAAA,cAAA,GAA3BA,cAAA,CAA6B/C,MAAM,cAAA+C,cAAA,gBAAAA,cAAA,GAAnCA,cAAA,CAAqCvC,GAAG,cAAAuC,cAAA,uBAAxCA,cAAA,CAA0CL,cAAc;IACrE,IAAI3E,UAAU,CAACoD,KAAK,CAAC,CAAC,IAAIsB,IAAI,EAAE;MAC9B,MAAME,IAAI,GAAG,IAAIC,IAAI,CAACH,IAAI,CAAC;MAC3B,MAAMO,IAAI,GAAGL,IAAI,CAACM,OAAO,CAAC,CAAC,GAAG,IAAIL,IAAI,CAAC,CAAC,CAACK,OAAO,CAAC,CAAC;MAClD,OAAOC,IAAI,CAACC,GAAG,CAACD,IAAI,CAACE,IAAI,CAACJ,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7D;IACA,OAAO,CAAC;EACV,CAAC;EAED5B,UAAU,EAAEA,CAAA,KAAM;IAAA,IAAAiC,qBAAA;IAChB,IAAItF,UAAU,CAAC2C,YAAY,CAAC,CAAC,EAAE;MAC7B,OAAO,KAAK;IACd;IACA,IAAI,CAAC3C,UAAU,CAACoD,KAAK,CAAC,CAAC,EAAE;MACvB,OAAO,KAAK;IACd;IACA,MAAMmC,OAAO,IAAAD,qBAAA,GAAG7D,0BAAY,CAAC+D,WAAW,CAAC,CAAC,cAAAF,qBAAA,uBAA1BA,qBAAA,CAA4BrE,MAAM,CAACC,GAAG,CAAC,SAAS,CAAC;IACjE,IAAIqE,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEE,QAAQ,CAAC,WAAW,CAAC,EAAE;MAClC,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd,CAAC;EAED/E,UAAU,EAAE,MAAOqB,YAA2B,IAAK;IACjD,IAAI;MAAA,IAAA2D,cAAA;MACFvF,OAAO,CAACC,GAAG,CAAC,QAAQ,CAAC;MACrB,IAAI2B,YAAY,EAAE;QAChBhC,aAAa,GAAGgC,YAAY;MAC9B,CAAC,MAAM;QACLhC,aAAa,GAAG,MAAMM,6BAAS,CAACsF,eAAe,CAAC,CAAC;MACnD;MACAxF,OAAO,CAACC,GAAG,CAAC,QAAQ,GAAAsF,cAAA,GAAE3F,aAAa,cAAA2F,cAAA,gBAAAA,cAAA,GAAbA,cAAA,CAAe1D,YAAY,cAAA0D,cAAA,uBAA3BA,cAAA,CAA6BzD,MAAM,CAAC;MAC1D9B,OAAO,CAACC,GAAG,CAAC,SAAS,EAAEJ,UAAU,CAACoD,KAAK,CAAC,CAAC,CAAC;MAC1CjD,OAAO,CAACC,GAAG,CAAC,cAAc,EAAEJ,UAAU,CAACuE,UAAU,CAAC,CAAC,CAAC;MAEpD,MAAMqB,aAAa,CAAC,CAAC;MACrBjF,0BAAY,CAACkF,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,OAAOxE,CAAC,EAAE;MACVlB,OAAO,CAACW,KAAK,CAACO,CAAC,CAAC;MAChBV,0BAAY,CAACkF,gBAAgB,CAAC,cAAc,EAAE;QAAExE;MAAE,CAAC,CAAC;IACtD;EACF;AACF,CAAC;AAED,MAAMuE,aAAa,GAAG,MAAAA,CAAA,KAAY;EAAA,IAAAE,cAAA,EAAAC,sBAAA;EAChC,IAAI,CAAC/F,UAAU,CAACoD,KAAK,CAAC,CAAC,IAAI,CAAC3B,0BAAY,CAACC,OAAO,CAAC,CAAC,EAAE;IAClD;EACF;EAEA,MAAMsE,IAAI,GAAG,EAAE;EACf,MAAMC,MAAM,GAAG,EAAE;EAEjB,MAAMV,OAAO,IAAAO,cAAA,GAAG/F,aAAa,cAAA+F,cAAA,gBAAAA,cAAA,GAAbA,cAAA,CAAe9D,YAAY,cAAA8D,cAAA,gBAAAA,cAAA,GAA3BA,cAAA,CAA6B7D,MAAM,cAAA6D,cAAA,gBAAAA,cAAA,GAAnCA,cAAA,CAAqCrD,GAAG,cAAAqD,cAAA,uBAAxCA,cAAA,CAA0CI,iBAAiB;EAC3E,MAAMC,UAAU,IAAAJ,sBAAA,GAAGtE,0BAAY,CAAC+D,WAAW,CAAC,CAAC,cAAAO,sBAAA,uBAA1BA,sBAAA,CAA4B9E,MAAM,CAACC,GAAG,CAAC,SAAS,CAAC;EACpE,IAAIqE,OAAO,IAAIA,OAAO,KAAKY,UAAU,EAAE;IACrCH,IAAI,CAACI,IAAI,CAAC,SAAS,CAAC;IACpBH,MAAM,CAACG,IAAI,CAACb,OAAO,CAAC;EACtB;EAEA,IAAIhB,UAAU;EACd,IAAIvE,UAAU,CAAC2C,YAAY,CAAC,CAAC,EAAE;IAC7B4B,UAAU,GAAG,IAAIM,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;EACzC,CAAC,MAAM;IAAA,IAAAwB,cAAA;IACL,MAAMC,UAAU,IAAAD,cAAA,GAAGtG,aAAa,cAAAsG,cAAA,gBAAAA,cAAA,GAAbA,cAAA,CAAerE,YAAY,cAAAqE,cAAA,gBAAAA,cAAA,GAA3BA,cAAA,CAA6BpE,MAAM,cAAAoE,cAAA,gBAAAA,cAAA,GAAnCA,cAAA,CAAqC5D,GAAG,cAAA4D,cAAA,uBAAxCA,cAAA,CAA0C1B,cAAc;IAC3E,IAAI2B,UAAU,EAAE;MACd/B,UAAU,GAAG,IAAIM,IAAI,CAACyB,UAAU,CAAC;IACnC;EACF;EACA,IAAI/B,UAAU,EAAE;IAAA,IAAAgC,sBAAA;IACd,MAAMC,aAAa,IAAAD,sBAAA,GAAG9E,0BAAY,CAAC+D,WAAW,CAAC,CAAC,cAAAe,sBAAA,uBAA1BA,sBAAA,CAA4BtF,MAAM,CAACC,GAAG,CAAC,YAAY,CAAC;IAC1E,IAAIqD,UAAU,CAACW,OAAO,CAAC,CAAC,MAAKsB,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEtB,OAAO,CAAC,CAAC,GAAE;MACrDc,IAAI,CAACI,IAAI,CAAC,YAAY,CAAC;MACvBH,MAAM,CAACG,IAAI,CAAC7B,UAAU,CAAC;IACzB;EACF;EAEA,IAAIyB,IAAI,CAAC9C,MAAM,GAAG,CAAC,EAAE;IACnB,MAAMzB,0BAAY,CAACgF,eAAe,CAACT,IAAI,EAAEC,MAAM,CAAC;EAClD;AACF,CAAC"}
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_reactNativePurchases","_interopRequireDefault","_DevConfig","_LoginManager","_Notification","_PrefData","_Tool","_VipAndroidManager","obj","__esModule","default","_customerInfo","isReady","VipManager","exports","init","ToolkitConfig","RC_API_KEY","console","log","Purchases","configure","apiKey","refreshVip","Notification","addListener","_ref","error","user","logIn","AVUser","get","setAttributes","nickname","e","logOut","purchase","purchasePackage","errorCode","LoginManager","isLogin","Platform","OS","VipAndroidManager","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","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","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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"}
|
|
@@ -25,10 +25,10 @@ const _filterByVersion = items => {
|
|
|
25
25
|
const minVer = (_item$get = item.get('minVer')) === null || _item$get === void 0 ? void 0 : _item$get.trim();
|
|
26
26
|
const maxVer = (_item$get2 = item.get('maxVer')) === null || _item$get2 === void 0 ? void 0 : _item$get2.trim();
|
|
27
27
|
// 确保 cur 处于 [minVer, maxVer)
|
|
28
|
-
if (minVer
|
|
28
|
+
if (!!minVer && semverGt(semverCoerce(minVer).version, curVer)) {
|
|
29
29
|
continue;
|
|
30
30
|
}
|
|
31
|
-
if (maxVer
|
|
31
|
+
if (!!maxVer && semverGte(curVer, semverCoerce(maxVer).version)) {
|
|
32
32
|
continue;
|
|
33
33
|
}
|
|
34
34
|
ret.push(item);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","getReadableVersion","DevConfig","BuildInPrefs","VipManager","EventEmitter","require","eventEmitter","semverGt","semverGte","semverCoerce","isDataLoaded","MyItems","VersionInfo","currentVersion","version","latestVersion","isDanger","hasNewVersion","AV","_filterByVersion","items","ret","curVer","item","_item$get","_item$get2","minVer","get","trim","maxVer","
|
|
1
|
+
{"version":3,"names":["Platform","getReadableVersion","DevConfig","BuildInPrefs","VipManager","EventEmitter","require","eventEmitter","semverGt","semverGte","semverCoerce","isDataLoaded","MyItems","VersionInfo","currentVersion","version","latestVersion","isDanger","hasNewVersion","AV","_filterByVersion","items","ret","curVer","item","_item$get","_item$get2","minVer","get","trim","maxVer","push","_filterByVip","isVip","isForeverVip","vipFilter","_updateKeyValues","value","handleVersionInfo","key","OS","configVersion","ConfigDataModel","__DEV__","hasValue","DevDanger","getValue","init","defaultValues","fetch","query","Query","equalTo","find","then","console","log","emitChange","catch","e","error","getVersionConfig","emit","addListenerOnce","callback","once"],"sources":["ConfigDataModel.ts"],"sourcesContent":["import { Object } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { getReadableVersion } from 'react-native-device-info';\nimport { DevConfig } from './DevConfig';\nimport { BuildInPrefs } from './PrefData';\nimport { VipManager } from './VipManager';\n\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\nconst semverGt = require('semver/functions/gt');\nconst semverGte = require('semver/functions/gte');\nconst semverCoerce = require('semver/functions/coerce');\n\nlet isDataLoaded = false;\n\nexport interface ConfigsType {\n [key: string]: any;\n}\nlet MyItems: ConfigsType = {};\nlet VersionInfo = {\n currentVersion: semverCoerce(getReadableVersion()).version,\n latestVersion: semverCoerce(getReadableVersion()).version,\n isDanger: true,\n hasNewVersion: false,\n};\n\nconst AV = require('leancloud-storage');\n\nconst _filterByVersion = (items: Object[]) => {\n let ret = [];\n const curVer = semverCoerce(getReadableVersion()).version;\n for (const item of items) {\n const minVer = item.get('minVer')?.trim();\n const maxVer = item.get('maxVer')?.trim();\n // 确保 cur 处于 [minVer, maxVer)\n if (!!minVer && semverGt(semverCoerce(minVer).version, curVer)) {\n continue;\n }\n if (!!maxVer && semverGte(curVer, semverCoerce(maxVer).version)) {\n continue;\n }\n\n ret.push(item);\n }\n return ret;\n};\n\nconst _filterByVip = (items: Object[]) => {\n let ret = [];\n const isVip = VipManager.isVip();\n const isForeverVip = VipManager.isForeverVip();\n for (const item of items) {\n const vipFilter = item.get('vipFilter');\n if (\n vipFilter === 0 ||\n (vipFilter === 1 && !isVip) ||\n (vipFilter === 2 && !isForeverVip)\n ) {\n ret.push(item);\n }\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 // online > current,则更新 latestVersion\n let key = 'ov';\n if (Platform.OS === 'android') {\n key = 'aov';\n }\n const configVersion = ConfigDataModel.get(key);\n if (configVersion) {\n if (\n semverGt(semverCoerce(configVersion).version, VersionInfo.latestVersion)\n ) {\n VersionInfo.latestVersion = semverCoerce(configVersion).version;\n\n VersionInfo.hasNewVersion = true;\n }\n // current <= online,才安全 ,防止忘记修改 online\n if (\n !semverGt(VersionInfo.currentVersion, semverCoerce(configVersion).version)\n ) {\n VersionInfo.isDanger = false;\n }\n }\n\n if (__DEV__) {\n if (DevConfig.hasValue(BuildInPrefs.DevDanger)) {\n VersionInfo.isDanger = DevConfig.getValue(BuildInPrefs.DevDanger);\n }\n }\n};\n\nconst ConfigDataModel = {\n init: (defaultValues: ConfigsType) => {\n MyItems = defaultValues;\n },\n fetch: () => {\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 // 根据版本过滤\n items = _filterByVersion(items);\n // 根据 VIP 状态过滤\n items = _filterByVip(items);\n _updateKeyValues(items);\n // 处理 Version 信息\n handleVersionInfo();\n console.log('Config 抓取完毕');\n isDataLoaded = true;\n ConfigDataModel.emitChange();\n })\n .catch((e: any) => {\n console.error(e);\n });\n },\n\n getVersionConfig: () => {\n return VersionInfo;\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 (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.once('change', callback);\n },\n};\n\nexport { ConfigDataModel };\n"],"mappings":"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"}
|
|
@@ -22,10 +22,10 @@ const _filterByVersion = items => {
|
|
|
22
22
|
const minVer = (_item$minVer = item.minVer) === null || _item$minVer === void 0 ? void 0 : _item$minVer.trim();
|
|
23
23
|
const maxVer = (_item$maxVer = item.maxVer) === null || _item$maxVer === void 0 ? void 0 : _item$maxVer.trim();
|
|
24
24
|
// 确保 cur 处于 [minVer, maxVer)
|
|
25
|
-
if (minVer
|
|
25
|
+
if (!!minVer && semverGt(semverCoerce(minVer).version, curVer)) {
|
|
26
26
|
continue;
|
|
27
27
|
}
|
|
28
|
-
if (maxVer
|
|
28
|
+
if (!!maxVer && semverGte(curVer, semverCoerce(maxVer).version)) {
|
|
29
29
|
continue;
|
|
30
30
|
}
|
|
31
31
|
ret.push(item);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Linking","Platform","getReadableVersion","ConfigDataModel","FrequenceManager","LoginManager","BuildInPrefs","PrefData","Tool","ToolkitConfig","VipManager","AV","require","EventEmitter","eventEmitter","semverGt","semverGte","semverCoerce","isDataLoaded","MyMessages","_filterByVersion","items","ret","curVer","version","item","_item$minVer","_item$maxVer","minVer","trim","maxVer","length","push","_filterByVip","isVip","isForeverVip","vipFilter","_filterByUser","users","isLogin","_LoginManager$current","includes","currentUser","AVUser","get","_handleReadMessages","__DEV__","readMsgs","getValue","Messages","objectId","isRead","_item$key","key","config","getVersionConfig","hasNewVersion","updatedAt","Date","toString","freConfig","limit","gap","canRun","markFinishForTime","markFinishForCount","MessageModel","fetch","query","Query","equalTo","OS","descending","find","then","console","log","map","jsonify","sort","a","b","dateA","getTime","dateB","emitChange","catch","e","error","getUnreadMessages","filter","getAllMessages","markMessageRead","message","setValue","handleMessageAction","url","navigation","startsWith","iOSStoreUrl","AndroidStoreUrl","goAppStoreReview","canOpenURL","supported","openURL","navigate","emit","slice","addListenerOnce","callback","once"],"sources":["MessageModel.ts"],"sourcesContent":["import { NavigationProp, ParamListBase } from '@react-navigation/native';\nimport { Linking, Platform } from 'react-native';\nimport { getReadableVersion } from 'react-native-device-info';\nimport { ConfigDataModel } from './ConfigDataModel';\nimport { FreConfigType, FrequenceManager } from './Frequence';\nimport { LoginManager } from './LoginManager';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { Tool, ToolkitConfig } from './Tool';\nimport { VipManager } from './VipManager';\n\nconst AV = require('leancloud-storage');\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\nconst semverGt = require('semver/functions/gt');\nconst semverGte = require('semver/functions/gte');\nconst semverCoerce = require('semver/functions/coerce');\n\nlet isDataLoaded = false;\n\nexport interface Message {\n objectId: string;\n android: boolean;\n ios: boolean;\n title?: string;\n content?: string;\n maxVer?: string;\n minVer?: string;\n key?: string;\n updatedAt: string;\n valid: boolean;\n vipFilter?: number;\n isRead: boolean;\n users?: string[];\n limit?: number;\n gap?: number;\n url: string;\n actionTitle?: string;\n}\n\nlet MyMessages: Message[] = [];\n\nconst _filterByVersion = (items: Message[]): Message[] => {\n let ret: Message[] = [];\n const curVer = semverCoerce(getReadableVersion()).version;\n for (const item of items) {\n const minVer = item.minVer?.trim();\n const maxVer = item.maxVer?.trim();\n // 确保 cur 处于 [minVer, maxVer)\n if (minVer?.length && semverGt(semverCoerce(minVer).version, curVer)) {\n continue;\n }\n if (maxVer?.length && semverGte(curVer, semverCoerce(maxVer).version)) {\n continue;\n }\n\n ret.push(item);\n }\n return ret;\n};\n\nconst _filterByVip = (items: Message[]): Message[] => {\n let ret: Message[] = [];\n const isVip = VipManager.isVip();\n const isForeverVip = VipManager.isForeverVip();\n for (const item of items) {\n const vipFilter = item.vipFilter;\n if (\n vipFilter === 0 ||\n (vipFilter === 1 && !isVip) ||\n (vipFilter === 2 && !isForeverVip)\n ) {\n ret.push(item);\n }\n }\n return ret;\n};\n\nconst _filterByUser = (items: Message[]): Message[] => {\n let ret: Message[] = [];\n for (const item of items) {\n const users = item.users;\n if (users?.length) {\n if (LoginManager.isLogin()) {\n if (\n users?.includes(LoginManager.currentUser()?.AVUser.get('objectId'))\n ) {\n ret.push(item);\n }\n }\n } else {\n ret.push(item);\n }\n }\n return ret;\n};\n\nconst _handleReadMessages = (items: Message[]): Message[] => {\n if (__DEV__) {\n // return items;\n }\n\n // 根据已读状态标为已读\n const readMsgs = PrefData.getValue(BuildInPrefs.Messages);\n for (const item of items) {\n if (readMsgs.includes(item.objectId)) {\n item.isRead = true;\n }\n }\n\n // 挑选需要强制未读\n for (const item of items) {\n if (!item.isRead) {\n continue;\n }\n if (item.key === 'changeLog') {\n // 强制升级弹窗\n // Message 是在 Config 回包之后再请求的,因此此时 Config 的值一定是准确的\n const config = ConfigDataModel.getVersionConfig();\n if (ConfigDataModel.get('upgrade_alert') && config.hasNewVersion) {\n item.isRead = false;\n item.updatedAt = new Date().toString();\n }\n } else if (item.key?.length) {\n const freConfig: FreConfigType = {\n key: item.key,\n limit: item.limit,\n gap: item.gap,\n };\n if (FrequenceManager.canRun(freConfig)) {\n if (freConfig.gap) {\n FrequenceManager.markFinishForTime(freConfig);\n } else if (freConfig.limit) {\n FrequenceManager.markFinishForCount(freConfig);\n }\n\n item.isRead = false;\n item.updatedAt = new Date().toString();\n }\n }\n }\n\n return items;\n};\n\nexport const MessageModel = {\n fetch: () => {\n const query = new AV.Query('Message');\n query\n .equalTo('valid', true)\n .equalTo(Platform.OS, true)\n .descending('updatedAt');\n query\n .find()\n .then(async (items: any[]) => {\n console.log('Message 抓取完毕');\n MyMessages = items.map((item) => Tool.jsonify(item));\n MyMessages = _filterByVersion(MyMessages);\n MyMessages = _filterByVip(MyMessages);\n MyMessages = _filterByUser(MyMessages);\n MyMessages = _handleReadMessages(MyMessages);\n\n // 由于强制插入的未读消息更改了时间,因此需要重新排序\n MyMessages = MyMessages.sort((a: Message, b: Message) => {\n let dateA = new Date(a.updatedAt).getTime();\n let dateB = new Date(b.updatedAt).getTime();\n return dateB - dateA;\n });\n isDataLoaded = true;\n MessageModel.emitChange();\n })\n .catch((e: any) => {\n console.error(e);\n });\n },\n\n getUnreadMessages: (): Message[] => {\n return MyMessages.filter((item) => !item.isRead);\n },\n\n getAllMessages: (): Message[] => {\n return MyMessages;\n },\n\n markMessageRead: async (message: Message) => {\n if (message.isRead || !message.objectId) {\n return;\n }\n message.isRead = true;\n const readMsgs = PrefData.getValue(BuildInPrefs.Messages);\n readMsgs.push(message.objectId);\n await PrefData.setValue(BuildInPrefs.Messages, readMsgs);\n MessageModel.emitChange();\n },\n\n handleMessageAction: (\n url: string,\n navigation: NavigationProp<ParamListBase>\n ) => {\n if (\n url.startsWith(ToolkitConfig.iOSStoreUrl) ||\n url.startsWith(ToolkitConfig.AndroidStoreUrl)\n ) {\n Tool.goAppStoreReview();\n return;\n }\n\n if (url?.length > 0) {\n Linking.canOpenURL(url)\n .then((supported) => {\n if (supported) {\n Linking.openURL(url);\n } else {\n navigation.navigate(url);\n }\n })\n .catch(() => {\n navigation.navigate(url);\n });\n }\n },\n\n emitChange: () => {\n eventEmitter.emit('change', MyMessages.slice());\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.once('change', callback);\n },\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Linking","Platform","getReadableVersion","ConfigDataModel","FrequenceManager","LoginManager","BuildInPrefs","PrefData","Tool","ToolkitConfig","VipManager","AV","require","EventEmitter","eventEmitter","semverGt","semverGte","semverCoerce","isDataLoaded","MyMessages","_filterByVersion","items","ret","curVer","version","item","_item$minVer","_item$maxVer","minVer","trim","maxVer","push","_filterByVip","isVip","isForeverVip","vipFilter","_filterByUser","users","length","isLogin","_LoginManager$current","includes","currentUser","AVUser","get","_handleReadMessages","__DEV__","readMsgs","getValue","Messages","objectId","isRead","_item$key","key","config","getVersionConfig","hasNewVersion","updatedAt","Date","toString","freConfig","limit","gap","canRun","markFinishForTime","markFinishForCount","MessageModel","fetch","query","Query","equalTo","OS","descending","find","then","console","log","map","jsonify","sort","a","b","dateA","getTime","dateB","emitChange","catch","e","error","getUnreadMessages","filter","getAllMessages","markMessageRead","message","setValue","handleMessageAction","url","navigation","startsWith","iOSStoreUrl","AndroidStoreUrl","goAppStoreReview","canOpenURL","supported","openURL","navigate","emit","slice","addListenerOnce","callback","once"],"sources":["MessageModel.ts"],"sourcesContent":["import { NavigationProp, ParamListBase } from '@react-navigation/native';\nimport { Linking, Platform } from 'react-native';\nimport { getReadableVersion } from 'react-native-device-info';\nimport { ConfigDataModel } from './ConfigDataModel';\nimport { FreConfigType, FrequenceManager } from './Frequence';\nimport { LoginManager } from './LoginManager';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { Tool, ToolkitConfig } from './Tool';\nimport { VipManager } from './VipManager';\n\nconst AV = require('leancloud-storage');\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\nconst semverGt = require('semver/functions/gt');\nconst semverGte = require('semver/functions/gte');\nconst semverCoerce = require('semver/functions/coerce');\n\nlet isDataLoaded = false;\n\nexport interface Message {\n objectId: string;\n android: boolean;\n ios: boolean;\n title?: string;\n content?: string;\n maxVer?: string;\n minVer?: string;\n key?: string;\n updatedAt: string;\n valid: boolean;\n vipFilter?: number;\n isRead: boolean;\n users?: string[];\n limit?: number;\n gap?: number;\n url: string;\n actionTitle?: string;\n}\n\nlet MyMessages: Message[] = [];\n\nconst _filterByVersion = (items: Message[]): Message[] => {\n let ret: Message[] = [];\n const curVer = semverCoerce(getReadableVersion()).version;\n for (const item of items) {\n const minVer = item.minVer?.trim();\n const maxVer = item.maxVer?.trim();\n // 确保 cur 处于 [minVer, maxVer)\n if (!!minVer && semverGt(semverCoerce(minVer).version, curVer)) {\n continue;\n }\n if (!!maxVer && semverGte(curVer, semverCoerce(maxVer).version)) {\n continue;\n }\n\n ret.push(item);\n }\n return ret;\n};\n\nconst _filterByVip = (items: Message[]): Message[] => {\n let ret: Message[] = [];\n const isVip = VipManager.isVip();\n const isForeverVip = VipManager.isForeverVip();\n for (const item of items) {\n const vipFilter = item.vipFilter;\n if (\n vipFilter === 0 ||\n (vipFilter === 1 && !isVip) ||\n (vipFilter === 2 && !isForeverVip)\n ) {\n ret.push(item);\n }\n }\n return ret;\n};\n\nconst _filterByUser = (items: Message[]): Message[] => {\n let ret: Message[] = [];\n for (const item of items) {\n const users = item.users;\n if (users?.length) {\n if (LoginManager.isLogin()) {\n if (\n users?.includes(LoginManager.currentUser()?.AVUser.get('objectId'))\n ) {\n ret.push(item);\n }\n }\n } else {\n ret.push(item);\n }\n }\n return ret;\n};\n\nconst _handleReadMessages = (items: Message[]): Message[] => {\n if (__DEV__) {\n // return items;\n }\n\n // 根据已读状态标为已读\n const readMsgs = PrefData.getValue(BuildInPrefs.Messages);\n for (const item of items) {\n if (readMsgs.includes(item.objectId)) {\n item.isRead = true;\n }\n }\n\n // 挑选需要强制未读\n for (const item of items) {\n if (!item.isRead) {\n continue;\n }\n if (item.key === 'changeLog') {\n // 强制升级弹窗\n // Message 是在 Config 回包之后再请求的,因此此时 Config 的值一定是准确的\n const config = ConfigDataModel.getVersionConfig();\n if (ConfigDataModel.get('upgrade_alert') && config.hasNewVersion) {\n item.isRead = false;\n item.updatedAt = new Date().toString();\n }\n } else if (item.key?.length) {\n const freConfig: FreConfigType = {\n key: item.key,\n limit: item.limit,\n gap: item.gap,\n };\n if (FrequenceManager.canRun(freConfig)) {\n if (freConfig.gap) {\n FrequenceManager.markFinishForTime(freConfig);\n } else if (freConfig.limit) {\n FrequenceManager.markFinishForCount(freConfig);\n }\n\n item.isRead = false;\n item.updatedAt = new Date().toString();\n }\n }\n }\n\n return items;\n};\n\nexport const MessageModel = {\n fetch: () => {\n const query = new AV.Query('Message');\n query\n .equalTo('valid', true)\n .equalTo(Platform.OS, true)\n .descending('updatedAt');\n query\n .find()\n .then(async (items: any[]) => {\n console.log('Message 抓取完毕');\n MyMessages = items.map((item) => Tool.jsonify(item));\n MyMessages = _filterByVersion(MyMessages);\n MyMessages = _filterByVip(MyMessages);\n MyMessages = _filterByUser(MyMessages);\n MyMessages = _handleReadMessages(MyMessages);\n\n // 由于强制插入的未读消息更改了时间,因此需要重新排序\n MyMessages = MyMessages.sort((a: Message, b: Message) => {\n let dateA = new Date(a.updatedAt).getTime();\n let dateB = new Date(b.updatedAt).getTime();\n return dateB - dateA;\n });\n isDataLoaded = true;\n MessageModel.emitChange();\n })\n .catch((e: any) => {\n console.error(e);\n });\n },\n\n getUnreadMessages: (): Message[] => {\n return MyMessages.filter((item) => !item.isRead);\n },\n\n getAllMessages: (): Message[] => {\n return MyMessages;\n },\n\n markMessageRead: async (message: Message) => {\n if (message.isRead || !message.objectId) {\n return;\n }\n message.isRead = true;\n const readMsgs = PrefData.getValue(BuildInPrefs.Messages);\n readMsgs.push(message.objectId);\n await PrefData.setValue(BuildInPrefs.Messages, readMsgs);\n MessageModel.emitChange();\n },\n\n handleMessageAction: (\n url: string,\n navigation: NavigationProp<ParamListBase>\n ) => {\n if (\n url.startsWith(ToolkitConfig.iOSStoreUrl) ||\n url.startsWith(ToolkitConfig.AndroidStoreUrl)\n ) {\n Tool.goAppStoreReview();\n return;\n }\n\n if (url?.length > 0) {\n Linking.canOpenURL(url)\n .then((supported) => {\n if (supported) {\n Linking.openURL(url);\n } else {\n navigation.navigate(url);\n }\n })\n .catch(() => {\n navigation.navigate(url);\n });\n }\n },\n\n emitChange: () => {\n eventEmitter.emit('change', MyMessages.slice());\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.once('change', callback);\n },\n};\n"],"mappings":"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"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import * as Sentry from '@sentry/react-native';
|
|
2
2
|
import { Notification } from './Notification';
|
|
3
3
|
import { ToolkitConfig } from './Tool';
|
|
4
|
+
let isReady = false;
|
|
4
5
|
export const SentryManager = {
|
|
5
6
|
init: () => {
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
isReady = !__DEV__ && !!ToolkitConfig.SentryDSN;
|
|
8
|
+
if (!isReady) {
|
|
9
|
+
console.log('不使用 Sentry');
|
|
8
10
|
} else {
|
|
9
11
|
// DEV 下不打开 Sentry
|
|
10
|
-
console.log('
|
|
12
|
+
console.log('使用 Sentry');
|
|
11
13
|
Sentry.init({
|
|
12
14
|
dsn: ToolkitConfig.SentryDSN,
|
|
13
15
|
tracesSampleRate: 1.0
|
|
@@ -37,7 +39,7 @@ export const SentryManager = {
|
|
|
37
39
|
},
|
|
38
40
|
|
|
39
41
|
setTag: (key, value) => {
|
|
40
|
-
if (
|
|
42
|
+
if (isReady) {
|
|
41
43
|
if (key.length) {
|
|
42
44
|
Sentry.setTag(key, value);
|
|
43
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Sentry","Notification","ToolkitConfig","SentryManager","init","__DEV__","console","log","dsn","
|
|
1
|
+
{"version":3,"names":["Sentry","Notification","ToolkitConfig","isReady","SentryManager","init","__DEV__","SentryDSN","console","log","dsn","tracesSampleRate","addListener","_ref","error","user","sentryUser","id","AVUser","get","email","username","nickname","setUser","setTag","key","value","length"],"sources":["SentryManager.ts"],"sourcesContent":["import * as Sentry from '@sentry/react-native';\nimport { LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { ToolkitConfig } from './Tool';\n\nlet isReady = false;\nexport const SentryManager = {\n init: () => {\n isReady = !__DEV__ && !!ToolkitConfig.SentryDSN;\n if (!isReady) {\n console.log('不使用 Sentry');\n } else {\n // DEV 下不打开 Sentry\n console.log('使用 Sentry');\n Sentry.init({\n dsn: ToolkitConfig.SentryDSN,\n tracesSampleRate: 1.0,\n });\n\n Notification.addListener(\n 'onLogin',\n ({ error, user }: LoginResultDataType) => {\n if (!error && user) {\n const sentryUser: Sentry.User = {\n id: user.AVUser.get('objectId'),\n email: user.email,\n username: user.nickname,\n };\n Sentry.setUser(sentryUser);\n }\n }\n );\n\n Notification.addListener('onLogout', () => {\n Sentry.setUser(null);\n });\n\n // Sentry.nativeCrash();\n // Sentry.captureException(new Error('测试77!'));\n // throw new Error('My first Sentry error!');\n }\n },\n\n setTag: (key: string, value: any) => {\n if (isReady) {\n if (key.length) {\n Sentry.setTag(key, value);\n }\n }\n },\n};\n"],"mappings":"AAAA,OAAO,KAAKA,MAAM,MAAM,sBAAsB;AAE9C,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,aAAa,QAAQ,QAAQ;AAEtC,IAAIC,OAAO,GAAG,KAAK;AACnB,OAAO,MAAMC,aAAa,GAAG;EAC3BC,IAAI,EAAEA,CAAA,KAAM;IACVF,OAAO,GAAG,CAACG,OAAO,IAAI,CAAC,CAACJ,aAAa,CAACK,SAAS;IAC/C,IAAI,CAACJ,OAAO,EAAE;MACZK,OAAO,CAACC,GAAG,CAAC,YAAY,CAAC;IAC3B,CAAC,MAAM;MACL;MACAD,OAAO,CAACC,GAAG,CAAC,WAAW,CAAC;MACxBT,MAAM,CAACK,IAAI,CAAC;QACVK,GAAG,EAAER,aAAa,CAACK,SAAS;QAC5BI,gBAAgB,EAAE;MACpB,CAAC,CAAC;MAEFV,YAAY,CAACW,WAAW,CACtB,SAAS,EACTC,IAAA,IAA0C;QAAA,IAAzC;UAAEC,KAAK;UAAEC;QAA0B,CAAC,GAAAF,IAAA;QACnC,IAAI,CAACC,KAAK,IAAIC,IAAI,EAAE;UAClB,MAAMC,UAAuB,GAAG;YAC9BC,EAAE,EAAEF,IAAI,CAACG,MAAM,CAACC,GAAG,CAAC,UAAU,CAAC;YAC/BC,KAAK,EAAEL,IAAI,CAACK,KAAK;YACjBC,QAAQ,EAAEN,IAAI,CAACO;UACjB,CAAC;UACDtB,MAAM,CAACuB,OAAO,CAACP,UAAU,CAAC;QAC5B;MACF,CACF,CAAC;MAEDf,YAAY,CAACW,WAAW,CAAC,UAAU,EAAE,MAAM;QACzCZ,MAAM,CAACuB,OAAO,CAAC,IAAI,CAAC;MACtB,CAAC,CAAC;;MAEF;MACA;MACA;IACF;EACF,CAAC;;EAEDC,MAAM,EAAEA,CAACC,GAAW,EAAEC,KAAU,KAAK;IACnC,IAAIvB,OAAO,EAAE;MACX,IAAIsB,GAAG,CAACE,MAAM,EAAE;QACd3B,MAAM,CAACwB,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC;MAC3B;IACF;EACF;AACF,CAAC"}
|
package/lib/module/VipManager.js
CHANGED
|
@@ -7,8 +7,14 @@ import { BuildInPrefs } from './PrefData';
|
|
|
7
7
|
import { Tool, ToolkitConfig } from './Tool';
|
|
8
8
|
import { VipAndroidManager } from './VipAndroidManager';
|
|
9
9
|
let _customerInfo;
|
|
10
|
+
let isReady = false;
|
|
10
11
|
export const VipManager = {
|
|
11
12
|
init: () => {
|
|
13
|
+
isReady = !!ToolkitConfig.RC_API_KEY;
|
|
14
|
+
if (!isReady) {
|
|
15
|
+
console.log('VIP 模块未初始化');
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
12
18
|
console.log('Vip 模块初始化');
|
|
13
19
|
Purchases.configure({
|
|
14
20
|
apiKey: ToolkitConfig.RC_API_KEY
|
|
@@ -38,6 +44,12 @@ export const VipManager = {
|
|
|
38
44
|
});
|
|
39
45
|
},
|
|
40
46
|
purchase: async purchasePackage => {
|
|
47
|
+
if (!isReady) {
|
|
48
|
+
console.log('VIP 模块未初始化');
|
|
49
|
+
return {
|
|
50
|
+
errorCode: -99
|
|
51
|
+
};
|
|
52
|
+
}
|
|
41
53
|
if (!LoginManager.isLogin()) {
|
|
42
54
|
return {
|
|
43
55
|
errorCode: -1
|
|
@@ -85,6 +97,12 @@ export const VipManager = {
|
|
|
85
97
|
}
|
|
86
98
|
},
|
|
87
99
|
recover: async () => {
|
|
100
|
+
if (!isReady) {
|
|
101
|
+
console.log('VIP 模块未初始化');
|
|
102
|
+
return {
|
|
103
|
+
errorCode: -99
|
|
104
|
+
};
|
|
105
|
+
}
|
|
88
106
|
if (!LoginManager.isLogin()) {
|
|
89
107
|
return {
|
|
90
108
|
errorCode: -1
|
|
@@ -118,6 +136,10 @@ export const VipManager = {
|
|
|
118
136
|
}
|
|
119
137
|
},
|
|
120
138
|
getPackages: async () => {
|
|
139
|
+
if (!isReady) {
|
|
140
|
+
console.log('VIP 模块未初始化');
|
|
141
|
+
return [];
|
|
142
|
+
}
|
|
121
143
|
if (VipManager.isForeverVip()) {
|
|
122
144
|
return [];
|
|
123
145
|
}
|
|
@@ -148,6 +170,10 @@ export const VipManager = {
|
|
|
148
170
|
},
|
|
149
171
|
isVip: () => {
|
|
150
172
|
var _customerInfo2, _customerInfo3, _isVip2;
|
|
173
|
+
if (!isReady) {
|
|
174
|
+
console.log('VIP 模块未初始化');
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
151
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;
|
|
152
178
|
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) {
|
|
153
179
|
_isVip = false;
|
|
@@ -201,6 +227,10 @@ export const VipManager = {
|
|
|
201
227
|
refreshVip: async customerInfo => {
|
|
202
228
|
try {
|
|
203
229
|
var _customerInfo6;
|
|
230
|
+
if (!isReady) {
|
|
231
|
+
console.log('VIP 模块未初始化');
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
204
234
|
console.log('刷新 VIP');
|
|
205
235
|
if (customerInfo) {
|
|
206
236
|
_customerInfo = customerInfo;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","Purchases","DevConfig","LoginManager","Notification","BuildInPrefs","Tool","ToolkitConfig","VipAndroidManager","_customerInfo","VipManager","init","console","log","configure","apiKey","RC_API_KEY","refreshVip","addListener","_ref","error","user","logIn","AVUser","get","setAttributes","nickname","e","logOut","purchase","purchasePackage","isLogin","errorCode","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;\n\nexport const VipManager = {\n init: () => {\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 (!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 (!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 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 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 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 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/package.json
CHANGED
package/src/ConfigDataModel.ts
CHANGED
|
@@ -33,10 +33,10 @@ const _filterByVersion = (items: Object[]) => {
|
|
|
33
33
|
const minVer = item.get('minVer')?.trim();
|
|
34
34
|
const maxVer = item.get('maxVer')?.trim();
|
|
35
35
|
// 确保 cur 处于 [minVer, maxVer)
|
|
36
|
-
if (minVer
|
|
36
|
+
if (!!minVer && semverGt(semverCoerce(minVer).version, curVer)) {
|
|
37
37
|
continue;
|
|
38
38
|
}
|
|
39
|
-
if (maxVer
|
|
39
|
+
if (!!maxVer && semverGte(curVer, semverCoerce(maxVer).version)) {
|
|
40
40
|
continue;
|
|
41
41
|
}
|
|
42
42
|
|
package/src/MessageModel.ts
CHANGED
|
@@ -46,10 +46,10 @@ const _filterByVersion = (items: Message[]): Message[] => {
|
|
|
46
46
|
const minVer = item.minVer?.trim();
|
|
47
47
|
const maxVer = item.maxVer?.trim();
|
|
48
48
|
// 确保 cur 处于 [minVer, maxVer)
|
|
49
|
-
if (minVer
|
|
49
|
+
if (!!minVer && semverGt(semverCoerce(minVer).version, curVer)) {
|
|
50
50
|
continue;
|
|
51
51
|
}
|
|
52
|
-
if (maxVer
|
|
52
|
+
if (!!maxVer && semverGte(curVer, semverCoerce(maxVer).version)) {
|
|
53
53
|
continue;
|
|
54
54
|
}
|
|
55
55
|
|
package/src/SentryManager.ts
CHANGED
|
@@ -3,13 +3,15 @@ import { LoginResultDataType } from './LoginManager';
|
|
|
3
3
|
import { Notification } from './Notification';
|
|
4
4
|
import { ToolkitConfig } from './Tool';
|
|
5
5
|
|
|
6
|
+
let isReady = false;
|
|
6
7
|
export const SentryManager = {
|
|
7
8
|
init: () => {
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
isReady = !__DEV__ && !!ToolkitConfig.SentryDSN;
|
|
10
|
+
if (!isReady) {
|
|
11
|
+
console.log('不使用 Sentry');
|
|
10
12
|
} else {
|
|
11
13
|
// DEV 下不打开 Sentry
|
|
12
|
-
console.log('
|
|
14
|
+
console.log('使用 Sentry');
|
|
13
15
|
Sentry.init({
|
|
14
16
|
dsn: ToolkitConfig.SentryDSN,
|
|
15
17
|
tracesSampleRate: 1.0,
|
|
@@ -40,7 +42,7 @@ export const SentryManager = {
|
|
|
40
42
|
},
|
|
41
43
|
|
|
42
44
|
setTag: (key: string, value: any) => {
|
|
43
|
-
if (
|
|
45
|
+
if (isReady) {
|
|
44
46
|
if (key.length) {
|
|
45
47
|
Sentry.setTag(key, value);
|
|
46
48
|
}
|
package/src/VipManager.ts
CHANGED
|
@@ -11,9 +11,17 @@ import { Tool, ToolkitConfig } from './Tool';
|
|
|
11
11
|
import { VipAndroidManager } from './VipAndroidManager';
|
|
12
12
|
|
|
13
13
|
let _customerInfo: CustomerInfo | null;
|
|
14
|
+
let isReady = false;
|
|
14
15
|
|
|
15
16
|
export const VipManager = {
|
|
16
17
|
init: () => {
|
|
18
|
+
isReady = !!ToolkitConfig.RC_API_KEY;
|
|
19
|
+
|
|
20
|
+
if (!isReady) {
|
|
21
|
+
console.log('VIP 模块未初始化');
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
|
|
17
25
|
console.log('Vip 模块初始化');
|
|
18
26
|
|
|
19
27
|
Purchases.configure({ apiKey: ToolkitConfig.RC_API_KEY });
|
|
@@ -43,6 +51,11 @@ export const VipManager = {
|
|
|
43
51
|
},
|
|
44
52
|
|
|
45
53
|
purchase: async (purchasePackage: PurchasesPackage) => {
|
|
54
|
+
if (!isReady) {
|
|
55
|
+
console.log('VIP 模块未初始化');
|
|
56
|
+
return { errorCode: -99 };
|
|
57
|
+
}
|
|
58
|
+
|
|
46
59
|
if (!LoginManager.isLogin()) {
|
|
47
60
|
return { errorCode: -1 };
|
|
48
61
|
}
|
|
@@ -84,6 +97,11 @@ export const VipManager = {
|
|
|
84
97
|
},
|
|
85
98
|
|
|
86
99
|
recover: async () => {
|
|
100
|
+
if (!isReady) {
|
|
101
|
+
console.log('VIP 模块未初始化');
|
|
102
|
+
return { errorCode: -99 };
|
|
103
|
+
}
|
|
104
|
+
|
|
87
105
|
if (!LoginManager.isLogin()) {
|
|
88
106
|
return { errorCode: -1 };
|
|
89
107
|
}
|
|
@@ -110,6 +128,11 @@ export const VipManager = {
|
|
|
110
128
|
},
|
|
111
129
|
|
|
112
130
|
getPackages: async (): Promise<PurchasesPackage[]> => {
|
|
131
|
+
if (!isReady) {
|
|
132
|
+
console.log('VIP 模块未初始化');
|
|
133
|
+
return [];
|
|
134
|
+
}
|
|
135
|
+
|
|
113
136
|
if (VipManager.isForeverVip()) {
|
|
114
137
|
return [];
|
|
115
138
|
}
|
|
@@ -145,6 +168,11 @@ export const VipManager = {
|
|
|
145
168
|
},
|
|
146
169
|
|
|
147
170
|
isVip: () => {
|
|
171
|
+
if (!isReady) {
|
|
172
|
+
console.log('VIP 模块未初始化');
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
|
|
148
176
|
let _isVip = _customerInfo?.entitlements?.active?.vip?.isActive;
|
|
149
177
|
if (
|
|
150
178
|
_isVip &&
|
|
@@ -206,6 +234,10 @@ export const VipManager = {
|
|
|
206
234
|
|
|
207
235
|
refreshVip: async (customerInfo?: CustomerInfo) => {
|
|
208
236
|
try {
|
|
237
|
+
if (!isReady) {
|
|
238
|
+
console.log('VIP 模块未初始化');
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
209
241
|
console.log('刷新 VIP');
|
|
210
242
|
if (customerInfo) {
|
|
211
243
|
_customerInfo = customerInfo;
|