@tarojs/taro-rn 4.0.1 → 4.0.3-alpha.0
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/LICENSE +8 -8
- package/apiList.js +31 -31
- package/dist/api/index.js +1 -1
- package/dist/api/index.js.map +1 -1
- package/dist/lib/Mask.js +2 -2
- package/dist/lib/Mask.js.map +1 -1
- package/dist/lib/Popup.js +20 -13
- package/dist/lib/Popup.js.map +1 -1
- package/dist/lib/StyleSheet.js +1 -1
- package/dist/lib/StyleSheet.js.map +1 -1
- package/dist/lib/accelerometer.js +1 -1
- package/dist/lib/accelerometer.js.map +1 -1
- package/dist/lib/chooseImage/index.js +3 -151
- package/dist/lib/chooseImage/index.js.map +1 -1
- package/dist/lib/chooseMedia/index.js +19 -0
- package/dist/lib/chooseMedia/index.js.map +1 -0
- package/dist/lib/chooseVideo/index.js +1 -55
- package/dist/lib/chooseVideo/index.js.map +1 -1
- package/dist/lib/clearStorage/index.js +2 -2
- package/dist/lib/clearStorage/index.js.map +1 -1
- package/dist/lib/compressImage/index.js +1 -1
- package/dist/lib/compressImage/index.js.map +1 -1
- package/dist/lib/connectSocket/index.js.map +1 -1
- package/dist/lib/connectSocket/socketTask.js +1 -1
- package/dist/lib/connectSocket/socketTask.js.map +1 -1
- package/dist/lib/createCameraContext/index.js +3 -3
- package/dist/lib/createCameraContext/index.js.map +1 -1
- package/dist/lib/createInnerAudioContext/index.js +2 -2
- package/dist/lib/createInnerAudioContext/index.js.map +1 -1
- package/dist/lib/createVideoContext/index.js +7 -7
- package/dist/lib/createVideoContext/index.js.map +1 -1
- package/dist/lib/deviceMotion.js +2 -2
- package/dist/lib/deviceMotion.js.map +1 -1
- package/dist/lib/file.js +4 -4
- package/dist/lib/file.js.map +1 -1
- package/dist/lib/getAppBaseInfo/index.js +2 -2
- package/dist/lib/getAppBaseInfo/index.js.map +1 -1
- package/dist/lib/getClipboardData/index.js.map +1 -1
- package/dist/lib/getImageInfo/index.js +2 -2
- package/dist/lib/getImageInfo/index.js.map +1 -1
- package/dist/lib/getLocation/index.js +8 -4
- package/dist/lib/getLocation/index.js.map +1 -1
- package/dist/lib/getRecorderManager/index.js +11 -6
- package/dist/lib/getRecorderManager/index.js.map +1 -1
- package/dist/lib/getStorage/index.js.map +1 -1
- package/dist/lib/getStorageInfo/index.js +2 -2
- package/dist/lib/getStorageInfo/index.js.map +1 -1
- package/dist/lib/getSystemInfo/index.js +1 -1
- package/dist/lib/getSystemInfo/index.js.map +1 -1
- package/dist/lib/getSystemInfoSync/index.js +2 -2
- package/dist/lib/getSystemInfoSync/index.js.map +1 -1
- package/dist/lib/gyroscope.js +1 -1
- package/dist/lib/gyroscope.js.map +1 -1
- package/dist/lib/index.js +1 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/keyboard.js +3 -3
- package/dist/lib/keyboard.js.map +1 -1
- package/dist/lib/location.js.map +1 -1
- package/dist/lib/makePhoneCall/index.js +1 -1
- package/dist/lib/makePhoneCall/index.js.map +1 -1
- package/dist/lib/media.js +61 -30
- package/dist/lib/media.js.map +1 -1
- package/dist/lib/network.js +1 -1
- package/dist/lib/network.js.map +1 -1
- package/dist/lib/offWindowResize/index.js.map +1 -1
- package/dist/lib/onWindowResize/index.js +1 -1
- package/dist/lib/onWindowResize/index.js.map +1 -1
- package/dist/lib/openUrl/index.js +1 -1
- package/dist/lib/openUrl/index.js.map +1 -1
- package/dist/lib/permission.js +6 -5
- package/dist/lib/permission.js.map +1 -1
- package/dist/lib/previewImage/index.js +3 -3
- package/dist/lib/previewImage/index.js.map +1 -1
- package/dist/lib/request/index.js +1 -1
- package/dist/lib/request/index.js.map +1 -1
- package/dist/lib/scanCode/index.js +23 -23
- package/dist/lib/scanCode/index.js.map +1 -1
- package/dist/lib/screen.js +2 -2
- package/dist/lib/screen.js.map +1 -1
- package/dist/lib/setClipboardData/index.js +2 -2
- package/dist/lib/setClipboardData/index.js.map +1 -1
- package/dist/lib/setKeepScreenOn/index.js +1 -1
- package/dist/lib/setKeepScreenOn/index.js.map +1 -1
- package/dist/lib/setStorage/index.js.map +1 -1
- package/dist/lib/showActionSheet/ActionSheet.js +11 -23
- package/dist/lib/showActionSheet/ActionSheet.js.map +1 -1
- package/dist/lib/showActionSheet/index.js +10 -24
- package/dist/lib/showActionSheet/index.js.map +1 -1
- package/dist/lib/showModal/Dialog.js +22 -36
- package/dist/lib/showModal/Dialog.js.map +1 -1
- package/dist/lib/showModal/index.js.map +1 -1
- package/dist/lib/showModal/toast.js +6 -6
- package/dist/lib/showModal/toast.js.map +1 -1
- package/dist/lib/unsupportedApi.js +2 -4
- package/dist/lib/unsupportedApi.js.map +1 -1
- package/dist/lib/variable.js +1 -1
- package/dist/lib/variable.js.map +1 -1
- package/dist/lib/vibrate.js +1 -1
- package/dist/lib/vibrate.js.map +1 -1
- package/dist/lib/window.js.map +1 -1
- package/dist/utils/callbackManager.js.map +1 -1
- package/dist/utils/index.js.map +1 -1
- package/libList.js +1 -0
- package/package.json +70 -69
- package/src/api/index.ts +31 -31
- package/src/lib/ENV_TYPE/index.ts +1 -1
- package/src/lib/Mask.tsx +2 -2
- package/src/lib/Popup.tsx +26 -19
- package/src/lib/StyleSheet.ts +1 -1
- package/src/lib/accelerometer.ts +2 -1
- package/src/lib/arrayBufferToBase64/index.ts +1 -1
- package/src/lib/base64ToArrayBuffer/index.ts +1 -1
- package/src/lib/chooseImage/index.ts +3 -155
- package/src/lib/chooseMedia/index.ts +15 -0
- package/src/lib/chooseVideo/index.ts +1 -56
- package/src/lib/clearStorage/index.ts +1 -0
- package/src/lib/clearStorageSync/index.ts +1 -1
- package/src/lib/compressImage/index.ts +1 -0
- package/src/lib/connectSocket/socketTask.ts +7 -9
- package/src/lib/createCameraContext/index.ts +6 -4
- package/src/lib/createInnerAudioContext/index.ts +1 -0
- package/src/lib/createSelectorQuery/index.ts +1 -1
- package/src/lib/deviceMotion.ts +4 -3
- package/src/lib/file.ts +9 -8
- package/src/lib/getClipboardData/index.ts +1 -0
- package/src/lib/getEnv/index.ts +1 -1
- package/src/lib/getFileSystemManager/index.ts +1 -1
- package/src/lib/getLocation/index.ts +7 -2
- package/src/lib/getRecorderManager/index.ts +7 -2
- package/src/lib/getStorage/index.ts +1 -0
- package/src/lib/getStorageInfo/index.ts +1 -0
- package/src/lib/getStorageInfoSync/index.ts +1 -1
- package/src/lib/getStorageSync/index.ts +1 -1
- package/src/lib/getSystemInfo/index.ts +2 -2
- package/src/lib/getSystemInfoSync/index.ts +3 -3
- package/src/lib/gyroscope.ts +47 -46
- package/src/lib/index.ts +1 -0
- package/src/lib/keyboard.ts +5 -4
- package/src/lib/location.ts +6 -5
- package/src/lib/makePhoneCall/index.ts +2 -1
- package/src/lib/media.ts +83 -31
- package/src/lib/network.ts +5 -5
- package/src/lib/offLocationChange/index.ts +1 -1
- package/src/lib/offUserCaptureScreen/index.ts +1 -1
- package/src/lib/onLocationChange/index.ts +1 -1
- package/src/lib/onUserCaptureScreen/index.ts +1 -1
- package/src/lib/onWindowResize/index.ts +2 -2
- package/src/lib/openUrl/index.d.ts +23 -22
- package/src/lib/openUrl/index.ts +2 -1
- package/src/lib/permission.ts +33 -25
- package/src/lib/previewImage/index.tsx +4 -3
- package/src/lib/removeStorageSync/index.ts +1 -1
- package/src/lib/request/index.ts +2 -2
- package/src/lib/scanCode/index.tsx +18 -16
- package/src/lib/screen.ts +1 -0
- package/src/lib/setClipboardData/index.ts +3 -2
- package/src/lib/setKeepScreenOn/index.ts +2 -1
- package/src/lib/setStorage/index.ts +1 -0
- package/src/lib/setStorageSync/index.ts +1 -1
- package/src/lib/showActionSheet/ActionSheet.tsx +34 -43
- package/src/lib/showActionSheet/index.tsx +11 -36
- package/src/lib/showModal/Dialog.tsx +34 -39
- package/src/lib/showModal/index.tsx +1 -0
- package/src/lib/showModal/toast.tsx +14 -13
- package/src/lib/startGyroscope/index.ts +1 -1
- package/src/lib/startLocationUpdate/index.ts +1 -1
- package/src/lib/unsupportedApi.ts +3 -5
- package/src/lib/vibrate.ts +11 -10
- package/src/lib/window.ts +3 -2
- package/src/utils/callbackManager.ts +5 -5
- package/src/utils/index.ts +4 -4
- package/{src/types → types}/vue/index.d.ts +2 -3
- package/dist/setup.js +0 -75
- package/dist/setup.js.map +0 -1
- package/src/__tests__/__mock__/mockAsyncStorage.js +0 -47
- package/src/__tests__/__mock__/mockClipboard.js +0 -15
- package/src/__tests__/__mock__/mockNavigator.js +0 -20
- package/src/__tests__/__mock__/mockNetwork.js +0 -59
- package/src/__tests__/__mock__/mockRNCCameraRoll.js +0 -16
- package/src/__tests__/__mock__/mockRNCGeolocation.js +0 -13
- package/src/__tests__/__mock__/mockVibrate.js +0 -6
- package/src/__tests__/__snapshots__/scanCode.test.tsx.snap +0 -125
- package/src/__tests__/clipboard.test.ts +0 -88
- package/src/__tests__/deviceMotion.test.ts +0 -37
- package/src/__tests__/geolocation.test.ts +0 -60
- package/src/__tests__/interactive.test.tsx +0 -101
- package/src/__tests__/keyboard.test.ts +0 -46
- package/src/__tests__/media.test.ts +0 -104
- package/src/__tests__/network.test.ts +0 -57
- package/src/__tests__/others.test.ts +0 -25
- package/src/__tests__/phone.test.ts +0 -31
- package/src/__tests__/request.test.ts +0 -146
- package/src/__tests__/scanCode.test.tsx +0 -14
- package/src/__tests__/storage.test.ts +0 -202
- package/src/__tests__/system.test.ts +0 -69
- package/src/__tests__/vibrate.test.ts +0 -27
- package/src/__tests__/websocket.test.ts +0 -169
- package/src/setup.ts +0 -84
- /package/{src/types → types}/definition.d.ts +0 -0
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
declare namespace Taro {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
2
|
+
namespace OpenUrl {
|
|
3
|
+
interface Option {
|
|
4
|
+
/** 跳转链接 */
|
|
5
|
+
url: string
|
|
6
|
+
/** 接口调用结束的回调函数(调用成功、失败都会执行) */
|
|
7
|
+
complete?: (res: TaroGeneral.CallbackResult) => void
|
|
8
|
+
/** 接口调用失败的回调函数 */
|
|
9
|
+
fail?: (res: TaroGeneral.CallbackResult) => void
|
|
10
|
+
/** 接口调用成功的回调函数 */
|
|
11
|
+
success?: (res: TaroGeneral.CallbackResult) => void
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* 由于 Expo 不支持原生的 SDK,所以无法通过集成原生的 SDK 的方式使用微信/支付宝支付。
|
|
17
|
+
* 所以 RN 端提供了 `Taro.openUrl({url:''})`的 API 打开手机浏览器,然后走 [手机网站支付](https://docs.open.alipay.com/203/105288/) 的流程。
|
|
18
|
+
* @param {Object} opts
|
|
19
|
+
* @param {string} [opts.url] 跳转链接
|
|
20
|
+
* @param {function} [opts.success] 接口调用成功的回调函数
|
|
21
|
+
* @param {function} [opts.fail] 接口调用失败的回调函数
|
|
22
|
+
* @param {function} [opts.complete] 接口调用结束的回调函数(调用成功、失败都会执行)
|
|
23
|
+
*/
|
|
24
|
+
function openUrl<T>(opts: Taro.OpenUrl.Option): Promise<T>
|
|
24
25
|
}
|
package/src/lib/openUrl/index.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Linking } from 'react-native'
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
import { errorHandler, successHandler } from '../../utils'
|
|
3
4
|
|
|
4
5
|
export async function openUrl <T>(opts: Taro.OpenUrl.Option): Promise<T> {
|
|
5
6
|
const { url, success, fail, complete } = opts || {} as Taro.OpenUrl.Option
|
package/src/lib/permission.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { getCameraPermissionsAsync, getMicrophonePermissionsAsync, requestCameraPermissionsAsync, requestMicrophonePermissionsAsync } from 'expo-camera'
|
|
1
|
+
import { Camera } from 'expo-camera'
|
|
3
2
|
import { getMediaLibraryPermissionsAsync, requestMediaLibraryPermissionsAsync } from 'expo-image-picker'
|
|
4
3
|
import {
|
|
5
4
|
getForegroundPermissionsAsync,
|
|
@@ -7,7 +6,16 @@ import {
|
|
|
7
6
|
requestForegroundPermissionsAsync,
|
|
8
7
|
// requestBackgroundPermissionsAsync
|
|
9
8
|
} from 'expo-location'
|
|
10
|
-
import {
|
|
9
|
+
import { AppState, Linking, NativeEventSubscription } from 'react-native'
|
|
10
|
+
|
|
11
|
+
import { errorHandler, successHandler } from '../utils'
|
|
12
|
+
|
|
13
|
+
const {
|
|
14
|
+
getCameraPermissionsAsync,
|
|
15
|
+
getMicrophonePermissionsAsync,
|
|
16
|
+
requestCameraPermissionsAsync,
|
|
17
|
+
requestMicrophonePermissionsAsync
|
|
18
|
+
} = Camera
|
|
11
19
|
|
|
12
20
|
const scopeMap = {
|
|
13
21
|
'scope.userLocation': [getForegroundPermissionsAsync, requestForegroundPermissionsAsync],
|
|
@@ -27,7 +35,7 @@ let stateListener // 缓存监听函数
|
|
|
27
35
|
let appStateSubscription: NativeEventSubscription | undefined
|
|
28
36
|
|
|
29
37
|
const getAuthSetting = async () => {
|
|
30
|
-
|
|
38
|
+
const auths = {}
|
|
31
39
|
|
|
32
40
|
await Promise.all(Object.keys(scopeMap).map(async key => {
|
|
33
41
|
const { granted } = await scopeMap[key][0]()
|
|
@@ -47,7 +55,7 @@ const handleAppStateChange = async (_nextAppState, resolve, reject, opts) => {
|
|
|
47
55
|
res.errMsg = 'openSetting:ok'
|
|
48
56
|
success?.(res)
|
|
49
57
|
complete?.(res)
|
|
50
|
-
|
|
58
|
+
|
|
51
59
|
appStateSubscription?.remove()
|
|
52
60
|
resolve(res)
|
|
53
61
|
} catch (error) {
|
|
@@ -59,39 +67,39 @@ const handleAppStateChange = async (_nextAppState, resolve, reject, opts) => {
|
|
|
59
67
|
}
|
|
60
68
|
}
|
|
61
69
|
// AppState.currentState = nextAppState;
|
|
62
|
-
}
|
|
70
|
+
}
|
|
63
71
|
|
|
64
72
|
export async function authorize(opts: Taro.authorize.Option): Promise<TaroGeneral.CallbackResult> {
|
|
65
73
|
const { scope, success, fail, complete } = opts
|
|
66
74
|
const res: any = {}
|
|
67
75
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
return errorHandler(fail, complete)(res)
|
|
76
|
-
}
|
|
77
|
-
} catch (error) {
|
|
78
|
-
res.errMsg = 'authorize:fail'
|
|
76
|
+
try {
|
|
77
|
+
const { granted } = await scopeMap[scope][1]()
|
|
78
|
+
if (granted) {
|
|
79
|
+
res.errMsg = 'authorize:ok'
|
|
80
|
+
return successHandler(success, complete)(res)
|
|
81
|
+
} else {
|
|
82
|
+
res.errMsg = 'authorize:denied/undetermined'
|
|
79
83
|
return errorHandler(fail, complete)(res)
|
|
80
84
|
}
|
|
85
|
+
} catch (error) {
|
|
86
|
+
res.errMsg = 'authorize:fail'
|
|
87
|
+
return errorHandler(fail, complete)(res)
|
|
88
|
+
}
|
|
81
89
|
}
|
|
82
90
|
|
|
83
91
|
export async function getSetting(opts: Taro.getSetting.Option = {}): Promise<Taro.getSetting.SuccessCallbackResult> {
|
|
84
92
|
const { success, fail, complete } = opts
|
|
85
93
|
const res: any = {}
|
|
86
94
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
+
try {
|
|
96
|
+
res.authSetting = await getAuthSetting()
|
|
97
|
+
res.errMsg = 'getSetting:ok'
|
|
98
|
+
return successHandler(success, complete)(res)
|
|
99
|
+
} catch (error) {
|
|
100
|
+
res.errMsg = 'getSetting:fail'
|
|
101
|
+
return errorHandler(fail, complete)(res)
|
|
102
|
+
}
|
|
95
103
|
}
|
|
96
104
|
|
|
97
105
|
export function openSetting(opts: Taro.openSetting.Option = {}): Promise<Taro.openSetting.SuccessCallbackResult> {
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
|
-
import {
|
|
3
|
-
import RootSiblings from 'react-native-root-siblings'
|
|
2
|
+
import { ActivityIndicator, Alert, Modal, StyleSheet, View } from 'react-native'
|
|
4
3
|
import ImageViewer from 'react-native-image-zoom-viewer'
|
|
5
|
-
import
|
|
4
|
+
import RootSiblings from 'react-native-root-siblings'
|
|
5
|
+
|
|
6
6
|
import { downloadFile } from '../file'
|
|
7
|
+
import { saveMedia } from '../media'
|
|
7
8
|
|
|
8
9
|
const styles = StyleSheet.create({
|
|
9
10
|
mask: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { removeStorageSync } from '../unsupportedApi'
|
|
1
|
+
export { removeStorageSync } from '../unsupportedApi'
|
package/src/lib/request/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { errorHandler, successHandler } from
|
|
1
|
+
import { errorHandler, successHandler } from '../../utils'
|
|
2
2
|
|
|
3
3
|
function serializeParams(params) {
|
|
4
4
|
if (!params) {
|
|
@@ -53,7 +53,7 @@ function _request<T = any>(options: Taro.request.Option): Taro.RequestTask<T> {
|
|
|
53
53
|
params.method = method
|
|
54
54
|
let controller
|
|
55
55
|
// eslint-disable-next-line no-undef
|
|
56
|
-
if (typeof(AbortController) !== 'undefined'
|
|
56
|
+
if (typeof (AbortController) !== 'undefined') {
|
|
57
57
|
// eslint-disable-next-line no-undef
|
|
58
58
|
controller = new AbortController()
|
|
59
59
|
const signal = controller.signal
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { initialWindowMetrics } from 'react-native-safe-area-context'
|
|
2
|
-
import { Camera } from 'expo-camera'
|
|
3
1
|
import { BarCodeScanner, requestPermissionsAsync } from 'expo-barcode-scanner'
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import
|
|
2
|
+
import { BarcodeType, CameraView } from 'expo-camera'
|
|
3
|
+
import React from 'react'
|
|
4
|
+
import { BackHandler, Dimensions, Image, Platform, StatusBar, StyleSheet, TouchableOpacity, View } from 'react-native'
|
|
7
5
|
import RootSiblings from 'react-native-root-siblings'
|
|
6
|
+
import { initialWindowMetrics } from 'react-native-safe-area-context'
|
|
7
|
+
|
|
8
8
|
import { chooseMedia, MEDIA_TYPE } from '../media'
|
|
9
|
-
import
|
|
9
|
+
import iconClose from './icon_close.png'
|
|
10
|
+
import iconPic from './icon_pic.png'
|
|
10
11
|
|
|
11
12
|
export let scannerView
|
|
12
13
|
|
|
@@ -47,13 +48,15 @@ function findKey (value:string, data, compare = (a, b) => a === b):string {
|
|
|
47
48
|
|
|
48
49
|
const { width, height } = Dimensions.get('screen')
|
|
49
50
|
|
|
50
|
-
function getBarCodeTypes(types:string[]):
|
|
51
|
-
const result:
|
|
51
|
+
function getBarCodeTypes(types:string[]): BarcodeType[] {
|
|
52
|
+
const result: BarcodeType[] = []
|
|
53
|
+
|
|
52
54
|
for (const t of types) {
|
|
53
55
|
result.push(...typeMap[t].map(type => {
|
|
54
56
|
return BarCodeType[type]
|
|
55
57
|
}))
|
|
56
58
|
}
|
|
59
|
+
|
|
57
60
|
return result.filter(r => !!r)
|
|
58
61
|
}
|
|
59
62
|
|
|
@@ -143,25 +146,25 @@ function scanFromPhoto(callback, errorCallBack) {
|
|
|
143
146
|
})
|
|
144
147
|
}
|
|
145
148
|
}
|
|
146
|
-
}, MEDIA_TYPE.
|
|
149
|
+
}, MEDIA_TYPE.Images).catch(errorCallBack)
|
|
147
150
|
}
|
|
148
151
|
|
|
149
152
|
export async function scanCode(option: Taro.scanCode.Option = {}): Promise<Taro.scanCode.SuccessCallbackResult> {
|
|
150
153
|
const { success, fail, complete, onlyFromCamera, scanType = ['barCode', 'qrCode'] } = option
|
|
151
|
-
const { granted } = await requestPermissionsAsync()
|
|
154
|
+
const { granted } = await requestPermissionsAsync()
|
|
152
155
|
if (!granted) {
|
|
153
156
|
const res = { errMsg: 'Permissions denied!' }
|
|
154
157
|
fail?.(res)
|
|
155
158
|
complete?.(res)
|
|
156
159
|
return Promise.reject(res)
|
|
157
160
|
}
|
|
158
|
-
const
|
|
161
|
+
const barcodeTypes = getBarCodeTypes(scanType)
|
|
159
162
|
return new Promise((resolve, reject) => {
|
|
160
163
|
scannerView = new RootSiblings(
|
|
161
164
|
(<View style={[styles.container]}>
|
|
162
165
|
<StatusBar backgroundColor="rgba(0, 0, 0, 0)" translucent hidden={Platform.OS === 'ios'} />
|
|
163
|
-
<
|
|
164
|
-
|
|
166
|
+
<CameraView
|
|
167
|
+
onBarcodeScanned={({ type, data }: {type: string, data: string}) => {
|
|
165
168
|
const res = {
|
|
166
169
|
charSet: 'UTF-8', // todo
|
|
167
170
|
path: '', // todo
|
|
@@ -175,11 +178,10 @@ export async function scanCode(option: Taro.scanCode.Option = {}): Promise<Taro.
|
|
|
175
178
|
hide(scannerView)
|
|
176
179
|
resolve(res)
|
|
177
180
|
}}
|
|
178
|
-
|
|
179
|
-
|
|
181
|
+
barcodeScannerSettings={{
|
|
182
|
+
barcodeTypes,
|
|
180
183
|
}}
|
|
181
184
|
style={{ width, height }}
|
|
182
|
-
ratio='16:9'
|
|
183
185
|
/>
|
|
184
186
|
<TouchableOpacity accessibilityLabel="Close" style={styles.closeIcon} onPress={() => hide(scannerView)}>
|
|
185
187
|
{safeViewWrapper(<Image source={iconClose} style={styles.closeImg}/>)}
|
package/src/lib/screen.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Clipboard from '@react-native-clipboard/clipboard'
|
|
2
|
+
|
|
3
|
+
import { errorHandler, successHandler } from '../../utils'
|
|
2
4
|
import { showToast } from '../showModal/toast'
|
|
3
|
-
import { successHandler, errorHandler } from '../../utils'
|
|
4
5
|
|
|
5
6
|
export function setClipboardData(opts: Taro.setClipboardData.Option): Promise<Taro.setClipboardData.Promised> {
|
|
6
7
|
const { data, success, fail, complete } = opts
|
|
@@ -18,7 +19,7 @@ export function setClipboardData(opts: Taro.setClipboardData.Option): Promise<Ta
|
|
|
18
19
|
data,
|
|
19
20
|
}
|
|
20
21
|
showToast({
|
|
21
|
-
icon:
|
|
22
|
+
icon: 'none',
|
|
22
23
|
title: '内容已复制'
|
|
23
24
|
})
|
|
24
25
|
return successHandler(success, complete)(res)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { setStorageSync } from '../unsupportedApi'
|
|
1
|
+
export { setStorageSync } from '../unsupportedApi'
|
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ViewPropTypes } from 'deprecated-react-native-prop-types'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
|
+
import React from 'react'
|
|
3
4
|
import {
|
|
4
|
-
|
|
5
|
+
Platform,
|
|
6
|
+
StyleSheet,
|
|
5
7
|
Text,
|
|
6
8
|
TouchableHighlight,
|
|
7
|
-
|
|
8
|
-
Platform
|
|
9
|
+
View
|
|
9
10
|
} from 'react-native'
|
|
10
|
-
import {
|
|
11
|
-
|
|
11
|
+
import { initialWindowMetrics } from 'react-native-safe-area-context'
|
|
12
|
+
|
|
12
13
|
import { Popup } from '../Popup'
|
|
13
14
|
import V from '../variable'
|
|
14
15
|
|
|
15
16
|
const styles = StyleSheet.create({
|
|
16
|
-
|
|
17
|
+
actionsheet: {
|
|
17
18
|
backgroundColor: V.weuiBgColorDefault
|
|
18
19
|
},
|
|
19
20
|
androidActionsheetWrapper: {
|
|
@@ -21,11 +22,6 @@ const styles = StyleSheet.create({
|
|
|
21
22
|
alignItems: 'center',
|
|
22
23
|
justifyContent: 'center'
|
|
23
24
|
},
|
|
24
|
-
androidActionsheet: {
|
|
25
|
-
width: 274,
|
|
26
|
-
backgroundColor: V.weuiBgColorDefault,
|
|
27
|
-
borderRadius: V.weuiActionSheetAndroidBorderRadius
|
|
28
|
-
},
|
|
29
25
|
actionsheetMenu: {
|
|
30
26
|
backgroundColor: '#fff'
|
|
31
27
|
},
|
|
@@ -36,29 +32,23 @@ const styles = StyleSheet.create({
|
|
|
36
32
|
actionsheetCell: {
|
|
37
33
|
borderTopWidth: StyleSheet.hairlineWidth,
|
|
38
34
|
borderColor: V.weuiCellBorderColor,
|
|
39
|
-
borderStyle: 'solid'
|
|
40
|
-
},
|
|
41
|
-
iosActionsheetCell: {
|
|
35
|
+
borderStyle: 'solid',
|
|
42
36
|
paddingTop: 10,
|
|
43
|
-
paddingBottom: 10
|
|
44
|
-
},
|
|
45
|
-
androidActionsheetCell: {
|
|
46
|
-
paddingTop: 13,
|
|
47
|
-
paddingBottom: 13,
|
|
37
|
+
paddingBottom: 10,
|
|
48
38
|
paddingLeft: 24,
|
|
49
39
|
paddingRight: 24
|
|
50
40
|
},
|
|
41
|
+
|
|
51
42
|
firstActionsheetCell: {
|
|
52
43
|
borderTopWidth: 0
|
|
53
44
|
},
|
|
54
|
-
|
|
45
|
+
actionSheetCellText: {
|
|
55
46
|
textAlign: 'center',
|
|
56
47
|
fontSize: 18,
|
|
57
48
|
marginTop: ((18 * V.baseLineHeight) - 18) / 2,
|
|
58
49
|
marginBottom: ((18 * V.baseLineHeight) - 18) / 2
|
|
59
50
|
},
|
|
60
51
|
androidActionsheetCellText: {
|
|
61
|
-
textAlign: 'center',
|
|
62
52
|
fontSize: 16,
|
|
63
53
|
marginTop: ((16 * 1.4) - 16) / 2,
|
|
64
54
|
marginBottom: ((16 * 1.4) - 16) / 2
|
|
@@ -105,7 +95,6 @@ const Index: React.FC<any> = ({
|
|
|
105
95
|
underlayColor={underlayColor}
|
|
106
96
|
style={[
|
|
107
97
|
styles.actionsheetCell,
|
|
108
|
-
styles[`${_type}ActionsheetCell`],
|
|
109
98
|
idx === 0 ? styles.firstActionsheetCell : {},
|
|
110
99
|
btnStyle
|
|
111
100
|
]}
|
|
@@ -113,6 +102,8 @@ const Index: React.FC<any> = ({
|
|
|
113
102
|
>
|
|
114
103
|
<Text
|
|
115
104
|
style={[
|
|
105
|
+
|
|
106
|
+
styles.actionSheetCellText,
|
|
116
107
|
styles[`${_type}ActionsheetCellText`],
|
|
117
108
|
styles[`${btnType}ActionsheetCellText`],
|
|
118
109
|
textStyle
|
|
@@ -128,7 +119,6 @@ const Index: React.FC<any> = ({
|
|
|
128
119
|
underlayColor={underlayColor}
|
|
129
120
|
style={[
|
|
130
121
|
styles.actionsheetCell,
|
|
131
|
-
styles[`${_type}ActionsheetCell`],
|
|
132
122
|
idx === 0 ? styles.firstActionsheetCell : {},
|
|
133
123
|
btnStyle
|
|
134
124
|
]}
|
|
@@ -136,6 +126,7 @@ const Index: React.FC<any> = ({
|
|
|
136
126
|
>
|
|
137
127
|
<Text
|
|
138
128
|
style={[
|
|
129
|
+
styles.actionSheetCellText,
|
|
139
130
|
styles[`${_type}ActionsheetCellText`],
|
|
140
131
|
styles[`${btnType}ActionsheetCellText`],
|
|
141
132
|
textStyle
|
|
@@ -145,29 +136,29 @@ const Index: React.FC<any> = ({
|
|
|
145
136
|
)
|
|
146
137
|
|
|
147
138
|
return <Popup
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
139
|
+
visible={visible}
|
|
140
|
+
style={[styles.actionsheet, style]}
|
|
141
|
+
maskStyle={maskStyle}
|
|
142
|
+
onShow={onShow}
|
|
143
|
+
onClose={onClose}
|
|
144
|
+
>
|
|
145
|
+
{menus.length
|
|
146
|
+
? <View style={[styles.actionsheetMenu]}>
|
|
147
|
+
{_renderMenuItems()}
|
|
148
|
+
</View>
|
|
149
|
+
: false}
|
|
150
|
+
{actions.length
|
|
151
|
+
? <View style={[styles.actionsheetAction]}>
|
|
152
|
+
{_renderActions()}
|
|
153
|
+
</View>
|
|
154
|
+
: false}
|
|
155
|
+
<View style={{ paddingBottom: Math.max(initialWindowMetrics?.insets.bottom || 0, 16), backgroundColor: '#fff' }}></View>
|
|
156
|
+
</Popup>
|
|
166
157
|
}
|
|
167
158
|
|
|
168
159
|
Index.propTypes = {
|
|
169
160
|
autoDectect: PropTypes.bool,
|
|
170
|
-
type: PropTypes.oneOf(['ios', 'android']),
|
|
161
|
+
type: PropTypes.oneOf(['ios', 'android', 'harmony']),
|
|
171
162
|
menus: PropTypes.any,
|
|
172
163
|
actions: PropTypes.any,
|
|
173
164
|
visible: PropTypes.bool,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import RootSiblings from 'react-native-root-siblings'
|
|
3
|
+
|
|
3
4
|
import ActionSheet from './ActionSheet'
|
|
4
5
|
|
|
5
6
|
function showActionSheet (obj: Taro.showActionSheet.Option): Promise<Taro.showActionSheet.SuccessCallbackResult> {
|
|
@@ -20,9 +21,13 @@ function showActionSheet (obj: Taro.showActionSheet.Option): Promise<Taro.showAc
|
|
|
20
21
|
sibling && sibling.destroy()
|
|
21
22
|
sibling = undefined
|
|
22
23
|
const res = { tapIndex, errMsg: 'showActionSheet:ok' }
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
// fix: iOS 无法打开相册
|
|
25
|
+
// https://github.com/expo/expo/issues/25705
|
|
26
|
+
setTimeout(() => {
|
|
27
|
+
success?.(res)
|
|
28
|
+
complete?.(res)
|
|
29
|
+
resolve(res)
|
|
30
|
+
}, 1)
|
|
26
31
|
}
|
|
27
32
|
|
|
28
33
|
function onFail () {
|
|
@@ -38,7 +43,7 @@ function showActionSheet (obj: Taro.showActionSheet.Option): Promise<Taro.showAc
|
|
|
38
43
|
<ActionSheet
|
|
39
44
|
autoDectect={autoDectect}
|
|
40
45
|
type={type}
|
|
41
|
-
visible={
|
|
46
|
+
visible={true}
|
|
42
47
|
onClose={onFail}
|
|
43
48
|
menus={
|
|
44
49
|
itemList.map((item, index) => {
|
|
@@ -46,7 +51,7 @@ function showActionSheet (obj: Taro.showActionSheet.Option): Promise<Taro.showAc
|
|
|
46
51
|
type: 'default',
|
|
47
52
|
label: item,
|
|
48
53
|
textStyle: { color: itemColor },
|
|
49
|
-
onPress: onSuccess
|
|
54
|
+
onPress: () => onSuccess(index)
|
|
50
55
|
}
|
|
51
56
|
}) as any
|
|
52
57
|
}
|
|
@@ -55,41 +60,11 @@ function showActionSheet (obj: Taro.showActionSheet.Option): Promise<Taro.showAc
|
|
|
55
60
|
type: 'default',
|
|
56
61
|
label: '取消',
|
|
57
62
|
textStyle: { color: itemColor },
|
|
58
|
-
onPress: onFail
|
|
63
|
+
onPress: onFail
|
|
59
64
|
}
|
|
60
65
|
] as any}
|
|
61
66
|
/>
|
|
62
67
|
)
|
|
63
|
-
|
|
64
|
-
// hack 的做法。不推荐
|
|
65
|
-
setTimeout(() => {
|
|
66
|
-
sibling.update(
|
|
67
|
-
<ActionSheet
|
|
68
|
-
autoDectect={autoDectect}
|
|
69
|
-
type={type}
|
|
70
|
-
visible
|
|
71
|
-
onClose={onFail}
|
|
72
|
-
menus={
|
|
73
|
-
itemList.map((item, index) => {
|
|
74
|
-
return {
|
|
75
|
-
type: 'default',
|
|
76
|
-
label: item,
|
|
77
|
-
textStyle: { color: itemColor },
|
|
78
|
-
onPress: onSuccess.bind(this, index)
|
|
79
|
-
}
|
|
80
|
-
}) as any
|
|
81
|
-
}
|
|
82
|
-
actions={[
|
|
83
|
-
{
|
|
84
|
-
type: 'default',
|
|
85
|
-
label: '取消',
|
|
86
|
-
textStyle: { color: itemColor },
|
|
87
|
-
onPress: onFail.bind(this)
|
|
88
|
-
}
|
|
89
|
-
] as any}
|
|
90
|
-
/>
|
|
91
|
-
)
|
|
92
|
-
}, 100)
|
|
93
68
|
})
|
|
94
69
|
}
|
|
95
70
|
|