@norcy/react-native-toolkit 0.1.119 → 0.1.121

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.
@@ -60,6 +60,11 @@ const BuildInPrefs = exports.BuildInPrefs = {
60
60
  key: 'Vibrate',
61
61
  type: 'bool',
62
62
  default: true
63
+ },
64
+ CurrentBundleVersion: {
65
+ key: 'CurrentBundleVersion',
66
+ type: 'int',
67
+ default: 0
63
68
  }
64
69
  };
65
70
  const getPrefByKey = (Prefs, key) => {
@@ -1 +1 @@
1
- {"version":3,"names":["_asyncStorage","_interopRequireDefault","require","obj","__esModule","default","EventEmitter","eventEmitter","isDataLoaded","_PrefDatas","BuildInPrefs","exports","LastLoginType","key","type","DevVip","DevDanger","FrequenceConfig","Messages","ClearBadge","RegisterInThisDevice","LanguageMode","DisplayMode","Vibrate","getPrefByKey","Prefs","keyOfPref","PrefData","load","initPrefs","console","log","keys","pref","push","values","getMultiDatas","i","length","value","JSON","parse","parseInt","emit","getValue","setValue","finalValue","stringify","toString","storeData","addListener","callback","on","addListenerOnce","once","error","AsyncStorage","setItem","e","multiGet"],"sources":["PrefData.ts"],"sourcesContent":["import AsyncStorage from '@react-native-community/async-storage';\n\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\nlet isDataLoaded = false;\n\nexport interface PrefType {\n key: string;\n type: string;\n default: any;\n}\n\nexport interface PrefsType {\n [key: string]: PrefType;\n}\n\nconst _PrefDatas: { [key: string]: any } = {};\n\nexport const BuildInPrefs: PrefsType = {\n LastLoginType: {\n key: 'LastLoginType_Key',\n type: 'int',\n default: -1,\n },\n DevVip: {\n key: 'DevVip_Key',\n type: 'int',\n default: 0,\n },\n DevDanger: {\n key: 'DevDanger_Key',\n type: 'int',\n default: 0,\n },\n FrequenceConfig: {\n key: 'FrequenceConfig_Key',\n type: 'object',\n default: {},\n },\n Messages: {\n key: 'Message_Key5',\n type: 'array',\n default: [],\n },\n ClearBadge: {\n key: 'BADGE_DATA_KEY_20230307',\n type: 'array',\n default: [],\n },\n RegisterInThisDevice: {\n key: 'RegisterInThisDevice_Key',\n type: 'bool',\n default: false,\n },\n LanguageMode: {\n key: 'Language_MODE_SELECT_KEY',\n type: 'int',\n default: 0,\n },\n DisplayMode: {\n key: 'Display_MODE_SELECT_KEY',\n type: 'int',\n default: 0,\n },\n Vibrate: {\n key: 'Vibrate',\n type: 'bool',\n default: true,\n },\n};\n\nconst getPrefByKey = (Prefs: PrefsType, key: string) => {\n for (const keyOfPref in Prefs) {\n if (Prefs[keyOfPref].key === key) {\n return Prefs[keyOfPref];\n }\n }\n return null;\n};\n\nexport const PrefData = {\n load: async (initPrefs: PrefsType) => {\n console.log('读取配置');\n let keys: string[] = [];\n const Prefs = { ...BuildInPrefs, ...initPrefs };\n for (const pref in Prefs) {\n keys.push(Prefs[pref].key);\n }\n const values = await getMultiDatas(keys);\n\n for (let i = 0; i < values.length; i++) {\n const key = values[i][0];\n const value = values[i][1];\n const pref = getPrefByKey(Prefs, key);\n if (!pref) {\n continue;\n }\n // console.log(key, value, pref);\n if (!value) {\n _PrefDatas[key] = pref.default;\n } else if (pref.type === 'object' || pref.type === 'array') {\n _PrefDatas[key] = JSON.parse(value);\n } else if (pref.type === 'int') {\n _PrefDatas[key] = parseInt(value, 10);\n } else if (pref.type === 'bool') {\n _PrefDatas[key] = JSON.parse(value);\n } else {\n _PrefDatas[key] = value;\n }\n\n // console.log(\n // '配置读取结果:',\n // key,\n // _PrefDatas[key],\n // typeof _PrefDatas[key],\n // );\n }\n\n console.log('读取配置结束');\n isDataLoaded = true;\n eventEmitter.emit('load');\n },\n\n getValue: (pref: PrefType) => {\n return _PrefDatas[pref.key];\n },\n\n setValue: async (pref: PrefType, value: any) => {\n const key = pref.key;\n let finalValue: string;\n _PrefDatas[key] = value;\n if (pref.type === 'object' || pref.type === 'array') {\n finalValue = JSON.stringify(value);\n } else if (pref.type === 'int') {\n finalValue = value.toString();\n } else if (pref.type === 'bool') {\n finalValue = value.toString();\n } else {\n finalValue = value;\n }\n\n await storeData(key, finalValue);\n },\n\n addListener: (callback: Function) => {\n if (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.on('load', callback);\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.once('load', callback);\n },\n};\n\nconst storeData = async (key: string, value: string) => {\n try {\n if (typeof value !== 'string') {\n console.error('只接受 String');\n }\n // console.log('save to storage ' + value);\n await AsyncStorage.setItem(key, value);\n } catch (e) {\n console.error(e);\n }\n};\n\nconst getMultiDatas = async (keys: string[]) => {\n try {\n const values = await AsyncStorage.multiGet(keys);\n // console.log('read from storage ' + values);\n return values;\n } catch (e) {\n console.error(e);\n return [];\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_asyncStorage","_interopRequireDefault","require","obj","__esModule","default","EventEmitter","eventEmitter","isDataLoaded","_PrefDatas","BuildInPrefs","exports","LastLoginType","key","type","DevVip","DevDanger","FrequenceConfig","Messages","ClearBadge","RegisterInThisDevice","LanguageMode","DisplayMode","Vibrate","CurrentBundleVersion","getPrefByKey","Prefs","keyOfPref","PrefData","load","initPrefs","console","log","keys","pref","push","values","getMultiDatas","i","length","value","JSON","parse","parseInt","emit","getValue","setValue","finalValue","stringify","toString","storeData","addListener","callback","on","addListenerOnce","once","error","AsyncStorage","setItem","e","multiGet"],"sources":["PrefData.ts"],"sourcesContent":["import AsyncStorage from '@react-native-community/async-storage';\n\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\nlet isDataLoaded = false;\n\nexport interface PrefType {\n key: string;\n type: string;\n default: any;\n}\n\nexport interface PrefsType {\n [key: string]: PrefType;\n}\n\nconst _PrefDatas: { [key: string]: any } = {};\n\nexport const BuildInPrefs: PrefsType = {\n LastLoginType: {\n key: 'LastLoginType_Key',\n type: 'int',\n default: -1,\n },\n DevVip: {\n key: 'DevVip_Key',\n type: 'int',\n default: 0,\n },\n DevDanger: {\n key: 'DevDanger_Key',\n type: 'int',\n default: 0,\n },\n FrequenceConfig: {\n key: 'FrequenceConfig_Key',\n type: 'object',\n default: {},\n },\n Messages: {\n key: 'Message_Key5',\n type: 'array',\n default: [],\n },\n ClearBadge: {\n key: 'BADGE_DATA_KEY_20230307',\n type: 'array',\n default: [],\n },\n RegisterInThisDevice: {\n key: 'RegisterInThisDevice_Key',\n type: 'bool',\n default: false,\n },\n LanguageMode: {\n key: 'Language_MODE_SELECT_KEY',\n type: 'int',\n default: 0,\n },\n DisplayMode: {\n key: 'Display_MODE_SELECT_KEY',\n type: 'int',\n default: 0,\n },\n Vibrate: {\n key: 'Vibrate',\n type: 'bool',\n default: true,\n },\n CurrentBundleVersion: {\n key: 'CurrentBundleVersion',\n type: 'int',\n default: 0,\n },\n};\n\nconst getPrefByKey = (Prefs: PrefsType, key: string) => {\n for (const keyOfPref in Prefs) {\n if (Prefs[keyOfPref].key === key) {\n return Prefs[keyOfPref];\n }\n }\n return null;\n};\n\nexport const PrefData = {\n load: async (initPrefs: PrefsType) => {\n console.log('读取配置');\n let keys: string[] = [];\n const Prefs = { ...BuildInPrefs, ...initPrefs };\n for (const pref in Prefs) {\n keys.push(Prefs[pref].key);\n }\n const values = await getMultiDatas(keys);\n\n for (let i = 0; i < values.length; i++) {\n const key = values[i][0];\n const value = values[i][1];\n const pref = getPrefByKey(Prefs, key);\n if (!pref) {\n continue;\n }\n // console.log(key, value, pref);\n if (!value) {\n _PrefDatas[key] = pref.default;\n } else if (pref.type === 'object' || pref.type === 'array') {\n _PrefDatas[key] = JSON.parse(value);\n } else if (pref.type === 'int') {\n _PrefDatas[key] = parseInt(value, 10);\n } else if (pref.type === 'bool') {\n _PrefDatas[key] = JSON.parse(value);\n } else {\n _PrefDatas[key] = value;\n }\n\n // console.log(\n // '配置读取结果:',\n // key,\n // _PrefDatas[key],\n // typeof _PrefDatas[key],\n // );\n }\n\n console.log('读取配置结束');\n isDataLoaded = true;\n eventEmitter.emit('load');\n },\n\n getValue: (pref: PrefType) => {\n return _PrefDatas[pref.key];\n },\n\n setValue: async (pref: PrefType, value: any) => {\n const key = pref.key;\n let finalValue: string;\n _PrefDatas[key] = value;\n if (pref.type === 'object' || pref.type === 'array') {\n finalValue = JSON.stringify(value);\n } else if (pref.type === 'int') {\n finalValue = value.toString();\n } else if (pref.type === 'bool') {\n finalValue = value.toString();\n } else {\n finalValue = value;\n }\n\n await storeData(key, finalValue);\n },\n\n addListener: (callback: Function) => {\n if (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.on('load', callback);\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.once('load', callback);\n },\n};\n\nconst storeData = async (key: string, value: string) => {\n try {\n if (typeof value !== 'string') {\n console.error('只接受 String');\n }\n // console.log('save to storage ' + value);\n await AsyncStorage.setItem(key, value);\n } catch (e) {\n console.error(e);\n }\n};\n\nconst getMultiDatas = async (keys: string[]) => {\n try {\n const values = await AsyncStorage.multiGet(keys);\n // console.log('read from storage ' + values);\n return values;\n } catch (e) {\n console.error(e);\n return [];\n }\n};\n"],"mappings":"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"}
@@ -12,10 +12,9 @@ const semverGte = require('semver/functions/gte');
12
12
  const semverCoerce = require('semver/functions/coerce');
13
13
  let VersionInfo = {
14
14
  currentAppVersion: semverCoerce((0, _reactNativeDeviceInfo.getReadableVersion)()).version,
15
- currentBundleVersion: 1,
16
- isDanger: false,
17
- hasNewAppVersion: false,
18
- hasNewBundleVersion: false
15
+ latestAppVersion: semverCoerce((0, _reactNativeDeviceInfo.getReadableVersion)()).version,
16
+ currentBundleVersion: 0,
17
+ latestBundleVersion: 0
19
18
  };
20
19
  const VersionManager = exports.VersionManager = {
21
20
  init: _ref => {
@@ -24,40 +23,53 @@ const VersionManager = exports.VersionManager = {
24
23
  latestBundleVersion
25
24
  } = _ref;
26
25
  if (latestAppVersion) {
27
- const onlineVersion = semverCoerce(latestAppVersion).version;
28
- // online > current,才有新版本
29
- if (semverGt(onlineVersion, VersionInfo.currentAppVersion)) {
30
- VersionInfo.hasNewAppVersion = true;
31
- }
32
- // current > online,就危险
33
- if (semverGt(VersionInfo.currentAppVersion, onlineVersion)) {
34
- VersionInfo.isDanger = true;
35
- }
36
- }
37
- if (__DEV__ && _DevConfig.DevConfig.hasValue(_PrefData.BuildInPrefs.DevDanger)) {
38
- VersionInfo.isDanger = _DevConfig.DevConfig.getValue(_PrefData.BuildInPrefs.DevDanger);
26
+ VersionInfo.latestAppVersion = semverCoerce(latestAppVersion).version;
39
27
  }
40
28
  if (latestBundleVersion) {
41
- const onlineVersion = semverCoerce(latestBundleVersion).version;
42
- if (semverGt(onlineVersion, VersionInfo.currentBundleVersion)) {
43
- VersionInfo.hasNewBundleVersion = true;
44
- }
29
+ VersionInfo.latestBundleVersion = semverCoerce(latestBundleVersion).version;
45
30
  }
31
+ _PrefData.PrefData.addListenerOnce(() => {
32
+ VersionInfo.currentBundleVersion = _PrefData.PrefData.getValue(_PrefData.BuildInPrefs.CurrentBundleVersion);
33
+ });
46
34
  },
47
35
  isDanger: () => {
48
- return VersionInfo.isDanger;
36
+ if (__DEV__ && _DevConfig.DevConfig.hasValue(_PrefData.BuildInPrefs.DevDanger)) {
37
+ return _DevConfig.DevConfig.getValue(_PrefData.BuildInPrefs.DevDanger);
38
+ }
39
+ // current > online,就危险
40
+ if (semverGt(VersionInfo.currentAppVersion, VersionInfo.latestAppVersion)) {
41
+ return true;
42
+ }
43
+ return false;
49
44
  },
50
45
  appVer: () => {
51
46
  return VersionInfo.currentAppVersion;
52
47
  },
48
+ setBundleVer: bundleVer => {
49
+ if (bundleVer) {
50
+ VersionInfo.currentBundleVersion = semverCoerce(bundleVer).version;
51
+ _PrefData.PrefData.setValue(_PrefData.BuildInPrefs.CurrentBundleVersion, VersionInfo.currentBundleVersion);
52
+ }
53
+ },
53
54
  bundleVer: () => {
54
55
  return VersionInfo.currentBundleVersion;
55
56
  },
57
+ getReadableVersion: () => {
58
+ return VersionInfo.currentAppVersion + (VersionInfo.currentBundleVersion ? '(' + VersionInfo.currentBundleVersion + ')' : '');
59
+ },
56
60
  hasNewAppVer: () => {
57
- return VersionInfo.hasNewAppVersion;
61
+ // online > current,才有新版本
62
+ if (semverGt(VersionInfo.latestAppVersion, VersionInfo.currentAppVersion)) {
63
+ return true;
64
+ }
65
+ return false;
58
66
  },
59
67
  hasNewBundleVer: () => {
60
- return VersionInfo.hasNewBundleVersion;
68
+ // latestBundleVersion 如果没命中,则为 0,此时判断为无新 Bundle
69
+ if (semverGt(VersionInfo.latestBundleVersion, VersionInfo.currentBundleVersion)) {
70
+ return true;
71
+ }
72
+ return false;
61
73
  },
62
74
  isValidVersion: (minVer, maxVer) => {
63
75
  var _minVer, _maxVer;
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeDeviceInfo","require","_DevConfig","_PrefData","semverGt","semverGte","semverCoerce","VersionInfo","currentAppVersion","getReadableVersion","version","currentBundleVersion","isDanger","hasNewAppVersion","hasNewBundleVersion","VersionManager","exports","init","_ref","latestAppVersion","latestBundleVersion","onlineVersion","__DEV__","DevConfig","hasValue","BuildInPrefs","DevDanger","getValue","appVer","bundleVer","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 } 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 currentBundleVersion: 1,\n isDanger: false,\n hasNewAppVersion: false,\n hasNewBundleVersion: false,\n};\n\nexport const VersionManager = {\n init: ({\n latestAppVersion,\n latestBundleVersion,\n }: {\n latestAppVersion: string;\n latestBundleVersion?: string;\n }) => {\n if (latestAppVersion) {\n const onlineVersion = semverCoerce(latestAppVersion).version;\n // online > current,才有新版本\n if (semverGt(onlineVersion, VersionInfo.currentAppVersion)) {\n VersionInfo.hasNewAppVersion = true;\n }\n // current > online,就危险\n if (semverGt(VersionInfo.currentAppVersion, onlineVersion)) {\n VersionInfo.isDanger = true;\n }\n }\n\n if (__DEV__ && DevConfig.hasValue(BuildInPrefs.DevDanger)) {\n VersionInfo.isDanger = DevConfig.getValue(BuildInPrefs.DevDanger);\n }\n\n if (latestBundleVersion) {\n const onlineVersion = semverCoerce(latestBundleVersion).version;\n if (semverGt(onlineVersion, VersionInfo.currentBundleVersion)) {\n VersionInfo.hasNewBundleVersion = true;\n }\n }\n },\n\n isDanger: () => {\n return VersionInfo.isDanger;\n },\n\n appVer: () => {\n return VersionInfo.currentAppVersion;\n },\n\n bundleVer: () => {\n return VersionInfo.currentBundleVersion;\n },\n\n hasNewAppVer: () => {\n return VersionInfo.hasNewAppVersion;\n },\n\n hasNewBundleVer: () => {\n return VersionInfo.hasNewBundleVersion;\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":["_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":"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"}
@@ -53,6 +53,11 @@ export const BuildInPrefs = {
53
53
  key: 'Vibrate',
54
54
  type: 'bool',
55
55
  default: true
56
+ },
57
+ CurrentBundleVersion: {
58
+ key: 'CurrentBundleVersion',
59
+ type: 'int',
60
+ default: 0
56
61
  }
57
62
  };
58
63
  const getPrefByKey = (Prefs, key) => {
@@ -1 +1 @@
1
- {"version":3,"names":["AsyncStorage","EventEmitter","require","eventEmitter","isDataLoaded","_PrefDatas","BuildInPrefs","LastLoginType","key","type","default","DevVip","DevDanger","FrequenceConfig","Messages","ClearBadge","RegisterInThisDevice","LanguageMode","DisplayMode","Vibrate","getPrefByKey","Prefs","keyOfPref","PrefData","load","initPrefs","console","log","keys","pref","push","values","getMultiDatas","i","length","value","JSON","parse","parseInt","emit","getValue","setValue","finalValue","stringify","toString","storeData","addListener","callback","on","addListenerOnce","once","error","setItem","e","multiGet"],"sources":["PrefData.ts"],"sourcesContent":["import AsyncStorage from '@react-native-community/async-storage';\n\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\nlet isDataLoaded = false;\n\nexport interface PrefType {\n key: string;\n type: string;\n default: any;\n}\n\nexport interface PrefsType {\n [key: string]: PrefType;\n}\n\nconst _PrefDatas: { [key: string]: any } = {};\n\nexport const BuildInPrefs: PrefsType = {\n LastLoginType: {\n key: 'LastLoginType_Key',\n type: 'int',\n default: -1,\n },\n DevVip: {\n key: 'DevVip_Key',\n type: 'int',\n default: 0,\n },\n DevDanger: {\n key: 'DevDanger_Key',\n type: 'int',\n default: 0,\n },\n FrequenceConfig: {\n key: 'FrequenceConfig_Key',\n type: 'object',\n default: {},\n },\n Messages: {\n key: 'Message_Key5',\n type: 'array',\n default: [],\n },\n ClearBadge: {\n key: 'BADGE_DATA_KEY_20230307',\n type: 'array',\n default: [],\n },\n RegisterInThisDevice: {\n key: 'RegisterInThisDevice_Key',\n type: 'bool',\n default: false,\n },\n LanguageMode: {\n key: 'Language_MODE_SELECT_KEY',\n type: 'int',\n default: 0,\n },\n DisplayMode: {\n key: 'Display_MODE_SELECT_KEY',\n type: 'int',\n default: 0,\n },\n Vibrate: {\n key: 'Vibrate',\n type: 'bool',\n default: true,\n },\n};\n\nconst getPrefByKey = (Prefs: PrefsType, key: string) => {\n for (const keyOfPref in Prefs) {\n if (Prefs[keyOfPref].key === key) {\n return Prefs[keyOfPref];\n }\n }\n return null;\n};\n\nexport const PrefData = {\n load: async (initPrefs: PrefsType) => {\n console.log('读取配置');\n let keys: string[] = [];\n const Prefs = { ...BuildInPrefs, ...initPrefs };\n for (const pref in Prefs) {\n keys.push(Prefs[pref].key);\n }\n const values = await getMultiDatas(keys);\n\n for (let i = 0; i < values.length; i++) {\n const key = values[i][0];\n const value = values[i][1];\n const pref = getPrefByKey(Prefs, key);\n if (!pref) {\n continue;\n }\n // console.log(key, value, pref);\n if (!value) {\n _PrefDatas[key] = pref.default;\n } else if (pref.type === 'object' || pref.type === 'array') {\n _PrefDatas[key] = JSON.parse(value);\n } else if (pref.type === 'int') {\n _PrefDatas[key] = parseInt(value, 10);\n } else if (pref.type === 'bool') {\n _PrefDatas[key] = JSON.parse(value);\n } else {\n _PrefDatas[key] = value;\n }\n\n // console.log(\n // '配置读取结果:',\n // key,\n // _PrefDatas[key],\n // typeof _PrefDatas[key],\n // );\n }\n\n console.log('读取配置结束');\n isDataLoaded = true;\n eventEmitter.emit('load');\n },\n\n getValue: (pref: PrefType) => {\n return _PrefDatas[pref.key];\n },\n\n setValue: async (pref: PrefType, value: any) => {\n const key = pref.key;\n let finalValue: string;\n _PrefDatas[key] = value;\n if (pref.type === 'object' || pref.type === 'array') {\n finalValue = JSON.stringify(value);\n } else if (pref.type === 'int') {\n finalValue = value.toString();\n } else if (pref.type === 'bool') {\n finalValue = value.toString();\n } else {\n finalValue = value;\n }\n\n await storeData(key, finalValue);\n },\n\n addListener: (callback: Function) => {\n if (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.on('load', callback);\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.once('load', callback);\n },\n};\n\nconst storeData = async (key: string, value: string) => {\n try {\n if (typeof value !== 'string') {\n console.error('只接受 String');\n }\n // console.log('save to storage ' + value);\n await AsyncStorage.setItem(key, value);\n } catch (e) {\n console.error(e);\n }\n};\n\nconst getMultiDatas = async (keys: string[]) => {\n try {\n const values = await AsyncStorage.multiGet(keys);\n // console.log('read from storage ' + values);\n return values;\n } catch (e) {\n console.error(e);\n return [];\n }\n};\n"],"mappings":"AAAA,OAAOA,YAAY,MAAM,uCAAuC;AAEhE,MAAMC,YAAY,GAAGC,OAAO,CAAC,QAAQ,CAAC,CAACD,YAAY;AACnD,MAAME,YAAY,GAAG,IAAIF,YAAY,CAAC,CAAC;AAEvC,IAAIG,YAAY,GAAG,KAAK;AAYxB,MAAMC,UAAkC,GAAG,CAAC,CAAC;AAE7C,OAAO,MAAMC,YAAuB,GAAG;EACrCC,aAAa,EAAE;IACbC,GAAG,EAAE,mBAAmB;IACxBC,IAAI,EAAE,KAAK;IACXC,OAAO,EAAE,CAAC;EACZ,CAAC;EACDC,MAAM,EAAE;IACNH,GAAG,EAAE,YAAY;IACjBC,IAAI,EAAE,KAAK;IACXC,OAAO,EAAE;EACX,CAAC;EACDE,SAAS,EAAE;IACTJ,GAAG,EAAE,eAAe;IACpBC,IAAI,EAAE,KAAK;IACXC,OAAO,EAAE;EACX,CAAC;EACDG,eAAe,EAAE;IACfL,GAAG,EAAE,qBAAqB;IAC1BC,IAAI,EAAE,QAAQ;IACdC,OAAO,EAAE,CAAC;EACZ,CAAC;EACDI,QAAQ,EAAE;IACRN,GAAG,EAAE,cAAc;IACnBC,IAAI,EAAE,OAAO;IACbC,OAAO,EAAE;EACX,CAAC;EACDK,UAAU,EAAE;IACVP,GAAG,EAAE,yBAAyB;IAC9BC,IAAI,EAAE,OAAO;IACbC,OAAO,EAAE;EACX,CAAC;EACDM,oBAAoB,EAAE;IACpBR,GAAG,EAAE,0BAA0B;IAC/BC,IAAI,EAAE,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDO,YAAY,EAAE;IACZT,GAAG,EAAE,0BAA0B;IAC/BC,IAAI,EAAE,KAAK;IACXC,OAAO,EAAE;EACX,CAAC;EACDQ,WAAW,EAAE;IACXV,GAAG,EAAE,yBAAyB;IAC9BC,IAAI,EAAE,KAAK;IACXC,OAAO,EAAE;EACX,CAAC;EACDS,OAAO,EAAE;IACPX,GAAG,EAAE,SAAS;IACdC,IAAI,EAAE,MAAM;IACZC,OAAO,EAAE;EACX;AACF,CAAC;AAED,MAAMU,YAAY,GAAGA,CAACC,KAAgB,EAAEb,GAAW,KAAK;EACtD,KAAK,MAAMc,SAAS,IAAID,KAAK,EAAE;IAC7B,IAAIA,KAAK,CAACC,SAAS,CAAC,CAACd,GAAG,KAAKA,GAAG,EAAE;MAChC,OAAOa,KAAK,CAACC,SAAS,CAAC;IACzB;EACF;EACA,OAAO,IAAI;AACb,CAAC;AAED,OAAO,MAAMC,QAAQ,GAAG;EACtBC,IAAI,EAAE,MAAOC,SAAoB,IAAK;IACpCC,OAAO,CAACC,GAAG,CAAC,MAAM,CAAC;IACnB,IAAIC,IAAc,GAAG,EAAE;IACvB,MAAMP,KAAK,GAAG;MAAE,GAAGf,YAAY;MAAE,GAAGmB;IAAU,CAAC;IAC/C,KAAK,MAAMI,IAAI,IAAIR,KAAK,EAAE;MACxBO,IAAI,CAACE,IAAI,CAACT,KAAK,CAACQ,IAAI,CAAC,CAACrB,GAAG,CAAC;IAC5B;IACA,MAAMuB,MAAM,GAAG,MAAMC,aAAa,CAACJ,IAAI,CAAC;IAExC,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,MAAM,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;MACtC,MAAMzB,GAAG,GAAGuB,MAAM,CAACE,CAAC,CAAC,CAAC,CAAC,CAAC;MACxB,MAAME,KAAK,GAAGJ,MAAM,CAACE,CAAC,CAAC,CAAC,CAAC,CAAC;MAC1B,MAAMJ,IAAI,GAAGT,YAAY,CAACC,KAAK,EAAEb,GAAG,CAAC;MACrC,IAAI,CAACqB,IAAI,EAAE;QACT;MACF;MACA;MACA,IAAI,CAACM,KAAK,EAAE;QACV9B,UAAU,CAACG,GAAG,CAAC,GAAGqB,IAAI,CAACnB,OAAO;MAChC,CAAC,MAAM,IAAImB,IAAI,CAACpB,IAAI,KAAK,QAAQ,IAAIoB,IAAI,CAACpB,IAAI,KAAK,OAAO,EAAE;QAC1DJ,UAAU,CAACG,GAAG,CAAC,GAAG4B,IAAI,CAACC,KAAK,CAACF,KAAK,CAAC;MACrC,CAAC,MAAM,IAAIN,IAAI,CAACpB,IAAI,KAAK,KAAK,EAAE;QAC9BJ,UAAU,CAACG,GAAG,CAAC,GAAG8B,QAAQ,CAACH,KAAK,EAAE,EAAE,CAAC;MACvC,CAAC,MAAM,IAAIN,IAAI,CAACpB,IAAI,KAAK,MAAM,EAAE;QAC/BJ,UAAU,CAACG,GAAG,CAAC,GAAG4B,IAAI,CAACC,KAAK,CAACF,KAAK,CAAC;MACrC,CAAC,MAAM;QACL9B,UAAU,CAACG,GAAG,CAAC,GAAG2B,KAAK;MACzB;;MAEA;MACA;MACA;MACA;MACA;MACA;IACF;;IAEAT,OAAO,CAACC,GAAG,CAAC,QAAQ,CAAC;IACrBvB,YAAY,GAAG,IAAI;IACnBD,YAAY,CAACoC,IAAI,CAAC,MAAM,CAAC;EAC3B,CAAC;EAEDC,QAAQ,EAAGX,IAAc,IAAK;IAC5B,OAAOxB,UAAU,CAACwB,IAAI,CAACrB,GAAG,CAAC;EAC7B,CAAC;EAEDiC,QAAQ,EAAE,MAAAA,CAAOZ,IAAc,EAAEM,KAAU,KAAK;IAC9C,MAAM3B,GAAG,GAAGqB,IAAI,CAACrB,GAAG;IACpB,IAAIkC,UAAkB;IACtBrC,UAAU,CAACG,GAAG,CAAC,GAAG2B,KAAK;IACvB,IAAIN,IAAI,CAACpB,IAAI,KAAK,QAAQ,IAAIoB,IAAI,CAACpB,IAAI,KAAK,OAAO,EAAE;MACnDiC,UAAU,GAAGN,IAAI,CAACO,SAAS,CAACR,KAAK,CAAC;IACpC,CAAC,MAAM,IAAIN,IAAI,CAACpB,IAAI,KAAK,KAAK,EAAE;MAC9BiC,UAAU,GAAGP,KAAK,CAACS,QAAQ,CAAC,CAAC;IAC/B,CAAC,MAAM,IAAIf,IAAI,CAACpB,IAAI,KAAK,MAAM,EAAE;MAC/BiC,UAAU,GAAGP,KAAK,CAACS,QAAQ,CAAC,CAAC;IAC/B,CAAC,MAAM;MACLF,UAAU,GAAGP,KAAK;IACpB;IAEA,MAAMU,SAAS,CAACrC,GAAG,EAAEkC,UAAU,CAAC;EAClC,CAAC;EAEDI,WAAW,EAAGC,QAAkB,IAAK;IACnC,IAAI3C,YAAY,EAAE;MAChB2C,QAAQ,IAAIA,QAAQ,CAAC,CAAC;MACtB;IACF;IACA5C,YAAY,CAAC6C,EAAE,CAAC,MAAM,EAAED,QAAQ,CAAC;EACnC,CAAC;EAEDE,eAAe,EAAGF,QAAkB,IAAK;IACvC,IAAI3C,YAAY,EAAE;MAChB2C,QAAQ,IAAIA,QAAQ,CAAC,CAAC;MACtB;IACF;IACA5C,YAAY,CAAC+C,IAAI,CAAC,MAAM,EAAEH,QAAQ,CAAC;EACrC;AACF,CAAC;AAED,MAAMF,SAAS,GAAG,MAAAA,CAAOrC,GAAW,EAAE2B,KAAa,KAAK;EACtD,IAAI;IACF,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7BT,OAAO,CAACyB,KAAK,CAAC,YAAY,CAAC;IAC7B;IACA;IACA,MAAMnD,YAAY,CAACoD,OAAO,CAAC5C,GAAG,EAAE2B,KAAK,CAAC;EACxC,CAAC,CAAC,OAAOkB,CAAC,EAAE;IACV3B,OAAO,CAACyB,KAAK,CAACE,CAAC,CAAC;EAClB;AACF,CAAC;AAED,MAAMrB,aAAa,GAAG,MAAOJ,IAAc,IAAK;EAC9C,IAAI;IACF,MAAMG,MAAM,GAAG,MAAM/B,YAAY,CAACsD,QAAQ,CAAC1B,IAAI,CAAC;IAChD;IACA,OAAOG,MAAM;EACf,CAAC,CAAC,OAAOsB,CAAC,EAAE;IACV3B,OAAO,CAACyB,KAAK,CAACE,CAAC,CAAC;IAChB,OAAO,EAAE;EACX;AACF,CAAC"}
1
+ {"version":3,"names":["AsyncStorage","EventEmitter","require","eventEmitter","isDataLoaded","_PrefDatas","BuildInPrefs","LastLoginType","key","type","default","DevVip","DevDanger","FrequenceConfig","Messages","ClearBadge","RegisterInThisDevice","LanguageMode","DisplayMode","Vibrate","CurrentBundleVersion","getPrefByKey","Prefs","keyOfPref","PrefData","load","initPrefs","console","log","keys","pref","push","values","getMultiDatas","i","length","value","JSON","parse","parseInt","emit","getValue","setValue","finalValue","stringify","toString","storeData","addListener","callback","on","addListenerOnce","once","error","setItem","e","multiGet"],"sources":["PrefData.ts"],"sourcesContent":["import AsyncStorage from '@react-native-community/async-storage';\n\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\nlet isDataLoaded = false;\n\nexport interface PrefType {\n key: string;\n type: string;\n default: any;\n}\n\nexport interface PrefsType {\n [key: string]: PrefType;\n}\n\nconst _PrefDatas: { [key: string]: any } = {};\n\nexport const BuildInPrefs: PrefsType = {\n LastLoginType: {\n key: 'LastLoginType_Key',\n type: 'int',\n default: -1,\n },\n DevVip: {\n key: 'DevVip_Key',\n type: 'int',\n default: 0,\n },\n DevDanger: {\n key: 'DevDanger_Key',\n type: 'int',\n default: 0,\n },\n FrequenceConfig: {\n key: 'FrequenceConfig_Key',\n type: 'object',\n default: {},\n },\n Messages: {\n key: 'Message_Key5',\n type: 'array',\n default: [],\n },\n ClearBadge: {\n key: 'BADGE_DATA_KEY_20230307',\n type: 'array',\n default: [],\n },\n RegisterInThisDevice: {\n key: 'RegisterInThisDevice_Key',\n type: 'bool',\n default: false,\n },\n LanguageMode: {\n key: 'Language_MODE_SELECT_KEY',\n type: 'int',\n default: 0,\n },\n DisplayMode: {\n key: 'Display_MODE_SELECT_KEY',\n type: 'int',\n default: 0,\n },\n Vibrate: {\n key: 'Vibrate',\n type: 'bool',\n default: true,\n },\n CurrentBundleVersion: {\n key: 'CurrentBundleVersion',\n type: 'int',\n default: 0,\n },\n};\n\nconst getPrefByKey = (Prefs: PrefsType, key: string) => {\n for (const keyOfPref in Prefs) {\n if (Prefs[keyOfPref].key === key) {\n return Prefs[keyOfPref];\n }\n }\n return null;\n};\n\nexport const PrefData = {\n load: async (initPrefs: PrefsType) => {\n console.log('读取配置');\n let keys: string[] = [];\n const Prefs = { ...BuildInPrefs, ...initPrefs };\n for (const pref in Prefs) {\n keys.push(Prefs[pref].key);\n }\n const values = await getMultiDatas(keys);\n\n for (let i = 0; i < values.length; i++) {\n const key = values[i][0];\n const value = values[i][1];\n const pref = getPrefByKey(Prefs, key);\n if (!pref) {\n continue;\n }\n // console.log(key, value, pref);\n if (!value) {\n _PrefDatas[key] = pref.default;\n } else if (pref.type === 'object' || pref.type === 'array') {\n _PrefDatas[key] = JSON.parse(value);\n } else if (pref.type === 'int') {\n _PrefDatas[key] = parseInt(value, 10);\n } else if (pref.type === 'bool') {\n _PrefDatas[key] = JSON.parse(value);\n } else {\n _PrefDatas[key] = value;\n }\n\n // console.log(\n // '配置读取结果:',\n // key,\n // _PrefDatas[key],\n // typeof _PrefDatas[key],\n // );\n }\n\n console.log('读取配置结束');\n isDataLoaded = true;\n eventEmitter.emit('load');\n },\n\n getValue: (pref: PrefType) => {\n return _PrefDatas[pref.key];\n },\n\n setValue: async (pref: PrefType, value: any) => {\n const key = pref.key;\n let finalValue: string;\n _PrefDatas[key] = value;\n if (pref.type === 'object' || pref.type === 'array') {\n finalValue = JSON.stringify(value);\n } else if (pref.type === 'int') {\n finalValue = value.toString();\n } else if (pref.type === 'bool') {\n finalValue = value.toString();\n } else {\n finalValue = value;\n }\n\n await storeData(key, finalValue);\n },\n\n addListener: (callback: Function) => {\n if (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.on('load', callback);\n },\n\n addListenerOnce: (callback: Function) => {\n if (isDataLoaded) {\n callback && callback();\n return;\n }\n eventEmitter.once('load', callback);\n },\n};\n\nconst storeData = async (key: string, value: string) => {\n try {\n if (typeof value !== 'string') {\n console.error('只接受 String');\n }\n // console.log('save to storage ' + value);\n await AsyncStorage.setItem(key, value);\n } catch (e) {\n console.error(e);\n }\n};\n\nconst getMultiDatas = async (keys: string[]) => {\n try {\n const values = await AsyncStorage.multiGet(keys);\n // console.log('read from storage ' + values);\n return values;\n } catch (e) {\n console.error(e);\n return [];\n }\n};\n"],"mappings":"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"}
@@ -1,15 +1,14 @@
1
1
  import { getReadableVersion } from 'react-native-device-info';
2
2
  import { DevConfig } from './DevConfig';
3
- import { BuildInPrefs } from './PrefData';
3
+ import { BuildInPrefs, PrefData } from './PrefData';
4
4
  const semverGt = require('semver/functions/gt');
5
5
  const semverGte = require('semver/functions/gte');
6
6
  const semverCoerce = require('semver/functions/coerce');
7
7
  let VersionInfo = {
8
8
  currentAppVersion: semverCoerce(getReadableVersion()).version,
9
- currentBundleVersion: 1,
10
- isDanger: false,
11
- hasNewAppVersion: false,
12
- hasNewBundleVersion: false
9
+ latestAppVersion: semverCoerce(getReadableVersion()).version,
10
+ currentBundleVersion: 0,
11
+ latestBundleVersion: 0
13
12
  };
14
13
  export const VersionManager = {
15
14
  init: _ref => {
@@ -18,40 +17,53 @@ export const VersionManager = {
18
17
  latestBundleVersion
19
18
  } = _ref;
20
19
  if (latestAppVersion) {
21
- const onlineVersion = semverCoerce(latestAppVersion).version;
22
- // online > current,才有新版本
23
- if (semverGt(onlineVersion, VersionInfo.currentAppVersion)) {
24
- VersionInfo.hasNewAppVersion = true;
25
- }
26
- // current > online,就危险
27
- if (semverGt(VersionInfo.currentAppVersion, onlineVersion)) {
28
- VersionInfo.isDanger = true;
29
- }
30
- }
31
- if (__DEV__ && DevConfig.hasValue(BuildInPrefs.DevDanger)) {
32
- VersionInfo.isDanger = DevConfig.getValue(BuildInPrefs.DevDanger);
20
+ VersionInfo.latestAppVersion = semverCoerce(latestAppVersion).version;
33
21
  }
34
22
  if (latestBundleVersion) {
35
- const onlineVersion = semverCoerce(latestBundleVersion).version;
36
- if (semverGt(onlineVersion, VersionInfo.currentBundleVersion)) {
37
- VersionInfo.hasNewBundleVersion = true;
38
- }
23
+ VersionInfo.latestBundleVersion = semverCoerce(latestBundleVersion).version;
39
24
  }
25
+ PrefData.addListenerOnce(() => {
26
+ VersionInfo.currentBundleVersion = PrefData.getValue(BuildInPrefs.CurrentBundleVersion);
27
+ });
40
28
  },
41
29
  isDanger: () => {
42
- return VersionInfo.isDanger;
30
+ if (__DEV__ && DevConfig.hasValue(BuildInPrefs.DevDanger)) {
31
+ return DevConfig.getValue(BuildInPrefs.DevDanger);
32
+ }
33
+ // current > online,就危险
34
+ if (semverGt(VersionInfo.currentAppVersion, VersionInfo.latestAppVersion)) {
35
+ return true;
36
+ }
37
+ return false;
43
38
  },
44
39
  appVer: () => {
45
40
  return VersionInfo.currentAppVersion;
46
41
  },
42
+ setBundleVer: bundleVer => {
43
+ if (bundleVer) {
44
+ VersionInfo.currentBundleVersion = semverCoerce(bundleVer).version;
45
+ PrefData.setValue(BuildInPrefs.CurrentBundleVersion, VersionInfo.currentBundleVersion);
46
+ }
47
+ },
47
48
  bundleVer: () => {
48
49
  return VersionInfo.currentBundleVersion;
49
50
  },
51
+ getReadableVersion: () => {
52
+ return VersionInfo.currentAppVersion + (VersionInfo.currentBundleVersion ? '(' + VersionInfo.currentBundleVersion + ')' : '');
53
+ },
50
54
  hasNewAppVer: () => {
51
- return VersionInfo.hasNewAppVersion;
55
+ // online > current,才有新版本
56
+ if (semverGt(VersionInfo.latestAppVersion, VersionInfo.currentAppVersion)) {
57
+ return true;
58
+ }
59
+ return false;
52
60
  },
53
61
  hasNewBundleVer: () => {
54
- return VersionInfo.hasNewBundleVersion;
62
+ // latestBundleVersion 如果没命中,则为 0,此时判断为无新 Bundle
63
+ if (semverGt(VersionInfo.latestBundleVersion, VersionInfo.currentBundleVersion)) {
64
+ return true;
65
+ }
66
+ return false;
55
67
  },
56
68
  isValidVersion: (minVer, maxVer) => {
57
69
  var _minVer, _maxVer;
@@ -1 +1 @@
1
- {"version":3,"names":["getReadableVersion","DevConfig","BuildInPrefs","semverGt","require","semverGte","semverCoerce","VersionInfo","currentAppVersion","version","currentBundleVersion","isDanger","hasNewAppVersion","hasNewBundleVersion","VersionManager","init","_ref","latestAppVersion","latestBundleVersion","onlineVersion","__DEV__","hasValue","DevDanger","getValue","appVer","bundleVer","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 } 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 currentBundleVersion: 1,\n isDanger: false,\n hasNewAppVersion: false,\n hasNewBundleVersion: false,\n};\n\nexport const VersionManager = {\n init: ({\n latestAppVersion,\n latestBundleVersion,\n }: {\n latestAppVersion: string;\n latestBundleVersion?: string;\n }) => {\n if (latestAppVersion) {\n const onlineVersion = semverCoerce(latestAppVersion).version;\n // online > current,才有新版本\n if (semverGt(onlineVersion, VersionInfo.currentAppVersion)) {\n VersionInfo.hasNewAppVersion = true;\n }\n // current > online,就危险\n if (semverGt(VersionInfo.currentAppVersion, onlineVersion)) {\n VersionInfo.isDanger = true;\n }\n }\n\n if (__DEV__ && DevConfig.hasValue(BuildInPrefs.DevDanger)) {\n VersionInfo.isDanger = DevConfig.getValue(BuildInPrefs.DevDanger);\n }\n\n if (latestBundleVersion) {\n const onlineVersion = semverCoerce(latestBundleVersion).version;\n if (semverGt(onlineVersion, VersionInfo.currentBundleVersion)) {\n VersionInfo.hasNewBundleVersion = true;\n }\n }\n },\n\n isDanger: () => {\n return VersionInfo.isDanger;\n },\n\n appVer: () => {\n return VersionInfo.currentAppVersion;\n },\n\n bundleVer: () => {\n return VersionInfo.currentBundleVersion;\n },\n\n hasNewAppVer: () => {\n return VersionInfo.hasNewAppVersion;\n },\n\n hasNewBundleVer: () => {\n return VersionInfo.hasNewBundleVersion;\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","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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"}
@@ -3,9 +3,11 @@ export declare const VersionManager: {
3
3
  latestAppVersion: string;
4
4
  latestBundleVersion?: string | undefined;
5
5
  }) => void;
6
- isDanger: () => boolean;
6
+ isDanger: () => any;
7
7
  appVer: () => any;
8
+ setBundleVer: (bundleVer: string) => void;
8
9
  bundleVer: () => number;
10
+ getReadableVersion: () => string;
9
11
  hasNewAppVer: () => boolean;
10
12
  hasNewBundleVer: () => boolean;
11
13
  isValidVersion: (minVer?: string, maxVer?: string) => boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@norcy/react-native-toolkit",
3
- "version": "0.1.119",
3
+ "version": "0.1.121",
4
4
  "description": "My Toolkit",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
package/src/PrefData.ts CHANGED
@@ -68,6 +68,11 @@ export const BuildInPrefs: PrefsType = {
68
68
  type: 'bool',
69
69
  default: true,
70
70
  },
71
+ CurrentBundleVersion: {
72
+ key: 'CurrentBundleVersion',
73
+ type: 'int',
74
+ default: 0,
75
+ },
71
76
  };
72
77
 
73
78
  const getPrefByKey = (Prefs: PrefsType, key: string) => {
@@ -1,6 +1,6 @@
1
1
  import { getReadableVersion } from 'react-native-device-info';
2
2
  import { DevConfig } from './DevConfig';
3
- import { BuildInPrefs } from './PrefData';
3
+ import { BuildInPrefs, PrefData } from './PrefData';
4
4
 
5
5
  const semverGt = require('semver/functions/gt');
6
6
  const semverGte = require('semver/functions/gte');
@@ -8,10 +8,9 @@ const semverCoerce = require('semver/functions/coerce');
8
8
 
9
9
  let VersionInfo = {
10
10
  currentAppVersion: semverCoerce(getReadableVersion()).version,
11
- currentBundleVersion: 1,
12
- isDanger: false,
13
- hasNewAppVersion: false,
14
- hasNewBundleVersion: false,
11
+ latestAppVersion: semverCoerce(getReadableVersion()).version,
12
+ currentBundleVersion: 0,
13
+ latestBundleVersion: 0,
15
14
  };
16
15
 
17
16
  export const VersionManager = {
@@ -23,47 +22,78 @@ export const VersionManager = {
23
22
  latestBundleVersion?: string;
24
23
  }) => {
25
24
  if (latestAppVersion) {
26
- const onlineVersion = semverCoerce(latestAppVersion).version;
27
- // online > current,才有新版本
28
- if (semverGt(onlineVersion, VersionInfo.currentAppVersion)) {
29
- VersionInfo.hasNewAppVersion = true;
30
- }
31
- // current > online,就危险
32
- if (semverGt(VersionInfo.currentAppVersion, onlineVersion)) {
33
- VersionInfo.isDanger = true;
34
- }
35
- }
36
-
37
- if (__DEV__ && DevConfig.hasValue(BuildInPrefs.DevDanger)) {
38
- VersionInfo.isDanger = DevConfig.getValue(BuildInPrefs.DevDanger);
25
+ VersionInfo.latestAppVersion = semverCoerce(latestAppVersion).version;
39
26
  }
40
27
 
41
28
  if (latestBundleVersion) {
42
- const onlineVersion = semverCoerce(latestBundleVersion).version;
43
- if (semverGt(onlineVersion, VersionInfo.currentBundleVersion)) {
44
- VersionInfo.hasNewBundleVersion = true;
45
- }
29
+ VersionInfo.latestBundleVersion =
30
+ semverCoerce(latestBundleVersion).version;
46
31
  }
32
+
33
+ PrefData.addListenerOnce(() => {
34
+ VersionInfo.currentBundleVersion = PrefData.getValue(
35
+ BuildInPrefs.CurrentBundleVersion
36
+ );
37
+ });
47
38
  },
48
39
 
49
40
  isDanger: () => {
50
- return VersionInfo.isDanger;
41
+ if (__DEV__ && DevConfig.hasValue(BuildInPrefs.DevDanger)) {
42
+ return DevConfig.getValue(BuildInPrefs.DevDanger);
43
+ }
44
+ // current > online,就危险
45
+ if (semverGt(VersionInfo.currentAppVersion, VersionInfo.latestAppVersion)) {
46
+ return true;
47
+ }
48
+ return false;
51
49
  },
52
50
 
53
51
  appVer: () => {
54
52
  return VersionInfo.currentAppVersion;
55
53
  },
56
54
 
55
+ setBundleVer: (bundleVer: string) => {
56
+ if (bundleVer) {
57
+ VersionInfo.currentBundleVersion = semverCoerce(bundleVer).version;
58
+ PrefData.setValue(
59
+ BuildInPrefs.CurrentBundleVersion,
60
+ VersionInfo.currentBundleVersion
61
+ );
62
+ }
63
+ },
64
+
57
65
  bundleVer: () => {
58
66
  return VersionInfo.currentBundleVersion;
59
67
  },
60
68
 
69
+ getReadableVersion: () => {
70
+ return (
71
+ VersionInfo.currentAppVersion +
72
+ (VersionInfo.currentBundleVersion
73
+ ? '(' + VersionInfo.currentBundleVersion + ')'
74
+ : '')
75
+ );
76
+ },
77
+
61
78
  hasNewAppVer: () => {
62
- return VersionInfo.hasNewAppVersion;
79
+ // online > current,才有新版本
80
+ if (semverGt(VersionInfo.latestAppVersion, VersionInfo.currentAppVersion)) {
81
+ return true;
82
+ }
83
+ return false;
63
84
  },
64
85
 
65
86
  hasNewBundleVer: () => {
66
- return VersionInfo.hasNewBundleVersion;
87
+ // latestBundleVersion 如果没命中,则为 0,此时判断为无新 Bundle
88
+ if (
89
+ semverGt(
90
+ VersionInfo.latestBundleVersion,
91
+ VersionInfo.currentBundleVersion
92
+ )
93
+ ) {
94
+ return true;
95
+ }
96
+ return false;
67
97
  },
68
98
 
69
99
  isValidVersion: (minVer?: string, maxVer?: string) => {