@norcy/react-native-toolkit 0.1.101 → 0.1.102

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 ADDED
Binary file
@@ -0,0 +1,9 @@
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
+ }
package/ios/.DS_Store ADDED
Binary file
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Workspace
3
+ version = "1.0">
4
+ </Workspace>
@@ -290,6 +290,9 @@ const Tool = exports.Tool = {
290
290
  } else {
291
291
  return (0, _reactNativeDeviceInfo.isTablet)();
292
292
  }
293
+ },
294
+ isHorizontalPad: () => {
295
+ return (0, _reactNativeDeviceInfo.isLandscapeSync)() && Tool.isPad();
293
296
  }
294
297
  };
295
298
  //# sourceMappingURL=Tool.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_cameraroll","_interopRequireDefault","require","_react","_reactNative","_reactNativeDeviceInfo","_reactNativeSimpleToast","_PrefData","_ReportUtil","obj","__esModule","default","ToolkitConfig","exports","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","useState","showToast","toast","Toast","showWithGravity","SHORT","CENTER","goAppStoreReview","ReportUtil","report","Platform","OS","Linking","canOpenURL","then","supported","openURL","iOSReviewUrl","NativeModules","CheckPackageInstallation","isPackageInstalled","isInstalled","goToMarket","AndroidPackageName","AndroidStoreScheme","goUpgrade","iOSStoreScheme","AppWebsiteAlias","notifyMe","text","__DEV__","fetch","PushDeerUrl","encodeURIComponent","hasAndroidWritePermission","permission","PermissionsAndroid","PERMISSIONS","WRITE_EXTERNAL_STORAGE","hasPermission","check","NCYAPI","checkManagePermission","status","request","requestManagePermission","savePicture","albumName","console","log","errorCode","errMsg","CameraRoll","save","type","album","AppName","error","JSON","stringify","extension","ReactNativeBlobUtil","res","fileCache","appendExt","path","e1","setVibrateEnable","enable","PrefData","BuildInPrefs","Vibrate","getVibrateEnable","vibrate","getValue","_NativeModules$NCYVib","NCYVibration","Vibration","isPad","isTablet"],"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 { 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 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"],"mappings":"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"}
1
+ {"version":3,"names":["_cameraroll","_interopRequireDefault","require","_react","_reactNative","_reactNativeDeviceInfo","_reactNativeSimpleToast","_PrefData","_ReportUtil","obj","__esModule","default","ToolkitConfig","exports","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","useState","showToast","toast","Toast","showWithGravity","SHORT","CENTER","goAppStoreReview","ReportUtil","report","Platform","OS","Linking","canOpenURL","then","supported","openURL","iOSReviewUrl","NativeModules","CheckPackageInstallation","isPackageInstalled","isInstalled","goToMarket","AndroidPackageName","AndroidStoreScheme","goUpgrade","iOSStoreScheme","AppWebsiteAlias","notifyMe","text","__DEV__","fetch","PushDeerUrl","encodeURIComponent","hasAndroidWritePermission","permission","PermissionsAndroid","PERMISSIONS","WRITE_EXTERNAL_STORAGE","hasPermission","check","NCYAPI","checkManagePermission","status","request","requestManagePermission","savePicture","albumName","console","log","errorCode","errMsg","CameraRoll","save","type","album","AppName","error","JSON","stringify","extension","ReactNativeBlobUtil","res","fileCache","appendExt","path","e1","setVibrateEnable","enable","PrefData","BuildInPrefs","Vibrate","getVibrateEnable","vibrate","getValue","_NativeModules$NCYVib","NCYVibration","Vibration","isPad","isTablet","isHorizontalPad","isLandscapeSync"],"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 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,7 +1,7 @@
1
1
  import CameraRoll from '@react-native-community/cameraroll';
2
2
  import { useState } from 'react';
3
3
  import { Linking, NativeModules, PermissionsAndroid, Platform, Vibration } from 'react-native';
4
- import { isTablet } from 'react-native-device-info';
4
+ import { isLandscapeSync, isTablet } from 'react-native-device-info';
5
5
  import Toast from 'react-native-simple-toast';
6
6
  import { BuildInPrefs, PrefData } from './PrefData';
7
7
  import { ReportUtil } from './ReportUtil';
@@ -282,6 +282,9 @@ export const Tool = {
282
282
  } else {
283
283
  return isTablet();
284
284
  }
285
+ },
286
+ isHorizontalPad: () => {
287
+ return isLandscapeSync() && Tool.isPad();
285
288
  }
286
289
  };
287
290
  //# sourceMappingURL=Tool.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CameraRoll","useState","Linking","NativeModules","PermissionsAndroid","Platform","Vibration","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"],"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 { 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 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"],"mappings":"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"}
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 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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"}
@@ -57,4 +57,5 @@ export declare const Tool: {
57
57
  getVibrateEnable: () => boolean;
58
58
  vibrate: () => Promise<void>;
59
59
  isPad: () => boolean;
60
+ isHorizontalPad: () => boolean;
60
61
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@norcy/react-native-toolkit",
3
- "version": "0.1.101",
3
+ "version": "0.1.102",
4
4
  "description": "My Toolkit",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
package/src/.DS_Store ADDED
Binary file
package/src/Tool.ts CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  Platform,
8
8
  Vibration,
9
9
  } from 'react-native';
10
- import { isTablet } from 'react-native-device-info';
10
+ import { isLandscapeSync, isTablet } from 'react-native-device-info';
11
11
  import Toast from 'react-native-simple-toast';
12
12
  import { BuildInPrefs, PrefData } from './PrefData';
13
13
  import { ReportUtil } from './ReportUtil';
@@ -360,4 +360,8 @@ export const Tool = {
360
360
  return isTablet();
361
361
  }
362
362
  },
363
+
364
+ isHorizontalPad: () => {
365
+ return isLandscapeSync() && Tool.isPad();
366
+ },
363
367
  };