@norcy/react-native-toolkit 0.1.121 → 0.1.123

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.DS_Store CHANGED
Binary file
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.MessageModel = void 0;
7
7
  var _reactNative = require("react-native");
8
- var _reactNativeDeviceInfo = require("react-native-device-info");
9
8
  var _ConfigDataModel = require("./ConfigDataModel");
10
9
  var _Frequence = require("./Frequence");
11
10
  var _LoginManager = require("./LoginManager");
@@ -17,22 +16,11 @@ var _VipManager = require("./VipManager");
17
16
  const AV = require('leancloud-storage');
18
17
  const EventEmitter = require('events').EventEmitter;
19
18
  const eventEmitter = new EventEmitter();
20
- const semverGt = require('semver/functions/gt');
21
- const semverGte = require('semver/functions/gte');
22
- const semverCoerce = require('semver/functions/coerce');
23
19
  let MyMessages = [];
24
20
  const _filterByVersion = items => {
25
21
  let ret = [];
26
- const curVer = semverCoerce((0, _reactNativeDeviceInfo.getReadableVersion)()).version;
27
22
  for (const item of items) {
28
- var _item$minVer, _item$maxVer;
29
- const minVer = (_item$minVer = item.minVer) === null || _item$minVer === void 0 ? void 0 : _item$minVer.trim();
30
- const maxVer = (_item$maxVer = item.maxVer) === null || _item$maxVer === void 0 ? void 0 : _item$maxVer.trim();
31
- // 确保 cur 处于 [minVer, maxVer)
32
- if (!!minVer && semverGt(semverCoerce(minVer).version, curVer)) {
33
- continue;
34
- }
35
- if (!!maxVer && semverGte(curVer, semverCoerce(maxVer).version)) {
23
+ if (!_VersionManager.VersionManager.isValidVersion(item.minVer, item.maxVer)) {
36
24
  continue;
37
25
  }
38
26
  ret.push(item);
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_reactNativeDeviceInfo","_ConfigDataModel","_Frequence","_LoginManager","_Notification","_PrefData","_Tool","_VersionManager","_VipManager","AV","EventEmitter","eventEmitter","semverGt","semverGte","semverCoerce","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","ConfigDataModel","VersionManager","hasNewAppVer","updatedAt","Date","toString","freConfig","limit","gap","FrequenceManager","canRun","configValue","_getConfigValue","lastTimestamp","isDataReady","isConfigStateReady","isVipStateReady","isNetwordDataReady","OnlineItems","_handleResponse","customFilter","isDanger","map","Tool","jsonify","sort","a","b","dateA","getTime","dateB","console","log","MessageModel","emitChange","exports","init","Notification","addListener","_ref","isAuto","user","error","fetch","query","Query","equalTo","Platform","OS","descending","find","then","catch","e","getUnreadMessages","filter","getAllMessages","markMessageRead","message","markFinishForTime","markFinishForCount","setValue","emit","slice","addListenerOnce","callback","once","on","removeListener"],"sources":["MessageModel.ts"],"sourcesContent":["import { Object } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { getReadableVersion } from 'react-native-device-info';\nimport { ConfigDataModel } from './ConfigDataModel';\nimport { FreConfigType, FrequenceManager } from './Frequence';\nimport { LoginManager, LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { Tool } from './Tool';\nimport { VersionManager } from './VersionManager';\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\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 if (\n ConfigDataModel.get('upgrade_alert') &&\n VersionManager.hasNewAppVer()\n ) {\n item.isRead = false;\n item.updatedAt = new Date().toString();\n }\n } else if (item.key?.length) {\n // 如果是带 Key 的,那么会根据 limit 或 gap 再给一次标为未读的机会\n const freConfig: FreConfigType = {\n key: item.key,\n limit: item.limit,\n gap: item.gap,\n };\n if (FrequenceManager.canRun(freConfig)) {\n item.isRead = false;\n item.updatedAt = new Date().toString();\n } else {\n const configValue = FrequenceManager._getConfigValue(freConfig);\n if (configValue.lastTimestamp) {\n item.updatedAt = new Date(\n configValue.lastTimestamp * 1000\n ).toString();\n }\n }\n }\n }\n\n return items;\n};\n\nlet isDataReady = false;\nlet isConfigStateReady = false;\nlet isVipStateReady = false;\nlet isNetwordDataReady = false;\nlet OnlineItems: Object[] = [];\n\nconst _handleResponse = (customFilter?: MessageFilter) => {\n if (\n !isConfigStateReady ||\n !OnlineItems.length ||\n !isNetwordDataReady ||\n !isVipStateReady\n ) {\n return;\n }\n\n if (VersionManager.isDanger()) {\n return;\n }\n\n MyMessages = OnlineItems.map((item) => Tool.jsonify(item));\n MyMessages = _filterByVersion(MyMessages);\n MyMessages = _filterByVip(MyMessages);\n MyMessages = _filterByUser(MyMessages);\n if (customFilter) {\n MyMessages = customFilter(MyMessages);\n }\n\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 console.log('Message 处理完毕');\n isDataReady = true;\n MessageModel.emitChange();\n};\n\nexport type MessageFilter = (oldMessage: Message[]) => Message[];\n\nexport const MessageModel = {\n init: (customFilter?: MessageFilter) => {\n Notification.addListener('onVipRefresh', () => {\n // 监听多次,直到成功,整个生命周期最多处理一次\n if (!isVipStateReady) {\n isVipStateReady = true;\n _handleResponse(customFilter);\n }\n });\n\n ConfigDataModel.addListener(() => {\n if (!isConfigStateReady) {\n isConfigStateReady = true;\n _handleResponse(customFilter);\n }\n });\n\n Notification.addListener(\n 'onLogin',\n ({ isAuto, user, error }: LoginResultDataType) => {\n if (!isAuto && user && !error) {\n isDataReady = false;\n isConfigStateReady = false;\n isVipStateReady = false;\n isNetwordDataReady = false;\n OnlineItems = [];\n MessageModel.fetch(customFilter);\n }\n }\n );\n\n MessageModel.fetch(customFilter);\n },\n\n fetch: (customFilter?: MessageFilter) => {\n // 确保可重入,但如果网络一直出错的话,每次调用都会一直发\n if (isNetwordDataReady) {\n return;\n }\n\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: Object[]) => {\n console.log('Message 抓取完毕');\n isNetwordDataReady = true;\n OnlineItems = items;\n _handleResponse(customFilter);\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\n if (message.key) {\n const freConfig: FreConfigType = {\n key: message.key,\n limit: message.limit,\n gap: message.gap,\n };\n // 能被展示出来的 message 一定是符合 FrequenceManager.canRun 的\n if (freConfig.gap) {\n FrequenceManager.markFinishForTime(freConfig);\n } else if (freConfig.limit) {\n FrequenceManager.markFinishForCount(freConfig);\n }\n }\n\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 emitChange: () => {\n eventEmitter.emit('change', MyMessages.slice());\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return;\n }\n eventEmitter.once('change', callback);\n },\n\n addListener: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return callback;\n }\n eventEmitter.on('change', callback);\n return callback;\n },\n\n removeListener: (callback: Function) => {\n eventEmitter.removeListener('change', callback);\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_reactNative","require","_ConfigDataModel","_Frequence","_LoginManager","_Notification","_PrefData","_Tool","_VersionManager","_VipManager","AV","EventEmitter","eventEmitter","MyMessages","_filterByVersion","items","ret","item","VersionManager","isValidVersion","minVer","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","ConfigDataModel","hasNewAppVer","updatedAt","Date","toString","freConfig","limit","gap","FrequenceManager","canRun","configValue","_getConfigValue","lastTimestamp","isDataReady","isConfigStateReady","isVipStateReady","isNetwordDataReady","OnlineItems","_handleResponse","customFilter","isDanger","map","Tool","jsonify","sort","a","b","dateA","getTime","dateB","console","log","MessageModel","emitChange","exports","init","Notification","addListener","_ref","isAuto","user","error","fetch","query","Query","equalTo","Platform","OS","descending","find","then","catch","e","getUnreadMessages","filter","getAllMessages","markMessageRead","message","markFinishForTime","markFinishForCount","setValue","emit","slice","addListenerOnce","callback","once","on","removeListener"],"sources":["MessageModel.ts"],"sourcesContent":["import { Object } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { ConfigDataModel } from './ConfigDataModel';\nimport { FreConfigType, FrequenceManager } from './Frequence';\nimport { LoginManager, LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { Tool } from './Tool';\nimport { VersionManager } from './VersionManager';\nimport { VipManager } from './VipManager';\n\nconst AV = require('leancloud-storage');\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\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 for (const item of items) {\n if (!VersionManager.isValidVersion(item.minVer, item.maxVer)) {\n continue;\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 if (\n ConfigDataModel.get('upgrade_alert') &&\n VersionManager.hasNewAppVer()\n ) {\n item.isRead = false;\n item.updatedAt = new Date().toString();\n }\n } else if (item.key?.length) {\n // 如果是带 Key 的,那么会根据 limit 或 gap 再给一次标为未读的机会\n const freConfig: FreConfigType = {\n key: item.key,\n limit: item.limit,\n gap: item.gap,\n };\n if (FrequenceManager.canRun(freConfig)) {\n item.isRead = false;\n item.updatedAt = new Date().toString();\n } else {\n const configValue = FrequenceManager._getConfigValue(freConfig);\n if (configValue.lastTimestamp) {\n item.updatedAt = new Date(\n configValue.lastTimestamp * 1000\n ).toString();\n }\n }\n }\n }\n\n return items;\n};\n\nlet isDataReady = false;\nlet isConfigStateReady = false;\nlet isVipStateReady = false;\nlet isNetwordDataReady = false;\nlet OnlineItems: Object[] = [];\n\nconst _handleResponse = (customFilter?: MessageFilter) => {\n if (\n !isConfigStateReady ||\n !OnlineItems.length ||\n !isNetwordDataReady ||\n !isVipStateReady\n ) {\n return;\n }\n\n if (VersionManager.isDanger()) {\n return;\n }\n\n MyMessages = OnlineItems.map((item) => Tool.jsonify(item));\n MyMessages = _filterByVersion(MyMessages);\n MyMessages = _filterByVip(MyMessages);\n MyMessages = _filterByUser(MyMessages);\n if (customFilter) {\n MyMessages = customFilter(MyMessages);\n }\n\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 console.log('Message 处理完毕');\n isDataReady = true;\n MessageModel.emitChange();\n};\n\nexport type MessageFilter = (oldMessage: Message[]) => Message[];\n\nexport const MessageModel = {\n init: (customFilter?: MessageFilter) => {\n Notification.addListener('onVipRefresh', () => {\n // 监听多次,直到成功,整个生命周期最多处理一次\n if (!isVipStateReady) {\n isVipStateReady = true;\n _handleResponse(customFilter);\n }\n });\n\n ConfigDataModel.addListener(() => {\n if (!isConfigStateReady) {\n isConfigStateReady = true;\n _handleResponse(customFilter);\n }\n });\n\n Notification.addListener(\n 'onLogin',\n ({ isAuto, user, error }: LoginResultDataType) => {\n if (!isAuto && user && !error) {\n isDataReady = false;\n isConfigStateReady = false;\n isVipStateReady = false;\n isNetwordDataReady = false;\n OnlineItems = [];\n MessageModel.fetch(customFilter);\n }\n }\n );\n\n MessageModel.fetch(customFilter);\n },\n\n fetch: (customFilter?: MessageFilter) => {\n // 确保可重入,但如果网络一直出错的话,每次调用都会一直发\n if (isNetwordDataReady) {\n return;\n }\n\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: Object[]) => {\n console.log('Message 抓取完毕');\n isNetwordDataReady = true;\n OnlineItems = items;\n _handleResponse(customFilter);\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\n if (message.key) {\n const freConfig: FreConfigType = {\n key: message.key,\n limit: message.limit,\n gap: message.gap,\n };\n // 能被展示出来的 message 一定是符合 FrequenceManager.canRun 的\n if (freConfig.gap) {\n FrequenceManager.markFinishForTime(freConfig);\n } else if (freConfig.limit) {\n FrequenceManager.markFinishForCount(freConfig);\n }\n }\n\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 emitChange: () => {\n eventEmitter.emit('change', MyMessages.slice());\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return;\n }\n eventEmitter.once('change', callback);\n },\n\n addListener: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return callback;\n }\n eventEmitter.on('change', callback);\n return callback;\n },\n\n removeListener: (callback: Function) => {\n eventEmitter.removeListener('change', callback);\n },\n};\n"],"mappings":"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"}
@@ -5,14 +5,20 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.VersionManager = void 0;
7
7
  var _reactNativeDeviceInfo = require("react-native-device-info");
8
+ var _coerce = _interopRequireDefault(require("semver/functions/coerce"));
9
+ var _gt = _interopRequireDefault(require("semver/functions/gt"));
10
+ var _gte = _interopRequireDefault(require("semver/functions/gte"));
8
11
  var _DevConfig = require("./DevConfig");
9
12
  var _PrefData = require("./PrefData");
10
- const semverGt = require('semver/functions/gt');
11
- const semverGte = require('semver/functions/gte');
12
- const semverCoerce = require('semver/functions/coerce');
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ // 辅助函数:安全获取版本
15
+ const safeCoerce = version => {
16
+ const coerced = (0, _coerce.default)(version);
17
+ return coerced ? coerced.version : '0.0.0';
18
+ };
13
19
  let VersionInfo = {
14
- currentAppVersion: semverCoerce((0, _reactNativeDeviceInfo.getReadableVersion)()).version,
15
- latestAppVersion: semverCoerce((0, _reactNativeDeviceInfo.getReadableVersion)()).version,
20
+ currentAppVersion: safeCoerce((0, _reactNativeDeviceInfo.getReadableVersion)()),
21
+ latestAppVersion: safeCoerce((0, _reactNativeDeviceInfo.getReadableVersion)()),
16
22
  currentBundleVersion: 0,
17
23
  latestBundleVersion: 0
18
24
  };
@@ -23,10 +29,10 @@ const VersionManager = exports.VersionManager = {
23
29
  latestBundleVersion
24
30
  } = _ref;
25
31
  if (latestAppVersion) {
26
- VersionInfo.latestAppVersion = semverCoerce(latestAppVersion).version;
32
+ VersionInfo.latestAppVersion = safeCoerce(latestAppVersion);
27
33
  }
28
34
  if (latestBundleVersion) {
29
- VersionInfo.latestBundleVersion = semverCoerce(latestBundleVersion).version;
35
+ VersionInfo.latestBundleVersion = Number(latestBundleVersion);
30
36
  }
31
37
  _PrefData.PrefData.addListenerOnce(() => {
32
38
  VersionInfo.currentBundleVersion = _PrefData.PrefData.getValue(_PrefData.BuildInPrefs.CurrentBundleVersion);
@@ -37,17 +43,14 @@ const VersionManager = exports.VersionManager = {
37
43
  return _DevConfig.DevConfig.getValue(_PrefData.BuildInPrefs.DevDanger);
38
44
  }
39
45
  // current > online,就危险
40
- if (semverGt(VersionInfo.currentAppVersion, VersionInfo.latestAppVersion)) {
41
- return true;
42
- }
43
- return false;
46
+ return (0, _gt.default)(VersionInfo.currentAppVersion, VersionInfo.latestAppVersion);
44
47
  },
45
48
  appVer: () => {
46
49
  return VersionInfo.currentAppVersion;
47
50
  },
48
51
  setBundleVer: bundleVer => {
49
52
  if (bundleVer) {
50
- VersionInfo.currentBundleVersion = semverCoerce(bundleVer).version;
53
+ VersionInfo.currentBundleVersion = Number(bundleVer);
51
54
  _PrefData.PrefData.setValue(_PrefData.BuildInPrefs.CurrentBundleVersion, VersionInfo.currentBundleVersion);
52
55
  }
53
56
  },
@@ -59,27 +62,21 @@ const VersionManager = exports.VersionManager = {
59
62
  },
60
63
  hasNewAppVer: () => {
61
64
  // online > current,才有新版本
62
- if (semverGt(VersionInfo.latestAppVersion, VersionInfo.currentAppVersion)) {
63
- return true;
64
- }
65
- return false;
65
+ return (0, _gt.default)(VersionInfo.latestAppVersion, VersionInfo.currentAppVersion);
66
66
  },
67
67
  hasNewBundleVer: () => {
68
68
  // latestBundleVersion 如果没命中,则为 0,此时判断为无新 Bundle
69
- if (semverGt(VersionInfo.latestBundleVersion, VersionInfo.currentBundleVersion)) {
70
- return true;
71
- }
72
- return false;
69
+ return VersionInfo.latestBundleVersion > VersionInfo.currentBundleVersion;
73
70
  },
74
71
  isValidVersion: (minVer, maxVer) => {
75
72
  var _minVer, _maxVer;
76
73
  minVer = (_minVer = minVer) === null || _minVer === void 0 ? void 0 : _minVer.trim();
77
74
  maxVer = (_maxVer = maxVer) === null || _maxVer === void 0 ? void 0 : _maxVer.trim();
78
- // 确保 cur 处于 [minVer, maxVer)
79
- if (!!minVer && semverGt(semverCoerce(minVer).version, VersionManager.appVer())) {
75
+ // 确保 cur 处于 [minVer, maxVer)
76
+ if (!!minVer && (0, _gt.default)(safeCoerce(minVer), VersionManager.appVer())) {
80
77
  return false;
81
78
  }
82
- if (!!maxVer && semverGte(VersionManager.appVer(), semverCoerce(maxVer).version)) {
79
+ if (!!maxVer && (0, _gte.default)(VersionManager.appVer(), safeCoerce(maxVer))) {
83
80
  return false;
84
81
  }
85
82
  return true;
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeDeviceInfo","require","_DevConfig","_PrefData","semverGt","semverGte","semverCoerce","VersionInfo","currentAppVersion","getReadableVersion","version","latestAppVersion","currentBundleVersion","latestBundleVersion","VersionManager","exports","init","_ref","PrefData","addListenerOnce","getValue","BuildInPrefs","CurrentBundleVersion","isDanger","__DEV__","DevConfig","hasValue","DevDanger","appVer","setBundleVer","bundleVer","setValue","hasNewAppVer","hasNewBundleVer","isValidVersion","minVer","maxVer","_minVer","_maxVer","trim"],"sources":["VersionManager.ts"],"sourcesContent":["import { getReadableVersion } from 'react-native-device-info';\nimport { DevConfig } from './DevConfig';\nimport { BuildInPrefs, PrefData } from './PrefData';\n\nconst semverGt = require('semver/functions/gt');\nconst semverGte = require('semver/functions/gte');\nconst semverCoerce = require('semver/functions/coerce');\n\nlet VersionInfo = {\n currentAppVersion: semverCoerce(getReadableVersion()).version,\n latestAppVersion: semverCoerce(getReadableVersion()).version,\n currentBundleVersion: 0,\n latestBundleVersion: 0,\n};\n\nexport const VersionManager = {\n init: ({\n latestAppVersion,\n latestBundleVersion,\n }: {\n latestAppVersion: string;\n latestBundleVersion?: string;\n }) => {\n if (latestAppVersion) {\n VersionInfo.latestAppVersion = semverCoerce(latestAppVersion).version;\n }\n\n if (latestBundleVersion) {\n VersionInfo.latestBundleVersion =\n semverCoerce(latestBundleVersion).version;\n }\n\n PrefData.addListenerOnce(() => {\n VersionInfo.currentBundleVersion = PrefData.getValue(\n BuildInPrefs.CurrentBundleVersion\n );\n });\n },\n\n isDanger: () => {\n if (__DEV__ && DevConfig.hasValue(BuildInPrefs.DevDanger)) {\n return DevConfig.getValue(BuildInPrefs.DevDanger);\n }\n // current > online,就危险\n if (semverGt(VersionInfo.currentAppVersion, VersionInfo.latestAppVersion)) {\n return true;\n }\n return false;\n },\n\n appVer: () => {\n return VersionInfo.currentAppVersion;\n },\n\n setBundleVer: (bundleVer: string) => {\n if (bundleVer) {\n VersionInfo.currentBundleVersion = semverCoerce(bundleVer).version;\n PrefData.setValue(\n BuildInPrefs.CurrentBundleVersion,\n VersionInfo.currentBundleVersion\n );\n }\n },\n\n bundleVer: () => {\n return VersionInfo.currentBundleVersion;\n },\n\n getReadableVersion: () => {\n return (\n VersionInfo.currentAppVersion +\n (VersionInfo.currentBundleVersion\n ? '(' + VersionInfo.currentBundleVersion + ')'\n : '')\n );\n },\n\n hasNewAppVer: () => {\n // online > current,才有新版本\n if (semverGt(VersionInfo.latestAppVersion, VersionInfo.currentAppVersion)) {\n return true;\n }\n return false;\n },\n\n hasNewBundleVer: () => {\n // latestBundleVersion 如果没命中,则为 0,此时判断为无新 Bundle\n if (\n semverGt(\n VersionInfo.latestBundleVersion,\n VersionInfo.currentBundleVersion\n )\n ) {\n return true;\n }\n return false;\n },\n\n isValidVersion: (minVer?: string, maxVer?: string) => {\n minVer = minVer?.trim();\n maxVer = maxVer?.trim();\n // 确保 cur 处于 [minVer, maxVer)\n if (\n !!minVer &&\n semverGt(semverCoerce(minVer).version, VersionManager.appVer())\n ) {\n return false;\n }\n if (\n !!maxVer &&\n semverGte(VersionManager.appVer(), semverCoerce(maxVer).version)\n ) {\n return false;\n }\n return true;\n },\n};\n"],"mappings":";;;;;;AAAA,IAAAA,sBAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAEA,MAAMG,QAAQ,GAAGH,OAAO,CAAC,qBAAqB,CAAC;AAC/C,MAAMI,SAAS,GAAGJ,OAAO,CAAC,sBAAsB,CAAC;AACjD,MAAMK,YAAY,GAAGL,OAAO,CAAC,yBAAyB,CAAC;AAEvD,IAAIM,WAAW,GAAG;EAChBC,iBAAiB,EAAEF,YAAY,CAAC,IAAAG,yCAAkB,EAAC,CAAC,CAAC,CAACC,OAAO;EAC7DC,gBAAgB,EAAEL,YAAY,CAAC,IAAAG,yCAAkB,EAAC,CAAC,CAAC,CAACC,OAAO;EAC5DE,oBAAoB,EAAE,CAAC;EACvBC,mBAAmB,EAAE;AACvB,CAAC;AAEM,MAAMC,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAG;EAC5BE,IAAI,EAAEC,IAAA,IAMA;IAAA,IANC;MACLN,gBAAgB;MAChBE;IAIF,CAAC,GAAAI,IAAA;IACC,IAAIN,gBAAgB,EAAE;MACpBJ,WAAW,CAACI,gBAAgB,GAAGL,YAAY,CAACK,gBAAgB,CAAC,CAACD,OAAO;IACvE;IAEA,IAAIG,mBAAmB,EAAE;MACvBN,WAAW,CAACM,mBAAmB,GAC7BP,YAAY,CAACO,mBAAmB,CAAC,CAACH,OAAO;IAC7C;IAEAQ,kBAAQ,CAACC,eAAe,CAAC,MAAM;MAC7BZ,WAAW,CAACK,oBAAoB,GAAGM,kBAAQ,CAACE,QAAQ,CAClDC,sBAAY,CAACC,oBACf,CAAC;IACH,CAAC,CAAC;EACJ,CAAC;EAEDC,QAAQ,EAAEA,CAAA,KAAM;IACd,IAAIC,OAAO,IAAIC,oBAAS,CAACC,QAAQ,CAACL,sBAAY,CAACM,SAAS,CAAC,EAAE;MACzD,OAAOF,oBAAS,CAACL,QAAQ,CAACC,sBAAY,CAACM,SAAS,CAAC;IACnD;IACA;IACA,IAAIvB,QAAQ,CAACG,WAAW,CAACC,iBAAiB,EAAED,WAAW,CAACI,gBAAgB,CAAC,EAAE;MACzE,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd,CAAC;EAEDiB,MAAM,EAAEA,CAAA,KAAM;IACZ,OAAOrB,WAAW,CAACC,iBAAiB;EACtC,CAAC;EAEDqB,YAAY,EAAGC,SAAiB,IAAK;IACnC,IAAIA,SAAS,EAAE;MACbvB,WAAW,CAACK,oBAAoB,GAAGN,YAAY,CAACwB,SAAS,CAAC,CAACpB,OAAO;MAClEQ,kBAAQ,CAACa,QAAQ,CACfV,sBAAY,CAACC,oBAAoB,EACjCf,WAAW,CAACK,oBACd,CAAC;IACH;EACF,CAAC;EAEDkB,SAAS,EAAEA,CAAA,KAAM;IACf,OAAOvB,WAAW,CAACK,oBAAoB;EACzC,CAAC;EAEDH,kBAAkB,EAAEA,CAAA,KAAM;IACxB,OACEF,WAAW,CAACC,iBAAiB,IAC5BD,WAAW,CAACK,oBAAoB,GAC7B,GAAG,GAAGL,WAAW,CAACK,oBAAoB,GAAG,GAAG,GAC5C,EAAE,CAAC;EAEX,CAAC;EAEDoB,YAAY,EAAEA,CAAA,KAAM;IAClB;IACA,IAAI5B,QAAQ,CAACG,WAAW,CAACI,gBAAgB,EAAEJ,WAAW,CAACC,iBAAiB,CAAC,EAAE;MACzE,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd,CAAC;EAEDyB,eAAe,EAAEA,CAAA,KAAM;IACrB;IACA,IACE7B,QAAQ,CACNG,WAAW,CAACM,mBAAmB,EAC/BN,WAAW,CAACK,oBACd,CAAC,EACD;MACA,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd,CAAC;EAEDsB,cAAc,EAAEA,CAACC,MAAe,EAAEC,MAAe,KAAK;IAAA,IAAAC,OAAA,EAAAC,OAAA;IACpDH,MAAM,IAAAE,OAAA,GAAGF,MAAM,cAAAE,OAAA,uBAANA,OAAA,CAAQE,IAAI,CAAC,CAAC;IACvBH,MAAM,IAAAE,OAAA,GAAGF,MAAM,cAAAE,OAAA,uBAANA,OAAA,CAAQC,IAAI,CAAC,CAAC;IACvB;IACA,IACE,CAAC,CAACJ,MAAM,IACR/B,QAAQ,CAACE,YAAY,CAAC6B,MAAM,CAAC,CAACzB,OAAO,EAAEI,cAAc,CAACc,MAAM,CAAC,CAAC,CAAC,EAC/D;MACA,OAAO,KAAK;IACd;IACA,IACE,CAAC,CAACQ,MAAM,IACR/B,SAAS,CAACS,cAAc,CAACc,MAAM,CAAC,CAAC,EAAEtB,YAAY,CAAC8B,MAAM,CAAC,CAAC1B,OAAO,CAAC,EAChE;MACA,OAAO,KAAK;IACd;IACA,OAAO,IAAI;EACb;AACF,CAAC"}
1
+ {"version":3,"names":["_reactNativeDeviceInfo","require","_coerce","_interopRequireDefault","_gt","_gte","_DevConfig","_PrefData","obj","__esModule","default","safeCoerce","version","coerced","semverCoerce","VersionInfo","currentAppVersion","getReadableVersion","latestAppVersion","currentBundleVersion","latestBundleVersion","VersionManager","exports","init","_ref","Number","PrefData","addListenerOnce","getValue","BuildInPrefs","CurrentBundleVersion","isDanger","__DEV__","DevConfig","hasValue","DevDanger","semverGt","appVer","setBundleVer","bundleVer","setValue","hasNewAppVer","hasNewBundleVer","isValidVersion","minVer","maxVer","_minVer","_maxVer","trim","semverGte"],"sources":["VersionManager.ts"],"sourcesContent":["import { getReadableVersion } from 'react-native-device-info';\nimport semverCoerce from 'semver/functions/coerce';\nimport semverGt from 'semver/functions/gt';\nimport semverGte from 'semver/functions/gte';\nimport { DevConfig } from './DevConfig';\nimport { BuildInPrefs, PrefData } from './PrefData';\n\n// 辅助函数:安全获取版本\nconst safeCoerce = (version: string) => {\n const coerced = semverCoerce(version);\n return coerced ? coerced.version : '0.0.0';\n};\n\nlet VersionInfo = {\n currentAppVersion: safeCoerce(getReadableVersion()),\n latestAppVersion: safeCoerce(getReadableVersion()),\n currentBundleVersion: 0,\n latestBundleVersion: 0,\n};\n\nexport const VersionManager = {\n init: ({\n latestAppVersion,\n latestBundleVersion,\n }: {\n latestAppVersion: string;\n latestBundleVersion?: string;\n }) => {\n if (latestAppVersion) {\n VersionInfo.latestAppVersion = safeCoerce(latestAppVersion);\n }\n\n if (latestBundleVersion) {\n VersionInfo.latestBundleVersion = Number(latestBundleVersion);\n }\n\n PrefData.addListenerOnce(() => {\n VersionInfo.currentBundleVersion = PrefData.getValue(\n BuildInPrefs.CurrentBundleVersion\n );\n });\n },\n\n isDanger: () => {\n if (__DEV__ && DevConfig.hasValue(BuildInPrefs.DevDanger)) {\n return DevConfig.getValue(BuildInPrefs.DevDanger);\n }\n // current > online,就危险\n return semverGt(\n VersionInfo.currentAppVersion,\n VersionInfo.latestAppVersion\n );\n },\n\n appVer: () => {\n return VersionInfo.currentAppVersion;\n },\n\n setBundleVer: (bundleVer: string) => {\n if (bundleVer) {\n VersionInfo.currentBundleVersion = Number(bundleVer);\n PrefData.setValue(\n BuildInPrefs.CurrentBundleVersion,\n VersionInfo.currentBundleVersion\n );\n }\n },\n\n bundleVer: () => {\n return VersionInfo.currentBundleVersion;\n },\n\n getReadableVersion: () => {\n return (\n VersionInfo.currentAppVersion +\n (VersionInfo.currentBundleVersion\n ? '(' + VersionInfo.currentBundleVersion + ')'\n : '')\n );\n },\n\n hasNewAppVer: () => {\n // online > current,才有新版本\n return semverGt(\n VersionInfo.latestAppVersion,\n VersionInfo.currentAppVersion\n );\n },\n\n hasNewBundleVer: () => {\n // latestBundleVersion 如果没命中,则为 0,此时判断为无新 Bundle\n return VersionInfo.latestBundleVersion > VersionInfo.currentBundleVersion;\n },\n\n isValidVersion: (minVer?: string, maxVer?: string) => {\n minVer = minVer?.trim();\n maxVer = maxVer?.trim();\n // 确保 cur 处于 [minVer, maxVer)\n if (!!minVer && semverGt(safeCoerce(minVer), VersionManager.appVer())) {\n return false;\n }\n if (!!maxVer && semverGte(VersionManager.appVer(), safeCoerce(maxVer))) {\n return false;\n }\n return true;\n },\n};\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { Platform } from 'react-native';
2
- import { getReadableVersion } from 'react-native-device-info';
3
2
  import { ConfigDataModel } from './ConfigDataModel';
4
3
  import { FrequenceManager } from './Frequence';
5
4
  import { LoginManager } from './LoginManager';
@@ -11,22 +10,11 @@ import { VipManager } from './VipManager';
11
10
  const AV = require('leancloud-storage');
12
11
  const EventEmitter = require('events').EventEmitter;
13
12
  const eventEmitter = new EventEmitter();
14
- const semverGt = require('semver/functions/gt');
15
- const semverGte = require('semver/functions/gte');
16
- const semverCoerce = require('semver/functions/coerce');
17
13
  let MyMessages = [];
18
14
  const _filterByVersion = items => {
19
15
  let ret = [];
20
- const curVer = semverCoerce(getReadableVersion()).version;
21
16
  for (const item of items) {
22
- var _item$minVer, _item$maxVer;
23
- const minVer = (_item$minVer = item.minVer) === null || _item$minVer === void 0 ? void 0 : _item$minVer.trim();
24
- const maxVer = (_item$maxVer = item.maxVer) === null || _item$maxVer === void 0 ? void 0 : _item$maxVer.trim();
25
- // 确保 cur 处于 [minVer, maxVer)
26
- if (!!minVer && semverGt(semverCoerce(minVer).version, curVer)) {
27
- continue;
28
- }
29
- if (!!maxVer && semverGte(curVer, semverCoerce(maxVer).version)) {
17
+ if (!VersionManager.isValidVersion(item.minVer, item.maxVer)) {
30
18
  continue;
31
19
  }
32
20
  ret.push(item);
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","getReadableVersion","ConfigDataModel","FrequenceManager","LoginManager","Notification","BuildInPrefs","PrefData","Tool","VersionManager","VipManager","AV","require","EventEmitter","eventEmitter","semverGt","semverGte","semverCoerce","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","hasNewAppVer","updatedAt","Date","toString","freConfig","limit","gap","canRun","configValue","_getConfigValue","lastTimestamp","isDataReady","isConfigStateReady","isVipStateReady","isNetwordDataReady","OnlineItems","_handleResponse","customFilter","isDanger","map","jsonify","sort","a","b","dateA","getTime","dateB","console","log","MessageModel","emitChange","init","addListener","_ref","isAuto","user","error","fetch","query","Query","equalTo","OS","descending","find","then","catch","e","getUnreadMessages","filter","getAllMessages","markMessageRead","message","markFinishForTime","markFinishForCount","setValue","emit","slice","addListenerOnce","callback","once","on","removeListener"],"sources":["MessageModel.ts"],"sourcesContent":["import { Object } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { getReadableVersion } from 'react-native-device-info';\nimport { ConfigDataModel } from './ConfigDataModel';\nimport { FreConfigType, FrequenceManager } from './Frequence';\nimport { LoginManager, LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { Tool } from './Tool';\nimport { VersionManager } from './VersionManager';\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\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 if (\n ConfigDataModel.get('upgrade_alert') &&\n VersionManager.hasNewAppVer()\n ) {\n item.isRead = false;\n item.updatedAt = new Date().toString();\n }\n } else if (item.key?.length) {\n // 如果是带 Key 的,那么会根据 limit 或 gap 再给一次标为未读的机会\n const freConfig: FreConfigType = {\n key: item.key,\n limit: item.limit,\n gap: item.gap,\n };\n if (FrequenceManager.canRun(freConfig)) {\n item.isRead = false;\n item.updatedAt = new Date().toString();\n } else {\n const configValue = FrequenceManager._getConfigValue(freConfig);\n if (configValue.lastTimestamp) {\n item.updatedAt = new Date(\n configValue.lastTimestamp * 1000\n ).toString();\n }\n }\n }\n }\n\n return items;\n};\n\nlet isDataReady = false;\nlet isConfigStateReady = false;\nlet isVipStateReady = false;\nlet isNetwordDataReady = false;\nlet OnlineItems: Object[] = [];\n\nconst _handleResponse = (customFilter?: MessageFilter) => {\n if (\n !isConfigStateReady ||\n !OnlineItems.length ||\n !isNetwordDataReady ||\n !isVipStateReady\n ) {\n return;\n }\n\n if (VersionManager.isDanger()) {\n return;\n }\n\n MyMessages = OnlineItems.map((item) => Tool.jsonify(item));\n MyMessages = _filterByVersion(MyMessages);\n MyMessages = _filterByVip(MyMessages);\n MyMessages = _filterByUser(MyMessages);\n if (customFilter) {\n MyMessages = customFilter(MyMessages);\n }\n\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 console.log('Message 处理完毕');\n isDataReady = true;\n MessageModel.emitChange();\n};\n\nexport type MessageFilter = (oldMessage: Message[]) => Message[];\n\nexport const MessageModel = {\n init: (customFilter?: MessageFilter) => {\n Notification.addListener('onVipRefresh', () => {\n // 监听多次,直到成功,整个生命周期最多处理一次\n if (!isVipStateReady) {\n isVipStateReady = true;\n _handleResponse(customFilter);\n }\n });\n\n ConfigDataModel.addListener(() => {\n if (!isConfigStateReady) {\n isConfigStateReady = true;\n _handleResponse(customFilter);\n }\n });\n\n Notification.addListener(\n 'onLogin',\n ({ isAuto, user, error }: LoginResultDataType) => {\n if (!isAuto && user && !error) {\n isDataReady = false;\n isConfigStateReady = false;\n isVipStateReady = false;\n isNetwordDataReady = false;\n OnlineItems = [];\n MessageModel.fetch(customFilter);\n }\n }\n );\n\n MessageModel.fetch(customFilter);\n },\n\n fetch: (customFilter?: MessageFilter) => {\n // 确保可重入,但如果网络一直出错的话,每次调用都会一直发\n if (isNetwordDataReady) {\n return;\n }\n\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: Object[]) => {\n console.log('Message 抓取完毕');\n isNetwordDataReady = true;\n OnlineItems = items;\n _handleResponse(customFilter);\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\n if (message.key) {\n const freConfig: FreConfigType = {\n key: message.key,\n limit: message.limit,\n gap: message.gap,\n };\n // 能被展示出来的 message 一定是符合 FrequenceManager.canRun 的\n if (freConfig.gap) {\n FrequenceManager.markFinishForTime(freConfig);\n } else if (freConfig.limit) {\n FrequenceManager.markFinishForCount(freConfig);\n }\n }\n\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 emitChange: () => {\n eventEmitter.emit('change', MyMessages.slice());\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return;\n }\n eventEmitter.once('change', callback);\n },\n\n addListener: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return callback;\n }\n eventEmitter.on('change', callback);\n return callback;\n },\n\n removeListener: (callback: Function) => {\n eventEmitter.removeListener('change', callback);\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["Platform","ConfigDataModel","FrequenceManager","LoginManager","Notification","BuildInPrefs","PrefData","Tool","VersionManager","VipManager","AV","require","EventEmitter","eventEmitter","MyMessages","_filterByVersion","items","ret","item","isValidVersion","minVer","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","hasNewAppVer","updatedAt","Date","toString","freConfig","limit","gap","canRun","configValue","_getConfigValue","lastTimestamp","isDataReady","isConfigStateReady","isVipStateReady","isNetwordDataReady","OnlineItems","_handleResponse","customFilter","isDanger","map","jsonify","sort","a","b","dateA","getTime","dateB","console","log","MessageModel","emitChange","init","addListener","_ref","isAuto","user","error","fetch","query","Query","equalTo","OS","descending","find","then","catch","e","getUnreadMessages","filter","getAllMessages","markMessageRead","message","markFinishForTime","markFinishForCount","setValue","emit","slice","addListenerOnce","callback","once","on","removeListener"],"sources":["MessageModel.ts"],"sourcesContent":["import { Object } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { ConfigDataModel } from './ConfigDataModel';\nimport { FreConfigType, FrequenceManager } from './Frequence';\nimport { LoginManager, LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { Tool } from './Tool';\nimport { VersionManager } from './VersionManager';\nimport { VipManager } from './VipManager';\n\nconst AV = require('leancloud-storage');\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\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 for (const item of items) {\n if (!VersionManager.isValidVersion(item.minVer, item.maxVer)) {\n continue;\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 if (\n ConfigDataModel.get('upgrade_alert') &&\n VersionManager.hasNewAppVer()\n ) {\n item.isRead = false;\n item.updatedAt = new Date().toString();\n }\n } else if (item.key?.length) {\n // 如果是带 Key 的,那么会根据 limit 或 gap 再给一次标为未读的机会\n const freConfig: FreConfigType = {\n key: item.key,\n limit: item.limit,\n gap: item.gap,\n };\n if (FrequenceManager.canRun(freConfig)) {\n item.isRead = false;\n item.updatedAt = new Date().toString();\n } else {\n const configValue = FrequenceManager._getConfigValue(freConfig);\n if (configValue.lastTimestamp) {\n item.updatedAt = new Date(\n configValue.lastTimestamp * 1000\n ).toString();\n }\n }\n }\n }\n\n return items;\n};\n\nlet isDataReady = false;\nlet isConfigStateReady = false;\nlet isVipStateReady = false;\nlet isNetwordDataReady = false;\nlet OnlineItems: Object[] = [];\n\nconst _handleResponse = (customFilter?: MessageFilter) => {\n if (\n !isConfigStateReady ||\n !OnlineItems.length ||\n !isNetwordDataReady ||\n !isVipStateReady\n ) {\n return;\n }\n\n if (VersionManager.isDanger()) {\n return;\n }\n\n MyMessages = OnlineItems.map((item) => Tool.jsonify(item));\n MyMessages = _filterByVersion(MyMessages);\n MyMessages = _filterByVip(MyMessages);\n MyMessages = _filterByUser(MyMessages);\n if (customFilter) {\n MyMessages = customFilter(MyMessages);\n }\n\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 console.log('Message 处理完毕');\n isDataReady = true;\n MessageModel.emitChange();\n};\n\nexport type MessageFilter = (oldMessage: Message[]) => Message[];\n\nexport const MessageModel = {\n init: (customFilter?: MessageFilter) => {\n Notification.addListener('onVipRefresh', () => {\n // 监听多次,直到成功,整个生命周期最多处理一次\n if (!isVipStateReady) {\n isVipStateReady = true;\n _handleResponse(customFilter);\n }\n });\n\n ConfigDataModel.addListener(() => {\n if (!isConfigStateReady) {\n isConfigStateReady = true;\n _handleResponse(customFilter);\n }\n });\n\n Notification.addListener(\n 'onLogin',\n ({ isAuto, user, error }: LoginResultDataType) => {\n if (!isAuto && user && !error) {\n isDataReady = false;\n isConfigStateReady = false;\n isVipStateReady = false;\n isNetwordDataReady = false;\n OnlineItems = [];\n MessageModel.fetch(customFilter);\n }\n }\n );\n\n MessageModel.fetch(customFilter);\n },\n\n fetch: (customFilter?: MessageFilter) => {\n // 确保可重入,但如果网络一直出错的话,每次调用都会一直发\n if (isNetwordDataReady) {\n return;\n }\n\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: Object[]) => {\n console.log('Message 抓取完毕');\n isNetwordDataReady = true;\n OnlineItems = items;\n _handleResponse(customFilter);\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\n if (message.key) {\n const freConfig: FreConfigType = {\n key: message.key,\n limit: message.limit,\n gap: message.gap,\n };\n // 能被展示出来的 message 一定是符合 FrequenceManager.canRun 的\n if (freConfig.gap) {\n FrequenceManager.markFinishForTime(freConfig);\n } else if (freConfig.limit) {\n FrequenceManager.markFinishForCount(freConfig);\n }\n }\n\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 emitChange: () => {\n eventEmitter.emit('change', MyMessages.slice());\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return;\n }\n eventEmitter.once('change', callback);\n },\n\n addListener: (callback: Function) => {\n if (isDataReady) {\n callback && callback();\n return callback;\n }\n eventEmitter.on('change', callback);\n return callback;\n },\n\n removeListener: (callback: Function) => {\n eventEmitter.removeListener('change', callback);\n },\n};\n"],"mappings":"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"}
@@ -1,12 +1,18 @@
1
1
  import { getReadableVersion } from 'react-native-device-info';
2
+ import semverCoerce from 'semver/functions/coerce';
3
+ import semverGt from 'semver/functions/gt';
4
+ import semverGte from 'semver/functions/gte';
2
5
  import { DevConfig } from './DevConfig';
3
6
  import { BuildInPrefs, PrefData } from './PrefData';
4
- const semverGt = require('semver/functions/gt');
5
- const semverGte = require('semver/functions/gte');
6
- const semverCoerce = require('semver/functions/coerce');
7
+
8
+ // 辅助函数:安全获取版本
9
+ const safeCoerce = version => {
10
+ const coerced = semverCoerce(version);
11
+ return coerced ? coerced.version : '0.0.0';
12
+ };
7
13
  let VersionInfo = {
8
- currentAppVersion: semverCoerce(getReadableVersion()).version,
9
- latestAppVersion: semverCoerce(getReadableVersion()).version,
14
+ currentAppVersion: safeCoerce(getReadableVersion()),
15
+ latestAppVersion: safeCoerce(getReadableVersion()),
10
16
  currentBundleVersion: 0,
11
17
  latestBundleVersion: 0
12
18
  };
@@ -17,10 +23,10 @@ export const VersionManager = {
17
23
  latestBundleVersion
18
24
  } = _ref;
19
25
  if (latestAppVersion) {
20
- VersionInfo.latestAppVersion = semverCoerce(latestAppVersion).version;
26
+ VersionInfo.latestAppVersion = safeCoerce(latestAppVersion);
21
27
  }
22
28
  if (latestBundleVersion) {
23
- VersionInfo.latestBundleVersion = semverCoerce(latestBundleVersion).version;
29
+ VersionInfo.latestBundleVersion = Number(latestBundleVersion);
24
30
  }
25
31
  PrefData.addListenerOnce(() => {
26
32
  VersionInfo.currentBundleVersion = PrefData.getValue(BuildInPrefs.CurrentBundleVersion);
@@ -31,17 +37,14 @@ export const VersionManager = {
31
37
  return DevConfig.getValue(BuildInPrefs.DevDanger);
32
38
  }
33
39
  // current > online,就危险
34
- if (semverGt(VersionInfo.currentAppVersion, VersionInfo.latestAppVersion)) {
35
- return true;
36
- }
37
- return false;
40
+ return semverGt(VersionInfo.currentAppVersion, VersionInfo.latestAppVersion);
38
41
  },
39
42
  appVer: () => {
40
43
  return VersionInfo.currentAppVersion;
41
44
  },
42
45
  setBundleVer: bundleVer => {
43
46
  if (bundleVer) {
44
- VersionInfo.currentBundleVersion = semverCoerce(bundleVer).version;
47
+ VersionInfo.currentBundleVersion = Number(bundleVer);
45
48
  PrefData.setValue(BuildInPrefs.CurrentBundleVersion, VersionInfo.currentBundleVersion);
46
49
  }
47
50
  },
@@ -53,27 +56,21 @@ export const VersionManager = {
53
56
  },
54
57
  hasNewAppVer: () => {
55
58
  // online > current,才有新版本
56
- if (semverGt(VersionInfo.latestAppVersion, VersionInfo.currentAppVersion)) {
57
- return true;
58
- }
59
- return false;
59
+ return semverGt(VersionInfo.latestAppVersion, VersionInfo.currentAppVersion);
60
60
  },
61
61
  hasNewBundleVer: () => {
62
62
  // latestBundleVersion 如果没命中,则为 0,此时判断为无新 Bundle
63
- if (semverGt(VersionInfo.latestBundleVersion, VersionInfo.currentBundleVersion)) {
64
- return true;
65
- }
66
- return false;
63
+ return VersionInfo.latestBundleVersion > VersionInfo.currentBundleVersion;
67
64
  },
68
65
  isValidVersion: (minVer, maxVer) => {
69
66
  var _minVer, _maxVer;
70
67
  minVer = (_minVer = minVer) === null || _minVer === void 0 ? void 0 : _minVer.trim();
71
68
  maxVer = (_maxVer = maxVer) === null || _maxVer === void 0 ? void 0 : _maxVer.trim();
72
- // 确保 cur 处于 [minVer, maxVer)
73
- if (!!minVer && semverGt(semverCoerce(minVer).version, VersionManager.appVer())) {
69
+ // 确保 cur 处于 [minVer, maxVer)
70
+ if (!!minVer && semverGt(safeCoerce(minVer), VersionManager.appVer())) {
74
71
  return false;
75
72
  }
76
- if (!!maxVer && semverGte(VersionManager.appVer(), semverCoerce(maxVer).version)) {
73
+ if (!!maxVer && semverGte(VersionManager.appVer(), safeCoerce(maxVer))) {
77
74
  return false;
78
75
  }
79
76
  return true;
@@ -1 +1 @@
1
- {"version":3,"names":["getReadableVersion","DevConfig","BuildInPrefs","PrefData","semverGt","require","semverGte","semverCoerce","VersionInfo","currentAppVersion","version","latestAppVersion","currentBundleVersion","latestBundleVersion","VersionManager","init","_ref","addListenerOnce","getValue","CurrentBundleVersion","isDanger","__DEV__","hasValue","DevDanger","appVer","setBundleVer","bundleVer","setValue","hasNewAppVer","hasNewBundleVer","isValidVersion","minVer","maxVer","_minVer","_maxVer","trim"],"sources":["VersionManager.ts"],"sourcesContent":["import { getReadableVersion } from 'react-native-device-info';\nimport { DevConfig } from './DevConfig';\nimport { BuildInPrefs, PrefData } from './PrefData';\n\nconst semverGt = require('semver/functions/gt');\nconst semverGte = require('semver/functions/gte');\nconst semverCoerce = require('semver/functions/coerce');\n\nlet VersionInfo = {\n currentAppVersion: semverCoerce(getReadableVersion()).version,\n latestAppVersion: semverCoerce(getReadableVersion()).version,\n currentBundleVersion: 0,\n latestBundleVersion: 0,\n};\n\nexport const VersionManager = {\n init: ({\n latestAppVersion,\n latestBundleVersion,\n }: {\n latestAppVersion: string;\n latestBundleVersion?: string;\n }) => {\n if (latestAppVersion) {\n VersionInfo.latestAppVersion = semverCoerce(latestAppVersion).version;\n }\n\n if (latestBundleVersion) {\n VersionInfo.latestBundleVersion =\n semverCoerce(latestBundleVersion).version;\n }\n\n PrefData.addListenerOnce(() => {\n VersionInfo.currentBundleVersion = PrefData.getValue(\n BuildInPrefs.CurrentBundleVersion\n );\n });\n },\n\n isDanger: () => {\n if (__DEV__ && DevConfig.hasValue(BuildInPrefs.DevDanger)) {\n return DevConfig.getValue(BuildInPrefs.DevDanger);\n }\n // current > online,就危险\n if (semverGt(VersionInfo.currentAppVersion, VersionInfo.latestAppVersion)) {\n return true;\n }\n return false;\n },\n\n appVer: () => {\n return VersionInfo.currentAppVersion;\n },\n\n setBundleVer: (bundleVer: string) => {\n if (bundleVer) {\n VersionInfo.currentBundleVersion = semverCoerce(bundleVer).version;\n PrefData.setValue(\n BuildInPrefs.CurrentBundleVersion,\n VersionInfo.currentBundleVersion\n );\n }\n },\n\n bundleVer: () => {\n return VersionInfo.currentBundleVersion;\n },\n\n getReadableVersion: () => {\n return (\n VersionInfo.currentAppVersion +\n (VersionInfo.currentBundleVersion\n ? '(' + VersionInfo.currentBundleVersion + ')'\n : '')\n );\n },\n\n hasNewAppVer: () => {\n // online > current,才有新版本\n if (semverGt(VersionInfo.latestAppVersion, VersionInfo.currentAppVersion)) {\n return true;\n }\n return false;\n },\n\n hasNewBundleVer: () => {\n // latestBundleVersion 如果没命中,则为 0,此时判断为无新 Bundle\n if (\n semverGt(\n VersionInfo.latestBundleVersion,\n VersionInfo.currentBundleVersion\n )\n ) {\n return true;\n }\n return false;\n },\n\n isValidVersion: (minVer?: string, maxVer?: string) => {\n minVer = minVer?.trim();\n maxVer = maxVer?.trim();\n // 确保 cur 处于 [minVer, maxVer)\n if (\n !!minVer &&\n semverGt(semverCoerce(minVer).version, VersionManager.appVer())\n ) {\n return false;\n }\n if (\n !!maxVer &&\n semverGte(VersionManager.appVer(), semverCoerce(maxVer).version)\n ) {\n return false;\n }\n return true;\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["getReadableVersion","semverCoerce","semverGt","semverGte","DevConfig","BuildInPrefs","PrefData","safeCoerce","version","coerced","VersionInfo","currentAppVersion","latestAppVersion","currentBundleVersion","latestBundleVersion","VersionManager","init","_ref","Number","addListenerOnce","getValue","CurrentBundleVersion","isDanger","__DEV__","hasValue","DevDanger","appVer","setBundleVer","bundleVer","setValue","hasNewAppVer","hasNewBundleVer","isValidVersion","minVer","maxVer","_minVer","_maxVer","trim"],"sources":["VersionManager.ts"],"sourcesContent":["import { getReadableVersion } from 'react-native-device-info';\nimport semverCoerce from 'semver/functions/coerce';\nimport semverGt from 'semver/functions/gt';\nimport semverGte from 'semver/functions/gte';\nimport { DevConfig } from './DevConfig';\nimport { BuildInPrefs, PrefData } from './PrefData';\n\n// 辅助函数:安全获取版本\nconst safeCoerce = (version: string) => {\n const coerced = semverCoerce(version);\n return coerced ? coerced.version : '0.0.0';\n};\n\nlet VersionInfo = {\n currentAppVersion: safeCoerce(getReadableVersion()),\n latestAppVersion: safeCoerce(getReadableVersion()),\n currentBundleVersion: 0,\n latestBundleVersion: 0,\n};\n\nexport const VersionManager = {\n init: ({\n latestAppVersion,\n latestBundleVersion,\n }: {\n latestAppVersion: string;\n latestBundleVersion?: string;\n }) => {\n if (latestAppVersion) {\n VersionInfo.latestAppVersion = safeCoerce(latestAppVersion);\n }\n\n if (latestBundleVersion) {\n VersionInfo.latestBundleVersion = Number(latestBundleVersion);\n }\n\n PrefData.addListenerOnce(() => {\n VersionInfo.currentBundleVersion = PrefData.getValue(\n BuildInPrefs.CurrentBundleVersion\n );\n });\n },\n\n isDanger: () => {\n if (__DEV__ && DevConfig.hasValue(BuildInPrefs.DevDanger)) {\n return DevConfig.getValue(BuildInPrefs.DevDanger);\n }\n // current > online,就危险\n return semverGt(\n VersionInfo.currentAppVersion,\n VersionInfo.latestAppVersion\n );\n },\n\n appVer: () => {\n return VersionInfo.currentAppVersion;\n },\n\n setBundleVer: (bundleVer: string) => {\n if (bundleVer) {\n VersionInfo.currentBundleVersion = Number(bundleVer);\n PrefData.setValue(\n BuildInPrefs.CurrentBundleVersion,\n VersionInfo.currentBundleVersion\n );\n }\n },\n\n bundleVer: () => {\n return VersionInfo.currentBundleVersion;\n },\n\n getReadableVersion: () => {\n return (\n VersionInfo.currentAppVersion +\n (VersionInfo.currentBundleVersion\n ? '(' + VersionInfo.currentBundleVersion + ')'\n : '')\n );\n },\n\n hasNewAppVer: () => {\n // online > current,才有新版本\n return semverGt(\n VersionInfo.latestAppVersion,\n VersionInfo.currentAppVersion\n );\n },\n\n hasNewBundleVer: () => {\n // latestBundleVersion 如果没命中,则为 0,此时判断为无新 Bundle\n return VersionInfo.latestBundleVersion > VersionInfo.currentBundleVersion;\n },\n\n isValidVersion: (minVer?: string, maxVer?: string) => {\n minVer = minVer?.trim();\n maxVer = maxVer?.trim();\n // 确保 cur 处于 [minVer, maxVer)\n if (!!minVer && semverGt(safeCoerce(minVer), VersionManager.appVer())) {\n return false;\n }\n if (!!maxVer && semverGte(VersionManager.appVer(), safeCoerce(maxVer))) {\n return false;\n }\n return true;\n },\n};\n"],"mappings":"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"}
@@ -4,7 +4,7 @@ export declare const VersionManager: {
4
4
  latestBundleVersion?: string | undefined;
5
5
  }) => void;
6
6
  isDanger: () => any;
7
- appVer: () => any;
7
+ appVer: () => string;
8
8
  setBundleVer: (bundleVer: string) => void;
9
9
  bundleVer: () => number;
10
10
  getReadableVersion: () => string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@norcy/react-native-toolkit",
3
- "version": "0.1.121",
3
+ "version": "0.1.123",
4
4
  "description": "My Toolkit",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -1,6 +1,5 @@
1
1
  import { Object } from 'leancloud-storage';
2
2
  import { Platform } from 'react-native';
3
- import { getReadableVersion } from 'react-native-device-info';
4
3
  import { ConfigDataModel } from './ConfigDataModel';
5
4
  import { FreConfigType, FrequenceManager } from './Frequence';
6
5
  import { LoginManager, LoginResultDataType } from './LoginManager';
@@ -13,9 +12,6 @@ import { VipManager } from './VipManager';
13
12
  const AV = require('leancloud-storage');
14
13
  const EventEmitter = require('events').EventEmitter;
15
14
  const eventEmitter = new EventEmitter();
16
- const semverGt = require('semver/functions/gt');
17
- const semverGte = require('semver/functions/gte');
18
- const semverCoerce = require('semver/functions/coerce');
19
15
 
20
16
  export interface Message {
21
17
  objectId: string;
@@ -41,18 +37,10 @@ let MyMessages: Message[] = [];
41
37
 
42
38
  const _filterByVersion = (items: Message[]): Message[] => {
43
39
  let ret: Message[] = [];
44
- const curVer = semverCoerce(getReadableVersion()).version;
45
40
  for (const item of items) {
46
- const minVer = item.minVer?.trim();
47
- const maxVer = item.maxVer?.trim();
48
- // 确保 cur 处于 [minVer, maxVer)
49
- if (!!minVer && semverGt(semverCoerce(minVer).version, curVer)) {
41
+ if (!VersionManager.isValidVersion(item.minVer, item.maxVer)) {
50
42
  continue;
51
43
  }
52
- if (!!maxVer && semverGte(curVer, semverCoerce(maxVer).version)) {
53
- continue;
54
- }
55
-
56
44
  ret.push(item);
57
45
  }
58
46
  return ret;
@@ -1,14 +1,19 @@
1
1
  import { getReadableVersion } from 'react-native-device-info';
2
+ import semverCoerce from 'semver/functions/coerce';
3
+ import semverGt from 'semver/functions/gt';
4
+ import semverGte from 'semver/functions/gte';
2
5
  import { DevConfig } from './DevConfig';
3
6
  import { BuildInPrefs, PrefData } from './PrefData';
4
7
 
5
- const semverGt = require('semver/functions/gt');
6
- const semverGte = require('semver/functions/gte');
7
- const semverCoerce = require('semver/functions/coerce');
8
+ // 辅助函数:安全获取版本
9
+ const safeCoerce = (version: string) => {
10
+ const coerced = semverCoerce(version);
11
+ return coerced ? coerced.version : '0.0.0';
12
+ };
8
13
 
9
14
  let VersionInfo = {
10
- currentAppVersion: semverCoerce(getReadableVersion()).version,
11
- latestAppVersion: semverCoerce(getReadableVersion()).version,
15
+ currentAppVersion: safeCoerce(getReadableVersion()),
16
+ latestAppVersion: safeCoerce(getReadableVersion()),
12
17
  currentBundleVersion: 0,
13
18
  latestBundleVersion: 0,
14
19
  };
@@ -22,12 +27,11 @@ export const VersionManager = {
22
27
  latestBundleVersion?: string;
23
28
  }) => {
24
29
  if (latestAppVersion) {
25
- VersionInfo.latestAppVersion = semverCoerce(latestAppVersion).version;
30
+ VersionInfo.latestAppVersion = safeCoerce(latestAppVersion);
26
31
  }
27
32
 
28
33
  if (latestBundleVersion) {
29
- VersionInfo.latestBundleVersion =
30
- semverCoerce(latestBundleVersion).version;
34
+ VersionInfo.latestBundleVersion = Number(latestBundleVersion);
31
35
  }
32
36
 
33
37
  PrefData.addListenerOnce(() => {
@@ -42,10 +46,10 @@ export const VersionManager = {
42
46
  return DevConfig.getValue(BuildInPrefs.DevDanger);
43
47
  }
44
48
  // current > online,就危险
45
- if (semverGt(VersionInfo.currentAppVersion, VersionInfo.latestAppVersion)) {
46
- return true;
47
- }
48
- return false;
49
+ return semverGt(
50
+ VersionInfo.currentAppVersion,
51
+ VersionInfo.latestAppVersion
52
+ );
49
53
  },
50
54
 
51
55
  appVer: () => {
@@ -54,7 +58,7 @@ export const VersionManager = {
54
58
 
55
59
  setBundleVer: (bundleVer: string) => {
56
60
  if (bundleVer) {
57
- VersionInfo.currentBundleVersion = semverCoerce(bundleVer).version;
61
+ VersionInfo.currentBundleVersion = Number(bundleVer);
58
62
  PrefData.setValue(
59
63
  BuildInPrefs.CurrentBundleVersion,
60
64
  VersionInfo.currentBundleVersion
@@ -77,39 +81,25 @@ export const VersionManager = {
77
81
 
78
82
  hasNewAppVer: () => {
79
83
  // online > current,才有新版本
80
- if (semverGt(VersionInfo.latestAppVersion, VersionInfo.currentAppVersion)) {
81
- return true;
82
- }
83
- return false;
84
+ return semverGt(
85
+ VersionInfo.latestAppVersion,
86
+ VersionInfo.currentAppVersion
87
+ );
84
88
  },
85
89
 
86
90
  hasNewBundleVer: () => {
87
91
  // latestBundleVersion 如果没命中,则为 0,此时判断为无新 Bundle
88
- if (
89
- semverGt(
90
- VersionInfo.latestBundleVersion,
91
- VersionInfo.currentBundleVersion
92
- )
93
- ) {
94
- return true;
95
- }
96
- return false;
92
+ return VersionInfo.latestBundleVersion > VersionInfo.currentBundleVersion;
97
93
  },
98
94
 
99
95
  isValidVersion: (minVer?: string, maxVer?: string) => {
100
96
  minVer = minVer?.trim();
101
97
  maxVer = maxVer?.trim();
102
- // 确保 cur 处于 [minVer, maxVer)
103
- if (
104
- !!minVer &&
105
- semverGt(semverCoerce(minVer).version, VersionManager.appVer())
106
- ) {
98
+ // 确保 cur 处于 [minVer, maxVer)
99
+ if (!!minVer && semverGt(safeCoerce(minVer), VersionManager.appVer())) {
107
100
  return false;
108
101
  }
109
- if (
110
- !!maxVer &&
111
- semverGte(VersionManager.appVer(), semverCoerce(maxVer).version)
112
- ) {
102
+ if (!!maxVer && semverGte(VersionManager.appVer(), safeCoerce(maxVer))) {
113
103
  return false;
114
104
  }
115
105
  return true;