@norcy/react-native-toolkit 0.1.111 → 0.1.113

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.
@@ -79,7 +79,7 @@ export const ReportUtil = {
79
79
  ...validParams,
80
80
  ...ReportUtil.getCommonInfo()
81
81
  };
82
- console.log('[Report]', realParams);
82
+ console.log('[Report]', eventId, realParams);
83
83
  if (!__DEV__) {
84
84
  NativeModules.NCYReport.report(eventId, realParams);
85
85
  }
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","getBrand","getDeviceId","getModel","getReadableVersion","Notification","CommonInfo","appVer","platform","OS","sysVer","Version","model","brand","device","enable","NCYReport","isValidReport","eventId","params","length","console","error","Array","isArray","key","convertToValidParams","ret","value","JSON","stringify","ReportUtil","init","addListener","_ref","user","__DEV__","signIn","AVUser","get","setCommonInfo","signOut","report","validParams","realParams","getCommonInfo","log","viewAppear","page","enterPage","viewDisappear","leavePage"],"sources":["ReportUtil.ts"],"sourcesContent":["import { NativeModules, Platform } from 'react-native';\nimport {\n getBrand,\n getDeviceId,\n getModel,\n getReadableVersion,\n} from 'react-native-device-info';\nimport { LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\n\nexport interface ReportItemType {\n [key: string]: number | string;\n}\n\nconst CommonInfo: ReportItemType = {\n appVer: getReadableVersion(),\n platform: Platform.OS,\n sysVer: Platform.Version,\n model: getModel(),\n brand: getBrand(),\n device: getDeviceId(),\n};\n\nconst enable = () => {\n if (!NativeModules.NCYReport) {\n return false;\n }\n return true;\n};\n\nconst isValidReport = (eventId: string, params?: ReportItemType) => {\n if (typeof eventId !== 'string' || eventId?.length === 0) {\n console.error('Report 数据非法 1');\n return false;\n }\n\n if (params == null) {\n return true;\n }\n\n if (typeof params !== 'object' || Array.isArray(params)) {\n console.error('Report 数据非法 2');\n return false;\n }\n\n for (const key in params) {\n if (typeof key !== 'string') {\n console.error('Report 数据非法 3');\n return false;\n }\n }\n\n return true;\n};\n\nconst convertToValidParams = (params?: ReportItemType) => {\n const ret: ReportItemType = {};\n for (const key in params) {\n const value = JSON.stringify(params[key]);\n ret[key] = value;\n }\n return ret;\n};\n\nexport const ReportUtil = {\n init: () => {\n if (!enable()) {\n return;\n }\n\n Notification.addListener(\n 'onLogin',\n ({ error, user }: LoginResultDataType) => {\n if (!error && user) {\n if (!__DEV__) {\n NativeModules.NCYReport.signIn(user.AVUser.get('objectId'));\n }\n ReportUtil.setCommonInfo('user', user.AVUser.get('objectId'));\n }\n }\n );\n\n Notification.addListener('onLogout', () => {\n if (!__DEV__) {\n NativeModules.NCYReport.signOut();\n }\n ReportUtil.setCommonInfo('user', '');\n });\n },\n\n report: (eventId: string, params?: ReportItemType) => {\n if (!enable()) {\n return;\n }\n\n if (!isValidReport(eventId, params)) {\n return;\n }\n\n const validParams = convertToValidParams(params);\n const realParams = { ...validParams, ...ReportUtil.getCommonInfo() };\n console.log('[Report]', realParams);\n if (!__DEV__) {\n NativeModules.NCYReport.report(eventId, realParams);\n }\n },\n\n setCommonInfo: (key: string, value: string) => {\n CommonInfo[key] = value;\n },\n\n getCommonInfo: () => {\n return CommonInfo;\n },\n\n viewAppear: (page: string) => {\n if (!__DEV__) {\n console.log(page, 'viewWillAppear');\n }\n\n if (!enable()) {\n return;\n }\n\n if (!__DEV__) {\n NativeModules.NCYReport.enterPage(page);\n }\n },\n\n viewDisappear: (page: string) => {\n if (!__DEV__) {\n console.log(page, 'viewWillDisappear');\n }\n\n if (!enable()) {\n return;\n }\n\n if (!__DEV__) {\n NativeModules.NCYReport.leavePage(page);\n }\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["NativeModules","Platform","getBrand","getDeviceId","getModel","getReadableVersion","Notification","CommonInfo","appVer","platform","OS","sysVer","Version","model","brand","device","enable","NCYReport","isValidReport","eventId","params","length","console","error","Array","isArray","key","convertToValidParams","ret","value","JSON","stringify","ReportUtil","init","addListener","_ref","user","__DEV__","signIn","AVUser","get","setCommonInfo","signOut","report","validParams","realParams","getCommonInfo","log","viewAppear","page","enterPage","viewDisappear","leavePage"],"sources":["ReportUtil.ts"],"sourcesContent":["import { NativeModules, Platform } from 'react-native';\nimport {\n getBrand,\n getDeviceId,\n getModel,\n getReadableVersion,\n} from 'react-native-device-info';\nimport { LoginResultDataType } from './LoginManager';\nimport { Notification } from './Notification';\n\nexport interface ReportItemType {\n [key: string]: number | string;\n}\n\nconst CommonInfo: ReportItemType = {\n appVer: getReadableVersion(),\n platform: Platform.OS,\n sysVer: Platform.Version,\n model: getModel(),\n brand: getBrand(),\n device: getDeviceId(),\n};\n\nconst enable = () => {\n if (!NativeModules.NCYReport) {\n return false;\n }\n return true;\n};\n\nconst isValidReport = (eventId: string, params?: ReportItemType) => {\n if (typeof eventId !== 'string' || eventId?.length === 0) {\n console.error('Report 数据非法 1');\n return false;\n }\n\n if (params == null) {\n return true;\n }\n\n if (typeof params !== 'object' || Array.isArray(params)) {\n console.error('Report 数据非法 2');\n return false;\n }\n\n for (const key in params) {\n if (typeof key !== 'string') {\n console.error('Report 数据非法 3');\n return false;\n }\n }\n\n return true;\n};\n\nconst convertToValidParams = (params?: ReportItemType) => {\n const ret: ReportItemType = {};\n for (const key in params) {\n const value = JSON.stringify(params[key]);\n ret[key] = value;\n }\n return ret;\n};\n\nexport const ReportUtil = {\n init: () => {\n if (!enable()) {\n return;\n }\n\n Notification.addListener(\n 'onLogin',\n ({ error, user }: LoginResultDataType) => {\n if (!error && user) {\n if (!__DEV__) {\n NativeModules.NCYReport.signIn(user.AVUser.get('objectId'));\n }\n ReportUtil.setCommonInfo('user', user.AVUser.get('objectId'));\n }\n }\n );\n\n Notification.addListener('onLogout', () => {\n if (!__DEV__) {\n NativeModules.NCYReport.signOut();\n }\n ReportUtil.setCommonInfo('user', '');\n });\n },\n\n report: (eventId: string, params?: ReportItemType) => {\n if (!enable()) {\n return;\n }\n\n if (!isValidReport(eventId, params)) {\n return;\n }\n\n const validParams = convertToValidParams(params);\n const realParams = { ...validParams, ...ReportUtil.getCommonInfo() };\n console.log('[Report]', eventId, realParams);\n if (!__DEV__) {\n NativeModules.NCYReport.report(eventId, realParams);\n }\n },\n\n setCommonInfo: (key: string, value: string) => {\n CommonInfo[key] = value;\n },\n\n getCommonInfo: () => {\n return CommonInfo;\n },\n\n viewAppear: (page: string) => {\n if (!__DEV__) {\n console.log(page, 'viewWillAppear');\n }\n\n if (!enable()) {\n return;\n }\n\n if (!__DEV__) {\n NativeModules.NCYReport.enterPage(page);\n }\n },\n\n viewDisappear: (page: string) => {\n if (!__DEV__) {\n console.log(page, 'viewWillDisappear');\n }\n\n if (!enable()) {\n return;\n }\n\n if (!__DEV__) {\n NativeModules.NCYReport.leavePage(page);\n }\n },\n};\n"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
+ import { AppLink } from '@norcy/react-native-toolkit';
1
2
  import CameraRoll from '@react-native-community/cameraroll';
2
3
  import { useState } from 'react';
3
- import { Linking, NativeModules, PermissionsAndroid, Platform, Vibration } from 'react-native';
4
+ import { Alert, Linking, NativeModules, PermissionsAndroid, Platform, Vibration } from 'react-native';
4
5
  import { isLandscapeSync, isTablet } from 'react-native-device-info';
5
6
  import Toast from 'react-native-simple-toast';
6
7
  import { BuildInPrefs, PrefData } from './PrefData';
@@ -18,6 +19,34 @@ const _jsonify = target => {
18
19
  if (Array.isArray(target)) return target.map(_jsonify);
19
20
  return target;
20
21
  };
22
+ const _getAlertDataFromConfig = config => {
23
+ if (!config) {
24
+ return undefined;
25
+ }
26
+ const ret = {
27
+ title: config.title,
28
+ message: config.message
29
+ };
30
+ const buttons = [];
31
+ for (const button of config.buttons) {
32
+ if (button.target) {
33
+ buttons.push({
34
+ text: button.text,
35
+ onPress: () => {
36
+ button.report && ReportUtil.report(button.report);
37
+ AppLink.open(button.target);
38
+ }
39
+ });
40
+ } else {
41
+ buttons.push({
42
+ text: button.text,
43
+ style: 'cancel'
44
+ });
45
+ }
46
+ }
47
+ ret.buttons = buttons;
48
+ return ret;
49
+ };
21
50
  let androidVibratePermissionStatus = -1;
22
51
  let VibrateEnable;
23
52
  export const Tool = {
@@ -103,7 +132,17 @@ export const Tool = {
103
132
  return () => setValue(value => value + 1);
104
133
  },
105
134
  showToast: toast => {
106
- Toast.showWithGravity(toast, Toast.SHORT, Toast.CENTER);
135
+ if (toast) {
136
+ Toast.showWithGravity(toast, Toast.SHORT, Toast.CENTER);
137
+ }
138
+ },
139
+ alertWithConfig: config => {
140
+ const alertData = _getAlertDataFromConfig(config);
141
+ if (alertData) {
142
+ Alert.alert(alertData.title, alertData.message, alertData.buttons);
143
+ return true;
144
+ }
145
+ return false;
107
146
  },
108
147
  goAppStoreReview: () => {
109
148
  ReportUtil.report('StoreReview');
@@ -1 +1 @@
1
- {"version":3,"names":["CameraRoll","useState","Linking","NativeModules","PermissionsAndroid","Platform","Vibration","isLandscapeSync","isTablet","Toast","BuildInPrefs","PrefData","ReportUtil","ToolkitConfig","initToolkitConfig","config","_isPlainObject","target","toString","Object","getPrototypeOf","prototype","_jsonify","toJSON","Array","isArray","map","androidVibratePermissionStatus","VibrateEnable","Tool","sleep","delay","Promise","resolve","setTimeout","formatDate","date","fmt","o","getMonth","getDate","getHours","getMinutes","getSeconds","Math","floor","getMilliseconds","test","replace","RegExp","$1","getFullYear","substr","length","k","jsonify","keys","reduce","result","key","isChinese","value","isRemoteURL","str","startsWith","get_url_extension","url","_url$split$","split","pop","trim","generateObjectId","timestamp","Date","getTime","random","toLowerCase","humanFileSize","bytes","si","arguments","undefined","dp","thresh","abs","units","u","r","round","toFixed","useForceUpdate","setValue","showToast","toast","showWithGravity","SHORT","CENTER","goAppStoreReview","report","OS","canOpenURL","then","supported","openURL","iOSReviewUrl","CheckPackageInstallation","isPackageInstalled","isInstalled","goToMarket","AndroidPackageName","AndroidStoreScheme","goUpgrade","iOSStoreScheme","AppWebsiteAlias","notifyMe","text","__DEV__","fetch","PushDeerUrl","encodeURIComponent","hasAndroidWritePermission","permission","PERMISSIONS","WRITE_EXTERNAL_STORAGE","hasPermission","check","NCYAPI","checkManagePermission","status","request","requestManagePermission","savePicture","albumName","console","log","errorCode","errMsg","save","type","album","AppName","error","JSON","stringify","extension","ReactNativeBlobUtil","require","default","res","fileCache","appendExt","path","e1","setVibrateEnable","enable","Vibrate","getVibrateEnable","vibrate","getValue","_NativeModules$NCYVib","NCYVibration","isPad","isHorizontalPad"],"sources":["Tool.ts"],"sourcesContent":["import CameraRoll from '@react-native-community/cameraroll';\nimport { useState } from 'react';\nimport {\n Linking,\n NativeModules,\n PermissionsAndroid,\n Platform,\n Vibration,\n} from 'react-native';\nimport { isLandscapeSync, isTablet } from 'react-native-device-info';\nimport Toast from 'react-native-simple-toast';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { ReportUtil } from './ReportUtil';\n\nexport interface ToolkitConfigType {\n iOSStoreUrl: string;\n AndroidStoreUrl: string;\n iOSStoreScheme: string;\n AndroidStoreScheme: string;\n iOSReviewUrl: string;\n AndroidPackageName: string;\n\n AppName: string;\n AppWebsite: string;\n AppWebsiteAlias: string;\n AppScheme: string;\n\n PolicyUrl: string;\n TermsUrl: string;\n\n PushDeerUrl: string;\n\n RC_API_KEY: string;\n RC_ENTITLEMENT_ID: string;\n RC_PROXY_URL: string;\n WeChatPayServer: string;\n WeiXinId: string;\n WeiXinSecret: string;\n\n SentryDSN: string;\n}\n\nexport let ToolkitConfig: ToolkitConfigType;\n\nexport const initToolkitConfig = (config: ToolkitConfigType) => {\n ToolkitConfig = config;\n};\n\nconst _isPlainObject = (target: any) => {\n return (\n target &&\n target.toString() === '[object Object]' &&\n Object.getPrototypeOf(target) === Object.prototype\n );\n};\n\nconst _jsonify = (target: any): any => {\n if (target && typeof target.toJSON === 'function') return target.toJSON();\n // map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一次提供的函数后的返回值\n if (Array.isArray(target)) return target.map(_jsonify);\n return target;\n};\n\nlet androidVibratePermissionStatus = -1;\n\nlet VibrateEnable: boolean | undefined;\n\nexport const Tool = {\n sleep: (delay: number) =>\n new Promise((resolve) => setTimeout(resolve, delay)),\n\n formatDate(date: Date, fmt?: string): string {\n fmt = fmt ? fmt : 'yyyy-MM-dd';\n var o: { [key: string]: number } = {\n 'M+': date.getMonth() + 1, //月份\n 'd+': date.getDate(), //日\n 'h+': date.getHours(), //小时\n 'm+': date.getMinutes(), //分\n 's+': date.getSeconds(), //秒\n 'q+': Math.floor((date.getMonth() + 3) / 3), //季度\n 'S': date.getMilliseconds(), //毫秒\n };\n\n // 获取年份\n if (/(y+)/i.test(fmt)) {\n fmt = fmt.replace(\n RegExp.$1,\n (date.getFullYear() + '').substr(4 - RegExp.$1.length)\n );\n }\n\n for (var k in o) {\n if (new RegExp('(' + k + ')', 'i').test(fmt)) {\n fmt = fmt.replace(\n RegExp.$1,\n (RegExp.$1.length === 1\n ? o[k]\n : ('00' + o[k]).substr(('' + o[k]).length)\n ).toString()\n );\n }\n }\n return fmt;\n },\n\n jsonify: (target: any) =>\n _isPlainObject(target)\n ? Object.keys(target).reduce(\n (result, key) => ({\n ...result,\n [key]: _jsonify(target[key]),\n }),\n {}\n )\n : _jsonify(target),\n\n isChinese: (value: string) => {\n return /[\\u4E00-\\u9FA5]+/g.test(value);\n },\n\n isRemoteURL: (str: string) => {\n return str.startsWith('http');\n },\n\n get_url_extension: (url: string) => {\n return url.split(/[#?]/)[0]?.split('.')?.pop()?.trim();\n },\n\n generateObjectId: () => {\n var timestamp = ((new Date().getTime() / 1000) | 0).toString(16); // eslint-disable-line no-bitwise\n return (\n timestamp +\n 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, function () {\n return ((Math.random() * 16) | 0).toString(16).toLowerCase(); // eslint-disable-line no-bitwise\n })\n );\n },\n\n /**\n * Format bytes as human-readable text.\n *\n * @param bytes Number of bytes.\n * @param si True to use metric (SI) units, aka powers of 1000. False to use\n * binary (IEC), aka powers of 1024.\n * @param dp Number of decimal places to display.\n *\n * @return Formatted string.\n */\n humanFileSize: (bytes: number, si = false, dp = 1) => {\n const thresh = si ? 1000 : 1024;\n\n if (Math.abs(bytes) < thresh) {\n return bytes + ' B';\n }\n\n const units = ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n let u = -1;\n const r = 10 ** dp;\n\n do {\n bytes /= thresh;\n ++u;\n } while (\n Math.round(Math.abs(bytes) * r) / r >= thresh &&\n u < units.length - 1\n );\n\n return bytes.toFixed(dp) + ' ' + units[u];\n },\n\n useForceUpdate: () => {\n const [, setValue] = useState(0);\n return () => setValue((value) => value + 1);\n },\n\n showToast: (toast: string) => {\n Toast.showWithGravity(toast, Toast.SHORT, Toast.CENTER);\n },\n\n goAppStoreReview: () => {\n ReportUtil.report('StoreReview');\n if (Platform.OS === 'ios') {\n Linking.canOpenURL('itms-apps://').then((supported) => {\n if (supported) {\n Linking.openURL(ToolkitConfig.iOSReviewUrl);\n }\n });\n } else {\n if (NativeModules.CheckPackageInstallation) {\n NativeModules.CheckPackageInstallation.isPackageInstalled(\n 'com.coolapk.market',\n (isInstalled: boolean) => {\n if (isInstalled) {\n if (NativeModules.CheckPackageInstallation.goToMarket) {\n NativeModules.CheckPackageInstallation.goToMarket(\n ToolkitConfig.AndroidPackageName,\n 'com.coolapk.market',\n 'com.coolapk.market.activity.AppViewActivity'\n );\n } else {\n Tool.showToast('请用酷安市场打开');\n Linking.openURL(ToolkitConfig.AndroidStoreScheme);\n }\n } else {\n Tool.showToast('需要先安装酷安市场');\n }\n }\n );\n }\n }\n },\n\n goUpgrade: () => {\n if (Platform.OS === 'ios') {\n Linking.canOpenURL('itms-apps://').then((supported) => {\n if (supported) {\n Linking.openURL(ToolkitConfig.iOSStoreScheme);\n }\n });\n } else {\n // 使用短链别名,不然 Android 的 AppLink 会直接吃掉官网,导致 App 内无法使用浏览器打开官网\n Linking.openURL(ToolkitConfig.AppWebsiteAlias);\n }\n },\n\n notifyMe: async (text: string) => {\n if (!__DEV__) {\n await fetch(ToolkitConfig.PushDeerUrl + encodeURIComponent(text));\n }\n },\n\n hasAndroidWritePermission: async () => {\n const permission = PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE;\n\n const hasPermission = await PermissionsAndroid.check(permission);\n if (hasPermission) {\n return true;\n }\n\n // 对 MANAGE_EXTERNAL_STORAGE 再检查一次\n if (NativeModules.NCYAPI.checkManagePermission) {\n if (await NativeModules.NCYAPI.checkManagePermission()) {\n return true;\n }\n }\n\n const status = await PermissionsAndroid.request(permission);\n if (status === 'granted') {\n return true;\n }\n\n if (NativeModules.NCYAPI.requestManagePermission) {\n if (await NativeModules.NCYAPI.requestManagePermission()) {\n return true;\n }\n }\n\n return false;\n },\n\n savePicture: async (url: string, albumName?: string) => {\n console.log('savePicture', url);\n\n if (!url) {\n return { errorCode: -5, errMsg: 'url is empty' };\n }\n\n // 检查权限\n if (\n Platform.OS === 'android' &&\n !(await Tool.hasAndroidWritePermission())\n ) {\n return { errorCode: -1 };\n }\n\n // iOS 或本地图片直接保存\n if (Platform.OS === 'ios' || !Tool.isRemoteURL(url)) {\n try {\n await CameraRoll.save(url, {\n type: 'photo',\n album: albumName ?? ToolkitConfig.AppName,\n });\n return { errorCode: 0 };\n } catch (error: any) {\n console.error(error);\n return { errorCode: -2, errMsg: JSON.stringify(error) };\n }\n }\n\n // 安卓远程图片需要下载\n const extension = Tool.get_url_extension(url);\n try {\n if (!NativeModules.ReactNativeBlobUtil) {\n Tool.goUpgrade();\n return { errorCode: -5, errMsg: 'low version' };\n }\n let ReactNativeBlobUtil = require('react-native-blob-util').default;\n const res = await ReactNativeBlobUtil!\n .config({\n fileCache: true,\n appendExt: extension,\n })\n .fetch('GET', url, {});\n // the temp file path\n console.log('The file saved to ', res.path());\n try {\n await CameraRoll.save('file://' + res.path(), {\n type: 'photo',\n album: albumName,\n });\n return { errorCode: 0 };\n } catch (e1) {\n console.error(e1 + '\\n' + res.path());\n return { errorCode: -3, errMsg: JSON.stringify(e1) };\n }\n } catch (error) {\n console.error(error);\n return { errorCode: -4, errMsg: JSON.stringify(error) };\n }\n },\n\n setVibrateEnable: (enable: boolean) => {\n PrefData.setValue(BuildInPrefs.Vibrate, enable);\n VibrateEnable = enable;\n },\n\n getVibrateEnable: () => {\n return VibrateEnable === undefined ? true : VibrateEnable;\n },\n\n vibrate: async () => {\n try {\n if (VibrateEnable === undefined) {\n VibrateEnable = PrefData.getValue(BuildInPrefs.Vibrate);\n }\n if (!VibrateEnable) {\n return;\n }\n if (Platform.OS === 'ios') {\n NativeModules.NCYVibration?.vibrate();\n } else {\n if (androidVibratePermissionStatus === -1) {\n androidVibratePermissionStatus = (await PermissionsAndroid.check(\n // @ts-ignore\n 'android.permission.VIBRATE'\n ))\n ? 1\n : 0;\n }\n if (androidVibratePermissionStatus === 1) {\n Vibration.vibrate(5);\n }\n }\n } catch (error) {}\n },\n\n isPad: () => {\n if (Platform.OS === 'ios') {\n return Platform.isPad;\n } else {\n return isTablet();\n }\n },\n\n isHorizontalPad: () => {\n return isLandscapeSync() && Tool.isPad();\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["AppLink","CameraRoll","useState","Alert","Linking","NativeModules","PermissionsAndroid","Platform","Vibration","isLandscapeSync","isTablet","Toast","BuildInPrefs","PrefData","ReportUtil","ToolkitConfig","initToolkitConfig","config","_isPlainObject","target","toString","Object","getPrototypeOf","prototype","_jsonify","toJSON","Array","isArray","map","_getAlertDataFromConfig","undefined","ret","title","message","buttons","button","push","text","onPress","report","open","style","androidVibratePermissionStatus","VibrateEnable","Tool","sleep","delay","Promise","resolve","setTimeout","formatDate","date","fmt","o","getMonth","getDate","getHours","getMinutes","getSeconds","Math","floor","getMilliseconds","test","replace","RegExp","$1","getFullYear","substr","length","k","jsonify","keys","reduce","result","key","isChinese","value","isRemoteURL","str","startsWith","get_url_extension","url","_url$split$","split","pop","trim","generateObjectId","timestamp","Date","getTime","random","toLowerCase","humanFileSize","bytes","si","arguments","dp","thresh","abs","units","u","r","round","toFixed","useForceUpdate","setValue","showToast","toast","showWithGravity","SHORT","CENTER","alertWithConfig","alertData","alert","goAppStoreReview","OS","canOpenURL","then","supported","openURL","iOSReviewUrl","CheckPackageInstallation","isPackageInstalled","isInstalled","goToMarket","AndroidPackageName","AndroidStoreScheme","goUpgrade","iOSStoreScheme","AppWebsiteAlias","notifyMe","__DEV__","fetch","PushDeerUrl","encodeURIComponent","hasAndroidWritePermission","permission","PERMISSIONS","WRITE_EXTERNAL_STORAGE","hasPermission","check","NCYAPI","checkManagePermission","status","request","requestManagePermission","savePicture","albumName","console","log","errorCode","errMsg","save","type","album","AppName","error","JSON","stringify","extension","ReactNativeBlobUtil","require","default","res","fileCache","appendExt","path","e1","setVibrateEnable","enable","Vibrate","getVibrateEnable","vibrate","getValue","_NativeModules$NCYVib","NCYVibration","isPad","isHorizontalPad"],"sources":["Tool.ts"],"sourcesContent":["import { AppLink } from '@norcy/react-native-toolkit';\nimport CameraRoll from '@react-native-community/cameraroll';\nimport { useState } from 'react';\nimport {\n Alert,\n Linking,\n NativeModules,\n PermissionsAndroid,\n Platform,\n Vibration,\n} from 'react-native';\nimport { isLandscapeSync, isTablet } from 'react-native-device-info';\nimport Toast from 'react-native-simple-toast';\nimport { BuildInPrefs, PrefData } from './PrefData';\nimport { ReportUtil } from './ReportUtil';\n\nexport interface ToolkitConfigType {\n iOSStoreUrl: string;\n AndroidStoreUrl: string;\n iOSStoreScheme: string;\n AndroidStoreScheme: string;\n iOSReviewUrl: string;\n AndroidPackageName: string;\n\n AppName: string;\n AppWebsite: string;\n AppWebsiteAlias: string;\n AppScheme: string;\n\n PolicyUrl: string;\n TermsUrl: string;\n\n PushDeerUrl: string;\n\n RC_API_KEY: string;\n RC_ENTITLEMENT_ID: string;\n RC_PROXY_URL: string;\n WeChatPayServer: string;\n WeiXinId: string;\n WeiXinSecret: string;\n\n SentryDSN: string;\n}\n\ninterface AlertConfig {\n title?: string;\n message?: string;\n buttons: {\n text: string;\n target?: string;\n report?: string;\n }[];\n}\n\nexport let ToolkitConfig: ToolkitConfigType;\n\nexport const initToolkitConfig = (config: ToolkitConfigType) => {\n ToolkitConfig = config;\n};\n\nconst _isPlainObject = (target: any) => {\n return (\n target &&\n target.toString() === '[object Object]' &&\n Object.getPrototypeOf(target) === Object.prototype\n );\n};\n\nconst _jsonify = (target: any): any => {\n if (target && typeof target.toJSON === 'function') return target.toJSON();\n // map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一次提供的函数后的返回值\n if (Array.isArray(target)) return target.map(_jsonify);\n return target;\n};\n\nconst _getAlertDataFromConfig = (config?: AlertConfig) => {\n if (!config) {\n return undefined;\n }\n\n const ret: any = {\n title: config.title,\n message: config.message,\n };\n\n const buttons: any = [];\n\n for (const button of config.buttons) {\n if (button.target) {\n buttons.push({\n text: button.text,\n onPress: () => {\n button.report && ReportUtil.report(button.report);\n AppLink.open(button.target);\n },\n });\n } else {\n buttons.push({\n text: button.text,\n style: 'cancel',\n });\n }\n }\n\n ret.buttons = buttons;\n\n return ret;\n};\n\nlet androidVibratePermissionStatus = -1;\n\nlet VibrateEnable: boolean | undefined;\n\nexport const Tool = {\n sleep: (delay: number) =>\n new Promise((resolve) => setTimeout(resolve, delay)),\n\n formatDate(date: Date, fmt?: string): string {\n fmt = fmt ? fmt : 'yyyy-MM-dd';\n var o: { [key: string]: number } = {\n 'M+': date.getMonth() + 1, //月份\n 'd+': date.getDate(), //日\n 'h+': date.getHours(), //小时\n 'm+': date.getMinutes(), //分\n 's+': date.getSeconds(), //秒\n 'q+': Math.floor((date.getMonth() + 3) / 3), //季度\n 'S': date.getMilliseconds(), //毫秒\n };\n\n // 获取年份\n if (/(y+)/i.test(fmt)) {\n fmt = fmt.replace(\n RegExp.$1,\n (date.getFullYear() + '').substr(4 - RegExp.$1.length)\n );\n }\n\n for (var k in o) {\n if (new RegExp('(' + k + ')', 'i').test(fmt)) {\n fmt = fmt.replace(\n RegExp.$1,\n (RegExp.$1.length === 1\n ? o[k]\n : ('00' + o[k]).substr(('' + o[k]).length)\n ).toString()\n );\n }\n }\n return fmt;\n },\n\n jsonify: (target: any) =>\n _isPlainObject(target)\n ? Object.keys(target).reduce(\n (result, key) => ({\n ...result,\n [key]: _jsonify(target[key]),\n }),\n {}\n )\n : _jsonify(target),\n\n isChinese: (value: string) => {\n return /[\\u4E00-\\u9FA5]+/g.test(value);\n },\n\n isRemoteURL: (str: string) => {\n return str.startsWith('http');\n },\n\n get_url_extension: (url: string) => {\n return url.split(/[#?]/)[0]?.split('.')?.pop()?.trim();\n },\n\n generateObjectId: () => {\n var timestamp = ((new Date().getTime() / 1000) | 0).toString(16); // eslint-disable-line no-bitwise\n return (\n timestamp +\n 'xxxxxxxxxxxxxxxx'.replace(/[x]/g, function () {\n return ((Math.random() * 16) | 0).toString(16).toLowerCase(); // eslint-disable-line no-bitwise\n })\n );\n },\n\n /**\n * Format bytes as human-readable text.\n *\n * @param bytes Number of bytes.\n * @param si True to use metric (SI) units, aka powers of 1000. False to use\n * binary (IEC), aka powers of 1024.\n * @param dp Number of decimal places to display.\n *\n * @return Formatted string.\n */\n humanFileSize: (bytes: number, si = false, dp = 1) => {\n const thresh = si ? 1000 : 1024;\n\n if (Math.abs(bytes) < thresh) {\n return bytes + ' B';\n }\n\n const units = ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n let u = -1;\n const r = 10 ** dp;\n\n do {\n bytes /= thresh;\n ++u;\n } while (\n Math.round(Math.abs(bytes) * r) / r >= thresh &&\n u < units.length - 1\n );\n\n return bytes.toFixed(dp) + ' ' + units[u];\n },\n\n useForceUpdate: () => {\n const [, setValue] = useState(0);\n return () => setValue((value) => value + 1);\n },\n\n showToast: (toast: string) => {\n if (toast) {\n Toast.showWithGravity(toast, Toast.SHORT, Toast.CENTER);\n }\n },\n\n alertWithConfig: (config?: AlertConfig) => {\n const alertData = _getAlertDataFromConfig(config);\n if (alertData) {\n Alert.alert(alertData.title, alertData.message, alertData.buttons);\n return true;\n }\n return false;\n },\n\n goAppStoreReview: () => {\n ReportUtil.report('StoreReview');\n if (Platform.OS === 'ios') {\n Linking.canOpenURL('itms-apps://').then((supported) => {\n if (supported) {\n Linking.openURL(ToolkitConfig.iOSReviewUrl);\n }\n });\n } else {\n if (NativeModules.CheckPackageInstallation) {\n NativeModules.CheckPackageInstallation.isPackageInstalled(\n 'com.coolapk.market',\n (isInstalled: boolean) => {\n if (isInstalled) {\n if (NativeModules.CheckPackageInstallation.goToMarket) {\n NativeModules.CheckPackageInstallation.goToMarket(\n ToolkitConfig.AndroidPackageName,\n 'com.coolapk.market',\n 'com.coolapk.market.activity.AppViewActivity'\n );\n } else {\n Tool.showToast('请用酷安市场打开');\n Linking.openURL(ToolkitConfig.AndroidStoreScheme);\n }\n } else {\n Tool.showToast('需要先安装酷安市场');\n }\n }\n );\n }\n }\n },\n\n goUpgrade: () => {\n if (Platform.OS === 'ios') {\n Linking.canOpenURL('itms-apps://').then((supported) => {\n if (supported) {\n Linking.openURL(ToolkitConfig.iOSStoreScheme);\n }\n });\n } else {\n // 使用短链别名,不然 Android 的 AppLink 会直接吃掉官网,导致 App 内无法使用浏览器打开官网\n Linking.openURL(ToolkitConfig.AppWebsiteAlias);\n }\n },\n\n notifyMe: async (text: string) => {\n if (!__DEV__) {\n await fetch(ToolkitConfig.PushDeerUrl + encodeURIComponent(text));\n }\n },\n\n hasAndroidWritePermission: async () => {\n const permission = PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE;\n\n const hasPermission = await PermissionsAndroid.check(permission);\n if (hasPermission) {\n return true;\n }\n\n // 对 MANAGE_EXTERNAL_STORAGE 再检查一次\n if (NativeModules.NCYAPI.checkManagePermission) {\n if (await NativeModules.NCYAPI.checkManagePermission()) {\n return true;\n }\n }\n\n const status = await PermissionsAndroid.request(permission);\n if (status === 'granted') {\n return true;\n }\n\n if (NativeModules.NCYAPI.requestManagePermission) {\n if (await NativeModules.NCYAPI.requestManagePermission()) {\n return true;\n }\n }\n\n return false;\n },\n\n savePicture: async (url: string, albumName?: string) => {\n console.log('savePicture', url);\n\n if (!url) {\n return { errorCode: -5, errMsg: 'url is empty' };\n }\n\n // 检查权限\n if (\n Platform.OS === 'android' &&\n !(await Tool.hasAndroidWritePermission())\n ) {\n return { errorCode: -1 };\n }\n\n // iOS 或本地图片直接保存\n if (Platform.OS === 'ios' || !Tool.isRemoteURL(url)) {\n try {\n await CameraRoll.save(url, {\n type: 'photo',\n album: albumName ?? ToolkitConfig.AppName,\n });\n return { errorCode: 0 };\n } catch (error: any) {\n console.error(error);\n return { errorCode: -2, errMsg: JSON.stringify(error) };\n }\n }\n\n // 安卓远程图片需要下载\n const extension = Tool.get_url_extension(url);\n try {\n if (!NativeModules.ReactNativeBlobUtil) {\n Tool.goUpgrade();\n return { errorCode: -5, errMsg: 'low version' };\n }\n let ReactNativeBlobUtil = require('react-native-blob-util').default;\n const res = await ReactNativeBlobUtil!\n .config({\n fileCache: true,\n appendExt: extension,\n })\n .fetch('GET', url, {});\n // the temp file path\n console.log('The file saved to ', res.path());\n try {\n await CameraRoll.save('file://' + res.path(), {\n type: 'photo',\n album: albumName,\n });\n return { errorCode: 0 };\n } catch (e1) {\n console.error(e1 + '\\n' + res.path());\n return { errorCode: -3, errMsg: JSON.stringify(e1) };\n }\n } catch (error) {\n console.error(error);\n return { errorCode: -4, errMsg: JSON.stringify(error) };\n }\n },\n\n setVibrateEnable: (enable: boolean) => {\n PrefData.setValue(BuildInPrefs.Vibrate, enable);\n VibrateEnable = enable;\n },\n\n getVibrateEnable: () => {\n return VibrateEnable === undefined ? true : VibrateEnable;\n },\n\n vibrate: async () => {\n try {\n if (VibrateEnable === undefined) {\n VibrateEnable = PrefData.getValue(BuildInPrefs.Vibrate);\n }\n if (!VibrateEnable) {\n return;\n }\n if (Platform.OS === 'ios') {\n NativeModules.NCYVibration?.vibrate();\n } else {\n if (androidVibratePermissionStatus === -1) {\n androidVibratePermissionStatus = (await PermissionsAndroid.check(\n // @ts-ignore\n 'android.permission.VIBRATE'\n ))\n ? 1\n : 0;\n }\n if (androidVibratePermissionStatus === 1) {\n Vibration.vibrate(5);\n }\n }\n } catch (error) {}\n },\n\n isPad: () => {\n if (Platform.OS === 'ios') {\n return Platform.isPad;\n } else {\n return isTablet();\n }\n },\n\n isHorizontalPad: () => {\n return isLandscapeSync() && Tool.isPad();\n },\n};\n"],"mappings":"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"}
@@ -100,7 +100,7 @@ export const VipAndroidManager = {
100
100
  errStr
101
101
  } = await WeChat.pay(res.payload);
102
102
  if (errCode) {
103
- console.log('购买失败(-5)', errStr);
103
+ console.log('购买失败(-5,1)', errStr);
104
104
  return {
105
105
  errorCode: -5,
106
106
  errorMsg: errStr
@@ -119,21 +119,26 @@ export const VipAndroidManager = {
119
119
  errorCode: 0
120
120
  };
121
121
  } else {
122
- console.log('购买失败(-5)', JSON.stringify(e));
122
+ console.log('购买失败(-5,2)', JSON.stringify(e));
123
123
  return {
124
124
  errorCode: -5,
125
125
  errorMsg: JSON.stringify(e)
126
126
  };
127
127
  }
128
128
  } else {
129
- console.log('购买失败(-5)', JSON.stringify(res === null || res === void 0 ? void 0 : res.error));
129
+ console.log('购买失败(-5,3)', JSON.stringify(res === null || res === void 0 ? void 0 : res.error));
130
130
  return {
131
131
  errorCode: -5,
132
132
  errorMsg: JSON.stringify(res === null || res === void 0 ? void 0 : res.error)
133
133
  };
134
134
  }
135
135
  } catch (e) {
136
- console.log('购买失败(-5)', JSON.stringify(e));
136
+ console.log('购买失败(-5,4)', JSON.stringify(e));
137
+ if (e.code === -2) {
138
+ return {
139
+ errorCode: -2
140
+ };
141
+ }
137
142
  return {
138
143
  errorCode: -5,
139
144
  errorMsg: JSON.stringify(e)
@@ -1 +1 @@
1
- {"version":3,"names":["Purchases","WeChat","LoginManager","Tool","ToolkitConfig","AndroidOfferings","VipAndroidManager","setOfferings","offerings","queryOrder","orderId","user","currentUser","rawResponse","fetch","WeChatPayServer","method","headers","body","JSON","stringify","AVUser","get","order","cmd","res","json","status","error","paid","e","recover","invalidateCustomerInfoCache","console","log","errorCode","errorMsg","getPackages","offeringId","current","purchase","purchasePackage","_purchasePackage$prod","product","identifier","errCode","errStr","pay","payload","sleep"],"sources":["VipAndroidManager.ts"],"sourcesContent":["import Purchases, { PurchasesPackage } from 'react-native-purchases';\nimport * as WeChat from 'react-native-wechat-lib';\nimport { LoginManager } from './LoginManager';\nimport { Tool, ToolkitConfig } from './Tool';\nlet AndroidOfferings: { [key: string]: PurchasesPackage[] };\n\nexport const VipAndroidManager = {\n setOfferings: (offerings: { [key: string]: PurchasesPackage[] }) => {\n AndroidOfferings = offerings;\n },\n\n queryOrder: async (orderId?: string) => {\n const user = LoginManager.currentUser();\n // Step1:生成预订单\n try {\n const rawResponse = await fetch(ToolkitConfig.WeChatPayServer, {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n user: user?.AVUser.get('objectId'),\n order: orderId,\n cmd: 'check',\n }),\n });\n const res = await rawResponse.json();\n // console.log(res);\n if (rawResponse.status === 200 && !res.error) {\n return { paid: res.paid };\n } else {\n return { paid: false, e: res.error };\n }\n } catch (e) {\n return { paid: false, e: e };\n }\n },\n\n recover: async () => {\n const { paid, e } = await VipAndroidManager.queryOrder();\n if (paid && !e) {\n await Purchases.invalidateCustomerInfoCache();\n console.log('恢复成功');\n return { errorCode: 0 };\n } else {\n if (e) {\n console.log('恢复失败(-3)', JSON.stringify(e));\n return { errorCode: -3, errorMsg: JSON.stringify(e) };\n } else {\n console.log('恢复失败(-2)');\n return { errorCode: -2 };\n }\n }\n },\n\n getPackages: (offeringId?: string) => {\n if (offeringId) {\n return AndroidOfferings[offeringId];\n }\n\n return AndroidOfferings.current;\n },\n\n purchase: async (purchasePackage: PurchasesPackage) => {\n try {\n const user = LoginManager.currentUser();\n // Step1:生成预订单\n const rawResponse = await fetch(ToolkitConfig.WeChatPayServer, {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n user: user?.AVUser.get('objectId'),\n product: purchasePackage.product?.identifier,\n cmd: 'prepare',\n }),\n });\n const res = await rawResponse.json();\n // console.log(res);\n if (rawResponse.status === 200 && !res.error) {\n // Step2:调用微信支付 SDK\n const { errCode, errStr } = await WeChat.pay(res.payload);\n if (errCode) {\n console.log('购买失败(-5)', errStr);\n return { errorCode: -5, errorMsg: errStr };\n }\n // 虽然没什么问题,但保险起见还是延时下,让后台先更新\n await Tool.sleep(4000);\n // Step3:查询后台\n const { paid, e } = await VipAndroidManager.queryOrder(\n res.payload.order\n );\n if (paid && !e) {\n await Purchases.invalidateCustomerInfoCache();\n return { errorCode: 0 };\n } else {\n console.log('购买失败(-5)', JSON.stringify(e));\n return { errorCode: -5, errorMsg: JSON.stringify(e) };\n }\n } else {\n console.log('购买失败(-5)', JSON.stringify(res?.error));\n return { errorCode: -5, errorMsg: JSON.stringify(res?.error) };\n }\n } catch (e) {\n console.log('购买失败(-5)', JSON.stringify(e));\n return { errorCode: -5, errorMsg: JSON.stringify(e) };\n }\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["Purchases","WeChat","LoginManager","Tool","ToolkitConfig","AndroidOfferings","VipAndroidManager","setOfferings","offerings","queryOrder","orderId","user","currentUser","rawResponse","fetch","WeChatPayServer","method","headers","body","JSON","stringify","AVUser","get","order","cmd","res","json","status","error","paid","e","recover","invalidateCustomerInfoCache","console","log","errorCode","errorMsg","getPackages","offeringId","current","purchase","purchasePackage","_purchasePackage$prod","product","identifier","errCode","errStr","pay","payload","sleep","code"],"sources":["VipAndroidManager.ts"],"sourcesContent":["import Purchases, { PurchasesPackage } from 'react-native-purchases';\nimport * as WeChat from 'react-native-wechat-lib';\nimport { LoginManager } from './LoginManager';\nimport { Tool, ToolkitConfig } from './Tool';\nlet AndroidOfferings: { [key: string]: PurchasesPackage[] };\n\nexport const VipAndroidManager = {\n setOfferings: (offerings: { [key: string]: PurchasesPackage[] }) => {\n AndroidOfferings = offerings;\n },\n\n queryOrder: async (orderId?: string) => {\n const user = LoginManager.currentUser();\n // Step1:生成预订单\n try {\n const rawResponse = await fetch(ToolkitConfig.WeChatPayServer, {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n user: user?.AVUser.get('objectId'),\n order: orderId,\n cmd: 'check',\n }),\n });\n const res = await rawResponse.json();\n // console.log(res);\n if (rawResponse.status === 200 && !res.error) {\n return { paid: res.paid };\n } else {\n return { paid: false, e: res.error };\n }\n } catch (e) {\n return { paid: false, e: e };\n }\n },\n\n recover: async () => {\n const { paid, e } = await VipAndroidManager.queryOrder();\n if (paid && !e) {\n await Purchases.invalidateCustomerInfoCache();\n console.log('恢复成功');\n return { errorCode: 0 };\n } else {\n if (e) {\n console.log('恢复失败(-3)', JSON.stringify(e));\n return { errorCode: -3, errorMsg: JSON.stringify(e) };\n } else {\n console.log('恢复失败(-2)');\n return { errorCode: -2 };\n }\n }\n },\n\n getPackages: (offeringId?: string) => {\n if (offeringId) {\n return AndroidOfferings[offeringId];\n }\n\n return AndroidOfferings.current;\n },\n\n purchase: async (purchasePackage: PurchasesPackage) => {\n try {\n const user = LoginManager.currentUser();\n // Step1:生成预订单\n const rawResponse = await fetch(ToolkitConfig.WeChatPayServer, {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n user: user?.AVUser.get('objectId'),\n product: purchasePackage.product?.identifier,\n cmd: 'prepare',\n }),\n });\n const res = await rawResponse.json();\n // console.log(res);\n if (rawResponse.status === 200 && !res.error) {\n // Step2:调用微信支付 SDK\n const { errCode, errStr } = await WeChat.pay(res.payload);\n if (errCode) {\n console.log('购买失败(-5,1)', errStr);\n return { errorCode: -5, errorMsg: errStr };\n }\n // 虽然没什么问题,但保险起见还是延时下,让后台先更新\n await Tool.sleep(4000);\n // Step3:查询后台\n const { paid, e } = await VipAndroidManager.queryOrder(\n res.payload.order\n );\n if (paid && !e) {\n await Purchases.invalidateCustomerInfoCache();\n return { errorCode: 0 };\n } else {\n console.log('购买失败(-5,2)', JSON.stringify(e));\n return { errorCode: -5, errorMsg: JSON.stringify(e) };\n }\n } else {\n console.log('购买失败(-5,3)', JSON.stringify(res?.error));\n return { errorCode: -5, errorMsg: JSON.stringify(res?.error) };\n }\n } catch (e: any) {\n console.log('购买失败(-5,4)', JSON.stringify(e));\n if (e.code === -2) {\n return { errorCode: -2 };\n }\n return { errorCode: -5, errorMsg: JSON.stringify(e) };\n }\n },\n};\n"],"mappings":"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"}
@@ -14,5 +14,6 @@ declare const ConfigDataModel: {
14
14
  emitChange: () => void;
15
15
  addListenerOnce: (callback: Function) => void;
16
16
  addListener: (callback: Function) => void;
17
+ shouldEnableByRate: (enable?: boolean, rate?: number) => boolean;
17
18
  };
18
19
  export { ConfigDataModel };
@@ -20,6 +20,15 @@ export interface ToolkitConfigType {
20
20
  WeiXinSecret: string;
21
21
  SentryDSN: string;
22
22
  }
23
+ interface AlertConfig {
24
+ title?: string;
25
+ message?: string;
26
+ buttons: {
27
+ text: string;
28
+ target?: string;
29
+ report?: string;
30
+ }[];
31
+ }
23
32
  export declare let ToolkitConfig: ToolkitConfigType;
24
33
  export declare const initToolkitConfig: (config: ToolkitConfigType) => void;
25
34
  export declare const Tool: {
@@ -43,6 +52,7 @@ export declare const Tool: {
43
52
  humanFileSize: (bytes: number, si?: boolean, dp?: number) => string;
44
53
  useForceUpdate: () => () => void;
45
54
  showToast: (toast: string) => void;
55
+ alertWithConfig: (config?: AlertConfig) => boolean;
46
56
  goAppStoreReview: () => void;
47
57
  goUpgrade: () => void;
48
58
  notifyMe: (text: string) => Promise<void>;
@@ -60,3 +70,4 @@ export declare const Tool: {
60
70
  isPad: () => boolean;
61
71
  isHorizontalPad: () => boolean;
62
72
  };
73
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@norcy/react-native-toolkit",
3
- "version": "0.1.111",
3
+ "version": "0.1.113",
4
4
  "description": "My Toolkit",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -2,7 +2,7 @@ import { Object } from 'leancloud-storage';
2
2
  import { Platform } from 'react-native';
3
3
  import { getReadableVersion } from 'react-native-device-info';
4
4
  import { DevConfig } from './DevConfig';
5
- import { LoginResultDataType } from './LoginManager';
5
+ import { LoginManager, LoginResultDataType } from './LoginManager';
6
6
  import { Notification } from './Notification';
7
7
  import { BuildInPrefs } from './PrefData';
8
8
  import { VipAndroidManager } from './VipAndroidManager';
@@ -85,9 +85,8 @@ const handleVersionInfo = () => {
85
85
 
86
86
  let isDataReady = false;
87
87
  let isNetwordDataReady = false;
88
- let OnlineItems: Object[] = [];
89
88
 
90
- const _handleResponse = () => {
89
+ const _handleResponse = (OnlineItems: Object[]) => {
91
90
  if (!isNetwordDataReady) {
92
91
  return;
93
92
  }
@@ -103,6 +102,7 @@ const _handleResponse = () => {
103
102
  ConfigDataModel.emitChange();
104
103
  };
105
104
 
105
+ // ConfigDataModel 的 Config 是支持后台配置多条同一个 Key 的,按版本区分
106
106
  const ConfigDataModel = {
107
107
  init: (defaultValues: ConfigsType) => {
108
108
  MyItems = defaultValues;
@@ -113,7 +113,6 @@ const ConfigDataModel = {
113
113
  if (!isAuto && user && !error) {
114
114
  isDataReady = false;
115
115
  isNetwordDataReady = false;
116
- OnlineItems = [];
117
116
  ConfigDataModel.fetch();
118
117
  }
119
118
  }
@@ -135,8 +134,7 @@ const ConfigDataModel = {
135
134
  .then((items: Object[]) => {
136
135
  console.log('Config 抓取完毕');
137
136
  isNetwordDataReady = true;
138
- OnlineItems = items;
139
- _handleResponse();
137
+ _handleResponse(items);
140
138
  })
141
139
  .catch((e: any) => {
142
140
  console.error(e);
@@ -170,6 +168,21 @@ const ConfigDataModel = {
170
168
  }
171
169
  eventEmitter.on('change', callback);
172
170
  },
171
+
172
+ shouldEnableByRate: (enable?: boolean, rate?: number) => {
173
+ if (!enable) {
174
+ return false;
175
+ }
176
+ // rate 不传,默认为全量
177
+ const r = rate ?? 1;
178
+ if (r <= 0) {
179
+ return false;
180
+ }
181
+ // ID 最后一位是 16 进制(0-f),未登录默认为全量
182
+ const lastChar =
183
+ LoginManager.currentUser()?.AVUser?.get('objectId')?.slice(-1) ?? '0';
184
+ return '0123456789abcdef'.indexOf(lastChar.toLowerCase()) < r * 16;
185
+ },
173
186
  };
174
187
 
175
188
  export { ConfigDataModel };
package/src/ReportUtil.ts CHANGED
@@ -99,7 +99,7 @@ export const ReportUtil = {
99
99
 
100
100
  const validParams = convertToValidParams(params);
101
101
  const realParams = { ...validParams, ...ReportUtil.getCommonInfo() };
102
- console.log('[Report]', realParams);
102
+ console.log('[Report]', eventId, realParams);
103
103
  if (!__DEV__) {
104
104
  NativeModules.NCYReport.report(eventId, realParams);
105
105
  }
package/src/Tool.ts CHANGED
@@ -1,6 +1,8 @@
1
+ import { AppLink } from '@norcy/react-native-toolkit';
1
2
  import CameraRoll from '@react-native-community/cameraroll';
2
3
  import { useState } from 'react';
3
4
  import {
5
+ Alert,
4
6
  Linking,
5
7
  NativeModules,
6
8
  PermissionsAndroid,
@@ -40,6 +42,16 @@ export interface ToolkitConfigType {
40
42
  SentryDSN: string;
41
43
  }
42
44
 
45
+ interface AlertConfig {
46
+ title?: string;
47
+ message?: string;
48
+ buttons: {
49
+ text: string;
50
+ target?: string;
51
+ report?: string;
52
+ }[];
53
+ }
54
+
43
55
  export let ToolkitConfig: ToolkitConfigType;
44
56
 
45
57
  export const initToolkitConfig = (config: ToolkitConfigType) => {
@@ -61,6 +73,40 @@ const _jsonify = (target: any): any => {
61
73
  return target;
62
74
  };
63
75
 
76
+ const _getAlertDataFromConfig = (config?: AlertConfig) => {
77
+ if (!config) {
78
+ return undefined;
79
+ }
80
+
81
+ const ret: any = {
82
+ title: config.title,
83
+ message: config.message,
84
+ };
85
+
86
+ const buttons: any = [];
87
+
88
+ for (const button of config.buttons) {
89
+ if (button.target) {
90
+ buttons.push({
91
+ text: button.text,
92
+ onPress: () => {
93
+ button.report && ReportUtil.report(button.report);
94
+ AppLink.open(button.target);
95
+ },
96
+ });
97
+ } else {
98
+ buttons.push({
99
+ text: button.text,
100
+ style: 'cancel',
101
+ });
102
+ }
103
+ }
104
+
105
+ ret.buttons = buttons;
106
+
107
+ return ret;
108
+ };
109
+
64
110
  let androidVibratePermissionStatus = -1;
65
111
 
66
112
  let VibrateEnable: boolean | undefined;
@@ -174,7 +220,18 @@ export const Tool = {
174
220
  },
175
221
 
176
222
  showToast: (toast: string) => {
177
- Toast.showWithGravity(toast, Toast.SHORT, Toast.CENTER);
223
+ if (toast) {
224
+ Toast.showWithGravity(toast, Toast.SHORT, Toast.CENTER);
225
+ }
226
+ },
227
+
228
+ alertWithConfig: (config?: AlertConfig) => {
229
+ const alertData = _getAlertDataFromConfig(config);
230
+ if (alertData) {
231
+ Alert.alert(alertData.title, alertData.message, alertData.buttons);
232
+ return true;
233
+ }
234
+ return false;
178
235
  },
179
236
 
180
237
  goAppStoreReview: () => {
@@ -84,7 +84,7 @@ export const VipAndroidManager = {
84
84
  // Step2:调用微信支付 SDK
85
85
  const { errCode, errStr } = await WeChat.pay(res.payload);
86
86
  if (errCode) {
87
- console.log('购买失败(-5)', errStr);
87
+ console.log('购买失败(-5,1)', errStr);
88
88
  return { errorCode: -5, errorMsg: errStr };
89
89
  }
90
90
  // 虽然没什么问题,但保险起见还是延时下,让后台先更新
@@ -97,15 +97,18 @@ export const VipAndroidManager = {
97
97
  await Purchases.invalidateCustomerInfoCache();
98
98
  return { errorCode: 0 };
99
99
  } else {
100
- console.log('购买失败(-5)', JSON.stringify(e));
100
+ console.log('购买失败(-5,2)', JSON.stringify(e));
101
101
  return { errorCode: -5, errorMsg: JSON.stringify(e) };
102
102
  }
103
103
  } else {
104
- console.log('购买失败(-5)', JSON.stringify(res?.error));
104
+ console.log('购买失败(-5,3)', JSON.stringify(res?.error));
105
105
  return { errorCode: -5, errorMsg: JSON.stringify(res?.error) };
106
106
  }
107
- } catch (e) {
108
- console.log('购买失败(-5)', JSON.stringify(e));
107
+ } catch (e: any) {
108
+ console.log('购买失败(-5,4)', JSON.stringify(e));
109
+ if (e.code === -2) {
110
+ return { errorCode: -2 };
111
+ }
109
112
  return { errorCode: -5, errorMsg: JSON.stringify(e) };
110
113
  }
111
114
  },
@@ -1,9 +0,0 @@
1
- {
2
- "editor.formatOnSave": true,
3
- "editor.codeActionsOnSave": {
4
- "source.organizeImports": "explicit"
5
- },
6
- "prettier.tabWidth": 4,
7
- "prettier.jsxBracketSameLine": true,
8
- "editor.tabSize": 2
9
- }
@@ -1,4 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <Workspace
3
- version = "1.0">
4
- </Workspace>