@norcy/react-native-toolkit 0.1.123 → 0.1.125
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.DS_Store +0 -0
- package/.vscode/settings.json +9 -0
- package/{cocoa_plugins/cocoapods-rn-toolkit/lib → ios}/.DS_Store +0 -0
- package/ios/ReactNativeToolkit.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
- package/lib/commonjs/ConfigDataModel.js +4 -1
- package/lib/commonjs/ConfigDataModel.js.map +1 -1
- package/lib/module/ConfigDataModel.js +4 -1
- package/lib/module/ConfigDataModel.js.map +1 -1
- package/package.json +1 -1
- package/{cocoa_plugins/cocoapods-rn-toolkit/lib/cocoapods-rn-toolkit → src}/.DS_Store +0 -0
- package/src/ConfigDataModel.ts +7 -1
- package/yarn-error.log +11644 -0
- package/cocoa_plugins/.DS_Store +0 -0
- package/cocoa_plugins/cocoapods-rn-toolkit/.DS_Store +0 -0
package/.DS_Store
CHANGED
Binary file
|
Binary file
|
@@ -36,7 +36,7 @@ const _updateKeyValues = items => {
|
|
36
36
|
const handleVersionInfo = () => {
|
37
37
|
_VersionManager.VersionManager.init({
|
38
38
|
latestAppVersion: ConfigDataModel.get(_reactNative.Platform.OS === 'android' ? 'aov' : 'ov'),
|
39
|
-
latestBundleVersion: ConfigDataModel.get('bov')
|
39
|
+
latestBundleVersion: ConfigDataModel.get(_reactNative.Platform.OS === 'android' ? 'abov' : 'bov')
|
40
40
|
});
|
41
41
|
};
|
42
42
|
let isDataReady = false;
|
@@ -73,6 +73,9 @@ const ConfigDataModel = exports.ConfigDataModel = {
|
|
73
73
|
ConfigDataModel.fetch();
|
74
74
|
}
|
75
75
|
});
|
76
|
+
|
77
|
+
// 防止 Config 太慢,而 Vip 页面却已经打开导致无商品的问题
|
78
|
+
_VipAndroidManager.VipAndroidManager.setOfferings(ConfigDataModel.get('vip_android_offerings'));
|
76
79
|
ConfigDataModel.fetch();
|
77
80
|
},
|
78
81
|
fetch: () => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_LoginManager","_Notification","_VersionManager","_VipAndroidManager","EventEmitter","eventEmitter","MyItems","AV","_filterByVersion","items","ret","item","VersionManager","isValidVersion","get","push","_updateKeyValues","value","trim","handleVersionInfo","init","latestAppVersion","ConfigDataModel","Platform","OS","latestBundleVersion","isDataReady","isNetwordDataReady","_handleResponse","OnlineItems","console","log","VipAndroidManager","setOfferings","emitChange","exports","defaultValues","Notification","addListener","_ref","isAuto","user","error","fetch","query","Query","equalTo","find","then","catch","e","key","emit","addListenerOnce","callback","once","on","shouldEnableByRate","enable","rate","_LoginManager$current","_LoginManager$current2","r","lastChar","LoginManager","currentUser","AVUser","slice","indexOf","toLowerCase"],"sources":["ConfigDataModel.ts"],"sourcesContent":["import { Object } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { LoginManager, LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { VersionManager } from './VersionManager';\nimport { VipAndroidManager } from './VipAndroidManager';\n\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\nexport interface ConfigsType {\n [key: string]: any;\n}\nlet MyItems: ConfigsType = {};\n\nconst AV = require('leancloud-storage');\n\nconst _filterByVersion = (items: Object[]) => {\n let ret = [];\n for (const item of items) {\n if (\n !VersionManager.isValidVersion(item.get('minVer'), item.get('maxVer'))\n ) {\n continue;\n }\n ret.push(item);\n }\n return ret;\n};\n\nconst _updateKeyValues = (items: Object[]) => {\n for (const item of items) {\n let value = item.get('value');\n if (typeof value === 'string') {\n // 因为 leancloud 无法配置空白内容,所以 trim 下,这样就能以空格代替空白{\n value = value.trim();\n }\n MyItems[item.get('key')] = value;\n }\n};\n\nconst handleVersionInfo = () => {\n VersionManager.init({\n latestAppVersion: ConfigDataModel.get(\n Platform.OS === 'android' ? 'aov' : 'ov'\n ),\n latestBundleVersion: ConfigDataModel.get('bov'),\n });\n};\n\nlet isDataReady = false;\nlet isNetwordDataReady = false;\n\nconst _handleResponse = (OnlineItems: Object[]) => {\n if (!isNetwordDataReady) {\n return;\n }\n\n // 根据版本过滤\n let items = _filterByVersion(OnlineItems);\n _updateKeyValues(items);\n // 处理 Version 信息\n handleVersionInfo();\n console.log('Config 处理完毕');\n isDataReady = true;\n VipAndroidManager.setOfferings(ConfigDataModel.get('vip_android_offerings'));\n ConfigDataModel.emitChange();\n};\n\n// ConfigDataModel 的 Config 是支持后台配置多条同一个 Key 的,按版本区分\nconst ConfigDataModel = {\n init: (defaultValues: ConfigsType) => {\n MyItems = defaultValues;\n\n Notification.addListener(\n 'onLogin',\n ({ isAuto, user, error }: LoginResultDataType) => {\n if (!isAuto && user && !error) {\n isDataReady = false;\n isNetwordDataReady = false;\n ConfigDataModel.fetch();\n }\n }\n );\n\n ConfigDataModel.fetch();\n },\n\n fetch: () => {\n // 确保可重入,但如果网络一直出错的话,每次调用都会一直发\n if (isNetwordDataReady) {\n return;\n }\n\n const query = new AV.Query('Configs');\n query.equalTo('valid', true).equalTo(Platform.OS, true);\n query\n .find()\n .then((items: Object[]) => {\n console.log('Config 抓取完毕');\n isNetwordDataReady = true;\n _handleResponse(items);\n })\n .catch((e: any) => {\n console.error(e);\n });\n },\n\n get: (key: string) => {\n return MyItems[key];\n },\n\n emitChange: () => {\n eventEmitter.emit('change');\n },\n\n addListenerOnce: (callback: Function) => {\n if (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;\n }\n eventEmitter.on('change', callback);\n },\n\n shouldEnableByRate: (enable?: boolean, rate?: number) => {\n if (!enable) {\n return false;\n }\n // rate 不传,默认为全量\n const r = rate ?? 1;\n if (r <= 0) {\n return false;\n }\n // ID 最后一位是 16 进制(0-f),未登录默认为全量\n const lastChar =\n LoginManager.currentUser()?.AVUser?.get('objectId')?.slice(-1) ?? '0';\n return '0123456789abcdef'.indexOf(lastChar.toLowerCase()) < r * 16;\n },\n};\n\nexport { ConfigDataModel };\n"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AACA,IAAAI,kBAAA,GAAAJ,OAAA;AAEA,MAAMK,YAAY,GAAGL,OAAO,CAAC,QAAQ,CAAC,CAACK,YAAY;AACnD,MAAMC,YAAY,GAAG,IAAID,YAAY,CAAC,CAAC;AAKvC,IAAIE,OAAoB,GAAG,CAAC,CAAC;AAE7B,MAAMC,EAAE,GAAGR,OAAO,CAAC,mBAAmB,CAAC;AAEvC,MAAMS,gBAAgB,GAAIC,KAAe,IAAK;EAC5C,IAAIC,GAAG,GAAG,EAAE;EACZ,KAAK,MAAMC,IAAI,IAAIF,KAAK,EAAE;IACxB,IACE,CAACG,8BAAc,CAACC,cAAc,CAACF,IAAI,CAACG,GAAG,CAAC,QAAQ,CAAC,EAAEH,IAAI,CAACG,GAAG,CAAC,QAAQ,CAAC,CAAC,EACtE;MACA;IACF;IACAJ,GAAG,CAACK,IAAI,CAACJ,IAAI,CAAC;EAChB;EACA,OAAOD,GAAG;AACZ,CAAC;AAED,MAAMM,gBAAgB,GAAIP,KAAe,IAAK;EAC5C,KAAK,MAAME,IAAI,IAAIF,KAAK,EAAE;IACxB,IAAIQ,KAAK,GAAGN,IAAI,CAACG,GAAG,CAAC,OAAO,CAAC;IAC7B,IAAI,OAAOG,KAAK,KAAK,QAAQ,EAAE;MAC7B;MACAA,KAAK,GAAGA,KAAK,CAACC,IAAI,CAAC,CAAC;IACtB;IACAZ,OAAO,CAACK,IAAI,CAACG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAGG,KAAK;EAClC;AACF,CAAC;AAED,MAAME,iBAAiB,GAAGA,CAAA,KAAM;EAC9BP,8BAAc,CAACQ,IAAI,CAAC;IAClBC,gBAAgB,EAAEC,eAAe,CAACR,GAAG,CACnCS,qBAAQ,CAACC,EAAE,KAAK,SAAS,GAAG,KAAK,GAAG,IACtC,CAAC;IACDC,mBAAmB,EAAEH,eAAe,CAACR,GAAG,
|
1
|
+
{"version":3,"names":["_reactNative","require","_LoginManager","_Notification","_VersionManager","_VipAndroidManager","EventEmitter","eventEmitter","MyItems","AV","_filterByVersion","items","ret","item","VersionManager","isValidVersion","get","push","_updateKeyValues","value","trim","handleVersionInfo","init","latestAppVersion","ConfigDataModel","Platform","OS","latestBundleVersion","isDataReady","isNetwordDataReady","_handleResponse","OnlineItems","console","log","VipAndroidManager","setOfferings","emitChange","exports","defaultValues","Notification","addListener","_ref","isAuto","user","error","fetch","query","Query","equalTo","find","then","catch","e","key","emit","addListenerOnce","callback","once","on","shouldEnableByRate","enable","rate","_LoginManager$current","_LoginManager$current2","r","lastChar","LoginManager","currentUser","AVUser","slice","indexOf","toLowerCase"],"sources":["ConfigDataModel.ts"],"sourcesContent":["import { Object } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { LoginManager, LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { VersionManager } from './VersionManager';\nimport { VipAndroidManager } from './VipAndroidManager';\n\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\nexport interface ConfigsType {\n [key: string]: any;\n}\nlet MyItems: ConfigsType = {};\n\nconst AV = require('leancloud-storage');\n\nconst _filterByVersion = (items: Object[]) => {\n let ret = [];\n for (const item of items) {\n if (\n !VersionManager.isValidVersion(item.get('minVer'), item.get('maxVer'))\n ) {\n continue;\n }\n ret.push(item);\n }\n return ret;\n};\n\nconst _updateKeyValues = (items: Object[]) => {\n for (const item of items) {\n let value = item.get('value');\n if (typeof value === 'string') {\n // 因为 leancloud 无法配置空白内容,所以 trim 下,这样就能以空格代替空白{\n value = value.trim();\n }\n MyItems[item.get('key')] = value;\n }\n};\n\nconst handleVersionInfo = () => {\n VersionManager.init({\n latestAppVersion: ConfigDataModel.get(\n Platform.OS === 'android' ? 'aov' : 'ov'\n ),\n latestBundleVersion: ConfigDataModel.get(\n Platform.OS === 'android' ? 'abov' : 'bov'\n ),\n });\n};\n\nlet isDataReady = false;\nlet isNetwordDataReady = false;\n\nconst _handleResponse = (OnlineItems: Object[]) => {\n if (!isNetwordDataReady) {\n return;\n }\n\n // 根据版本过滤\n let items = _filterByVersion(OnlineItems);\n _updateKeyValues(items);\n // 处理 Version 信息\n handleVersionInfo();\n console.log('Config 处理完毕');\n isDataReady = true;\n VipAndroidManager.setOfferings(ConfigDataModel.get('vip_android_offerings'));\n ConfigDataModel.emitChange();\n};\n\n// ConfigDataModel 的 Config 是支持后台配置多条同一个 Key 的,按版本区分\nconst ConfigDataModel = {\n init: (defaultValues: ConfigsType) => {\n MyItems = defaultValues;\n\n Notification.addListener(\n 'onLogin',\n ({ isAuto, user, error }: LoginResultDataType) => {\n if (!isAuto && user && !error) {\n isDataReady = false;\n isNetwordDataReady = false;\n ConfigDataModel.fetch();\n }\n }\n );\n\n // 防止 Config 太慢,而 Vip 页面却已经打开导致无商品的问题\n VipAndroidManager.setOfferings(\n ConfigDataModel.get('vip_android_offerings')\n );\n ConfigDataModel.fetch();\n },\n\n fetch: () => {\n // 确保可重入,但如果网络一直出错的话,每次调用都会一直发\n if (isNetwordDataReady) {\n return;\n }\n\n const query = new AV.Query('Configs');\n query.equalTo('valid', true).equalTo(Platform.OS, true);\n query\n .find()\n .then((items: Object[]) => {\n console.log('Config 抓取完毕');\n isNetwordDataReady = true;\n _handleResponse(items);\n })\n .catch((e: any) => {\n console.error(e);\n });\n },\n\n get: (key: string) => {\n return MyItems[key];\n },\n\n emitChange: () => {\n eventEmitter.emit('change');\n },\n\n addListenerOnce: (callback: Function) => {\n if (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;\n }\n eventEmitter.on('change', callback);\n },\n\n shouldEnableByRate: (enable?: boolean, rate?: number) => {\n if (!enable) {\n return false;\n }\n // rate 不传,默认为全量\n const r = rate ?? 1;\n if (r <= 0) {\n return false;\n }\n // ID 最后一位是 16 进制(0-f),未登录默认为全量\n const lastChar =\n LoginManager.currentUser()?.AVUser?.get('objectId')?.slice(-1) ?? '0';\n return '0123456789abcdef'.indexOf(lastChar.toLowerCase()) < r * 16;\n },\n};\n\nexport { ConfigDataModel };\n"],"mappings":"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"}
|
@@ -30,7 +30,7 @@ const _updateKeyValues = items => {
|
|
30
30
|
const handleVersionInfo = () => {
|
31
31
|
VersionManager.init({
|
32
32
|
latestAppVersion: ConfigDataModel.get(Platform.OS === 'android' ? 'aov' : 'ov'),
|
33
|
-
latestBundleVersion: ConfigDataModel.get('bov')
|
33
|
+
latestBundleVersion: ConfigDataModel.get(Platform.OS === 'android' ? 'abov' : 'bov')
|
34
34
|
});
|
35
35
|
};
|
36
36
|
let isDataReady = false;
|
@@ -67,6 +67,9 @@ const ConfigDataModel = {
|
|
67
67
|
ConfigDataModel.fetch();
|
68
68
|
}
|
69
69
|
});
|
70
|
+
|
71
|
+
// 防止 Config 太慢,而 Vip 页面却已经打开导致无商品的问题
|
72
|
+
VipAndroidManager.setOfferings(ConfigDataModel.get('vip_android_offerings'));
|
70
73
|
ConfigDataModel.fetch();
|
71
74
|
},
|
72
75
|
fetch: () => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["Platform","LoginManager","Notification","VersionManager","VipAndroidManager","EventEmitter","require","eventEmitter","MyItems","AV","_filterByVersion","items","ret","item","isValidVersion","get","push","_updateKeyValues","value","trim","handleVersionInfo","init","latestAppVersion","ConfigDataModel","OS","latestBundleVersion","isDataReady","isNetwordDataReady","_handleResponse","OnlineItems","console","log","setOfferings","emitChange","defaultValues","addListener","_ref","isAuto","user","error","fetch","query","Query","equalTo","find","then","catch","e","key","emit","addListenerOnce","callback","once","on","shouldEnableByRate","enable","rate","_LoginManager$current","_LoginManager$current2","r","lastChar","currentUser","AVUser","slice","indexOf","toLowerCase"],"sources":["ConfigDataModel.ts"],"sourcesContent":["import { Object } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { LoginManager, LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { VersionManager } from './VersionManager';\nimport { VipAndroidManager } from './VipAndroidManager';\n\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\nexport interface ConfigsType {\n [key: string]: any;\n}\nlet MyItems: ConfigsType = {};\n\nconst AV = require('leancloud-storage');\n\nconst _filterByVersion = (items: Object[]) => {\n let ret = [];\n for (const item of items) {\n if (\n !VersionManager.isValidVersion(item.get('minVer'), item.get('maxVer'))\n ) {\n continue;\n }\n ret.push(item);\n }\n return ret;\n};\n\nconst _updateKeyValues = (items: Object[]) => {\n for (const item of items) {\n let value = item.get('value');\n if (typeof value === 'string') {\n // 因为 leancloud 无法配置空白内容,所以 trim 下,这样就能以空格代替空白{\n value = value.trim();\n }\n MyItems[item.get('key')] = value;\n }\n};\n\nconst handleVersionInfo = () => {\n VersionManager.init({\n latestAppVersion: ConfigDataModel.get(\n Platform.OS === 'android' ? 'aov' : 'ov'\n ),\n latestBundleVersion: ConfigDataModel.get('bov'),\n });\n};\n\nlet isDataReady = false;\nlet isNetwordDataReady = false;\n\nconst _handleResponse = (OnlineItems: Object[]) => {\n if (!isNetwordDataReady) {\n return;\n }\n\n // 根据版本过滤\n let items = _filterByVersion(OnlineItems);\n _updateKeyValues(items);\n // 处理 Version 信息\n handleVersionInfo();\n console.log('Config 处理完毕');\n isDataReady = true;\n VipAndroidManager.setOfferings(ConfigDataModel.get('vip_android_offerings'));\n ConfigDataModel.emitChange();\n};\n\n// ConfigDataModel 的 Config 是支持后台配置多条同一个 Key 的,按版本区分\nconst ConfigDataModel = {\n init: (defaultValues: ConfigsType) => {\n MyItems = defaultValues;\n\n Notification.addListener(\n 'onLogin',\n ({ isAuto, user, error }: LoginResultDataType) => {\n if (!isAuto && user && !error) {\n isDataReady = false;\n isNetwordDataReady = false;\n ConfigDataModel.fetch();\n }\n }\n );\n\n ConfigDataModel.fetch();\n },\n\n fetch: () => {\n // 确保可重入,但如果网络一直出错的话,每次调用都会一直发\n if (isNetwordDataReady) {\n return;\n }\n\n const query = new AV.Query('Configs');\n query.equalTo('valid', true).equalTo(Platform.OS, true);\n query\n .find()\n .then((items: Object[]) => {\n console.log('Config 抓取完毕');\n isNetwordDataReady = true;\n _handleResponse(items);\n })\n .catch((e: any) => {\n console.error(e);\n });\n },\n\n get: (key: string) => {\n return MyItems[key];\n },\n\n emitChange: () => {\n eventEmitter.emit('change');\n },\n\n addListenerOnce: (callback: Function) => {\n if (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;\n }\n eventEmitter.on('change', callback);\n },\n\n shouldEnableByRate: (enable?: boolean, rate?: number) => {\n if (!enable) {\n return false;\n }\n // rate 不传,默认为全量\n const r = rate ?? 1;\n if (r <= 0) {\n return false;\n }\n // ID 最后一位是 16 进制(0-f),未登录默认为全量\n const lastChar =\n LoginManager.currentUser()?.AVUser?.get('objectId')?.slice(-1) ?? '0';\n return '0123456789abcdef'.indexOf(lastChar.toLowerCase()) < r * 16;\n },\n};\n\nexport { ConfigDataModel };\n"],"mappings":"AACA,SAASA,QAAQ,QAAQ,cAAc;AACvC,SAASC,YAAY,QAA6B,gBAAgB;AAClE,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SAASC,iBAAiB,QAAQ,qBAAqB;AAEvD,MAAMC,YAAY,GAAGC,OAAO,CAAC,QAAQ,CAAC,CAACD,YAAY;AACnD,MAAME,YAAY,GAAG,IAAIF,YAAY,CAAC,CAAC;AAKvC,IAAIG,OAAoB,GAAG,CAAC,CAAC;AAE7B,MAAMC,EAAE,GAAGH,OAAO,CAAC,mBAAmB,CAAC;AAEvC,MAAMI,gBAAgB,GAAIC,KAAe,IAAK;EAC5C,IAAIC,GAAG,GAAG,EAAE;EACZ,KAAK,MAAMC,IAAI,IAAIF,KAAK,EAAE;IACxB,IACE,CAACR,cAAc,CAACW,cAAc,CAACD,IAAI,CAACE,GAAG,CAAC,QAAQ,CAAC,EAAEF,IAAI,CAACE,GAAG,CAAC,QAAQ,CAAC,CAAC,EACtE;MACA;IACF;IACAH,GAAG,CAACI,IAAI,CAACH,IAAI,CAAC;EAChB;EACA,OAAOD,GAAG;AACZ,CAAC;AAED,MAAMK,gBAAgB,GAAIN,KAAe,IAAK;EAC5C,KAAK,MAAME,IAAI,IAAIF,KAAK,EAAE;IACxB,IAAIO,KAAK,GAAGL,IAAI,CAACE,GAAG,CAAC,OAAO,CAAC;IAC7B,IAAI,OAAOG,KAAK,KAAK,QAAQ,EAAE;MAC7B;MACAA,KAAK,GAAGA,KAAK,CAACC,IAAI,CAAC,CAAC;IACtB;IACAX,OAAO,CAACK,IAAI,CAACE,GAAG,CAAC,KAAK,CAAC,CAAC,GAAGG,KAAK;EAClC;AACF,CAAC;AAED,MAAME,iBAAiB,GAAGA,CAAA,KAAM;EAC9BjB,cAAc,CAACkB,IAAI,CAAC;IAClBC,gBAAgB,EAAEC,eAAe,CAACR,GAAG,CACnCf,QAAQ,CAACwB,EAAE,KAAK,SAAS,GAAG,KAAK,GAAG,IACtC,CAAC;IACDC,mBAAmB,EAAEF,eAAe,CAACR,GAAG,
|
1
|
+
{"version":3,"names":["Platform","LoginManager","Notification","VersionManager","VipAndroidManager","EventEmitter","require","eventEmitter","MyItems","AV","_filterByVersion","items","ret","item","isValidVersion","get","push","_updateKeyValues","value","trim","handleVersionInfo","init","latestAppVersion","ConfigDataModel","OS","latestBundleVersion","isDataReady","isNetwordDataReady","_handleResponse","OnlineItems","console","log","setOfferings","emitChange","defaultValues","addListener","_ref","isAuto","user","error","fetch","query","Query","equalTo","find","then","catch","e","key","emit","addListenerOnce","callback","once","on","shouldEnableByRate","enable","rate","_LoginManager$current","_LoginManager$current2","r","lastChar","currentUser","AVUser","slice","indexOf","toLowerCase"],"sources":["ConfigDataModel.ts"],"sourcesContent":["import { Object } from 'leancloud-storage';\nimport { Platform } from 'react-native';\nimport { LoginManager, LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\nimport { VersionManager } from './VersionManager';\nimport { VipAndroidManager } from './VipAndroidManager';\n\nconst EventEmitter = require('events').EventEmitter;\nconst eventEmitter = new EventEmitter();\n\nexport interface ConfigsType {\n [key: string]: any;\n}\nlet MyItems: ConfigsType = {};\n\nconst AV = require('leancloud-storage');\n\nconst _filterByVersion = (items: Object[]) => {\n let ret = [];\n for (const item of items) {\n if (\n !VersionManager.isValidVersion(item.get('minVer'), item.get('maxVer'))\n ) {\n continue;\n }\n ret.push(item);\n }\n return ret;\n};\n\nconst _updateKeyValues = (items: Object[]) => {\n for (const item of items) {\n let value = item.get('value');\n if (typeof value === 'string') {\n // 因为 leancloud 无法配置空白内容,所以 trim 下,这样就能以空格代替空白{\n value = value.trim();\n }\n MyItems[item.get('key')] = value;\n }\n};\n\nconst handleVersionInfo = () => {\n VersionManager.init({\n latestAppVersion: ConfigDataModel.get(\n Platform.OS === 'android' ? 'aov' : 'ov'\n ),\n latestBundleVersion: ConfigDataModel.get(\n Platform.OS === 'android' ? 'abov' : 'bov'\n ),\n });\n};\n\nlet isDataReady = false;\nlet isNetwordDataReady = false;\n\nconst _handleResponse = (OnlineItems: Object[]) => {\n if (!isNetwordDataReady) {\n return;\n }\n\n // 根据版本过滤\n let items = _filterByVersion(OnlineItems);\n _updateKeyValues(items);\n // 处理 Version 信息\n handleVersionInfo();\n console.log('Config 处理完毕');\n isDataReady = true;\n VipAndroidManager.setOfferings(ConfigDataModel.get('vip_android_offerings'));\n ConfigDataModel.emitChange();\n};\n\n// ConfigDataModel 的 Config 是支持后台配置多条同一个 Key 的,按版本区分\nconst ConfigDataModel = {\n init: (defaultValues: ConfigsType) => {\n MyItems = defaultValues;\n\n Notification.addListener(\n 'onLogin',\n ({ isAuto, user, error }: LoginResultDataType) => {\n if (!isAuto && user && !error) {\n isDataReady = false;\n isNetwordDataReady = false;\n ConfigDataModel.fetch();\n }\n }\n );\n\n // 防止 Config 太慢,而 Vip 页面却已经打开导致无商品的问题\n VipAndroidManager.setOfferings(\n ConfigDataModel.get('vip_android_offerings')\n );\n ConfigDataModel.fetch();\n },\n\n fetch: () => {\n // 确保可重入,但如果网络一直出错的话,每次调用都会一直发\n if (isNetwordDataReady) {\n return;\n }\n\n const query = new AV.Query('Configs');\n query.equalTo('valid', true).equalTo(Platform.OS, true);\n query\n .find()\n .then((items: Object[]) => {\n console.log('Config 抓取完毕');\n isNetwordDataReady = true;\n _handleResponse(items);\n })\n .catch((e: any) => {\n console.error(e);\n });\n },\n\n get: (key: string) => {\n return MyItems[key];\n },\n\n emitChange: () => {\n eventEmitter.emit('change');\n },\n\n addListenerOnce: (callback: Function) => {\n if (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;\n }\n eventEmitter.on('change', callback);\n },\n\n shouldEnableByRate: (enable?: boolean, rate?: number) => {\n if (!enable) {\n return false;\n }\n // rate 不传,默认为全量\n const r = rate ?? 1;\n if (r <= 0) {\n return false;\n }\n // ID 最后一位是 16 进制(0-f),未登录默认为全量\n const lastChar =\n LoginManager.currentUser()?.AVUser?.get('objectId')?.slice(-1) ?? '0';\n return '0123456789abcdef'.indexOf(lastChar.toLowerCase()) < r * 16;\n },\n};\n\nexport { ConfigDataModel };\n"],"mappings":"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"}
|
package/package.json
CHANGED
Binary file
|
package/src/ConfigDataModel.ts
CHANGED
@@ -44,7 +44,9 @@ const handleVersionInfo = () => {
|
|
44
44
|
latestAppVersion: ConfigDataModel.get(
|
45
45
|
Platform.OS === 'android' ? 'aov' : 'ov'
|
46
46
|
),
|
47
|
-
latestBundleVersion: ConfigDataModel.get(
|
47
|
+
latestBundleVersion: ConfigDataModel.get(
|
48
|
+
Platform.OS === 'android' ? 'abov' : 'bov'
|
49
|
+
),
|
48
50
|
});
|
49
51
|
};
|
50
52
|
|
@@ -83,6 +85,10 @@ const ConfigDataModel = {
|
|
83
85
|
}
|
84
86
|
);
|
85
87
|
|
88
|
+
// 防止 Config 太慢,而 Vip 页面却已经打开导致无商品的问题
|
89
|
+
VipAndroidManager.setOfferings(
|
90
|
+
ConfigDataModel.get('vip_android_offerings')
|
91
|
+
);
|
86
92
|
ConfigDataModel.fetch();
|
87
93
|
},
|
88
94
|
|