@tarojs/taro-rn 4.0.0-beta.6 → 4.0.0-beta.8
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/dist/lib/chooseImage/index.js +1 -39
- 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 -40
- package/dist/lib/chooseVideo/index.js.map +1 -1
- package/dist/lib/index.js +1 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/media.js +52 -20
- package/dist/lib/media.js.map +1 -1
- package/dist/lib/scanCode/index.js +1 -1
- package/libList.js +1 -0
- package/package.json +2 -2
- package/src/lib/chooseImage/index.ts +1 -29
- package/src/lib/chooseMedia/index.ts +15 -0
- package/src/lib/chooseVideo/index.ts +1 -31
- package/src/lib/index.ts +1 -0
- package/src/lib/media.ts +64 -19
- package/src/lib/scanCode/index.tsx +1 -1
|
@@ -1,43 +1,5 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { chooseMedia, MEDIA_TYPE } from '../media';
|
|
11
|
-
import { showActionSheet } from '../showActionSheet';
|
|
12
2
|
export function chooseImage(opts) {
|
|
13
|
-
|
|
14
|
-
if ((sourceType === null || sourceType === void 0 ? void 0 : sourceType.includes('camera')) && (sourceType === null || sourceType === void 0 ? void 0 : sourceType.includes('album'))) {
|
|
15
|
-
return showImagePicker(opts);
|
|
16
|
-
}
|
|
17
|
-
else if (sourceType === null || sourceType === void 0 ? void 0 : sourceType.includes('camera')) {
|
|
18
|
-
return chooseMedia(Object.assign(Object.assign({}, opts), { sourceType: ['camera'] }), MEDIA_TYPE.IMAGES);
|
|
19
|
-
}
|
|
20
|
-
return chooseMedia(Object.assign(Object.assign({}, opts), { sourceType: ['album'] }), MEDIA_TYPE.IMAGES);
|
|
21
|
-
}
|
|
22
|
-
function showImagePicker(options) {
|
|
23
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
-
const { fail, complete } = options;
|
|
25
|
-
try {
|
|
26
|
-
const res = yield showActionSheet({
|
|
27
|
-
itemList: ['拍照', '从手机相册选择'],
|
|
28
|
-
});
|
|
29
|
-
if (res.tapIndex === 0) {
|
|
30
|
-
return chooseMedia(Object.assign(Object.assign({}, options), { sourceType: ['camera'] }), MEDIA_TYPE.IMAGES);
|
|
31
|
-
}
|
|
32
|
-
if (res.tapIndex === 1) {
|
|
33
|
-
return chooseMedia(Object.assign(Object.assign({}, options), { sourceType: ['album'] }), MEDIA_TYPE.IMAGES);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
catch (err) {
|
|
37
|
-
const res = { errMsg: 'chooseImage: fail' };
|
|
38
|
-
fail === null || fail === void 0 ? void 0 : fail(res);
|
|
39
|
-
complete === null || complete === void 0 ? void 0 : complete(res);
|
|
40
|
-
}
|
|
41
|
-
});
|
|
3
|
+
return chooseMedia(opts, MEDIA_TYPE.Images);
|
|
42
4
|
}
|
|
43
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/chooseImage/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/chooseImage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAElD,MAAM,UAAU,WAAW,CAAC,IAA6B;IACvD,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;AAC7C,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { chooseMedia as _chooseMedia, MEDIA_TYPE } from '../media';
|
|
2
|
+
export function chooseMedia(opts) {
|
|
3
|
+
var _a;
|
|
4
|
+
if (((_a = opts.mediaType) === null || _a === void 0 ? void 0 : _a.length) === 1) {
|
|
5
|
+
if (opts.mediaType[0] === 'video') {
|
|
6
|
+
return _chooseMedia(opts, MEDIA_TYPE.Videos);
|
|
7
|
+
}
|
|
8
|
+
else if (opts.mediaType[0] === 'image') {
|
|
9
|
+
return _chooseMedia(opts, MEDIA_TYPE.Images);
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
return _chooseMedia(opts, MEDIA_TYPE.All);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
return _chooseMedia(opts, MEDIA_TYPE.All);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/chooseMedia/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAElE,MAAM,UAAU,WAAW,CAAE,IAA6B;;IACxD,IAAI,CAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,MAAM,MAAK,CAAC,EAAE;QAChC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;YACjC,OAAO,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;SAC7C;aAAM,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;YACxC,OAAO,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;SAC7C;aAAM;YACL,OAAO,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAAA;SAC1C;KACF;SAAM;QACL,OAAO,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAAA;KAC1C;AACH,CAAC"}
|
|
@@ -1,44 +1,5 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { chooseMedia, MEDIA_TYPE } from '../media';
|
|
11
|
-
import { showActionSheet } from '../showActionSheet';
|
|
12
2
|
export function chooseVideo(opts) {
|
|
13
|
-
|
|
14
|
-
opts = Object.assign(opts, { sizeType: compressed ? ['compressed'] : [] });
|
|
15
|
-
if ((sourceType === null || sourceType === void 0 ? void 0 : sourceType.includes('camera')) && (sourceType === null || sourceType === void 0 ? void 0 : sourceType.includes('album'))) {
|
|
16
|
-
return showVideoPicker(opts);
|
|
17
|
-
}
|
|
18
|
-
else if (sourceType === null || sourceType === void 0 ? void 0 : sourceType.includes('camera')) {
|
|
19
|
-
return chooseMedia(Object.assign(Object.assign({}, opts), { sourceType: ['camera'] }), MEDIA_TYPE.VIDEOS);
|
|
20
|
-
}
|
|
21
|
-
return chooseMedia(Object.assign(Object.assign({}, opts), { sourceType: ['album'] }), MEDIA_TYPE.VIDEOS);
|
|
22
|
-
}
|
|
23
|
-
function showVideoPicker(options) {
|
|
24
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
-
const { fail, complete } = options;
|
|
26
|
-
try {
|
|
27
|
-
const res = yield showActionSheet({
|
|
28
|
-
itemList: ['拍摄', '从手机相册选择'],
|
|
29
|
-
});
|
|
30
|
-
if (res.tapIndex === 0) {
|
|
31
|
-
return chooseMedia(Object.assign(Object.assign({}, options), { sourceType: ['camera'] }), MEDIA_TYPE.VIDEOS);
|
|
32
|
-
}
|
|
33
|
-
if (res.tapIndex === 1) {
|
|
34
|
-
return chooseMedia(Object.assign(Object.assign({}, options), { sourceType: ['album'] }), MEDIA_TYPE.VIDEOS);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
catch (err) {
|
|
38
|
-
const res = { errMsg: 'chooseVideo: fail' };
|
|
39
|
-
fail === null || fail === void 0 ? void 0 : fail(res);
|
|
40
|
-
complete === null || complete === void 0 ? void 0 : complete(res);
|
|
41
|
-
}
|
|
42
|
-
});
|
|
3
|
+
return chooseMedia(opts, MEDIA_TYPE.Videos);
|
|
43
4
|
}
|
|
44
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/chooseVideo/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/chooseVideo/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAElD,MAAM,UAAU,WAAW,CAAC,IAA6B;IACvD,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;AAC7C,CAAC"}
|
package/dist/lib/index.js
CHANGED
|
@@ -5,6 +5,7 @@ export * from './authorize';
|
|
|
5
5
|
export * from './base64ToArrayBuffer';
|
|
6
6
|
export * from './canIUse';
|
|
7
7
|
export * from './chooseImage';
|
|
8
|
+
export * from './chooseMedia';
|
|
8
9
|
export * from './chooseVideo';
|
|
9
10
|
export * from './clearStorage';
|
|
10
11
|
export * from './clearStorageSync';
|
package/dist/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AACrC,cAAc,aAAa,CAAA;AAC3B,cAAc,uBAAuB,CAAA;AACrC,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,cAAc,YAAY,CAAA;AAC1B,cAAc,uBAAuB,CAAA;AACrC,cAAc,aAAa,CAAA;AAC3B,cAAc,uBAAuB,CAAA;AACrC,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA;AACxC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA"}
|
package/dist/lib/media.js
CHANGED
|
@@ -9,16 +9,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { CameraRoll } from "@react-native-camera-roll/camera-roll";
|
|
11
11
|
import { requestCameraPermissionsAsync } from 'expo-camera';
|
|
12
|
-
import
|
|
12
|
+
import { requestMediaLibraryPermissionsAsync, launchImageLibraryAsync, launchCameraAsync, MediaTypeOptions, } from 'expo-image-picker';
|
|
13
13
|
import { successHandler, errorHandler } from '../utils';
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
IMAGES: 'Images'
|
|
17
|
-
};
|
|
14
|
+
import { showActionSheet } from "./showActionSheet";
|
|
15
|
+
export const MEDIA_TYPE = MediaTypeOptions;
|
|
18
16
|
export function saveMedia(opts, type, API) {
|
|
19
17
|
return __awaiter(this, void 0, void 0, function* () {
|
|
20
18
|
const { filePath, success, fail, complete } = opts;
|
|
21
|
-
const { granted } = yield
|
|
19
|
+
const { granted } = yield requestMediaLibraryPermissionsAsync();
|
|
22
20
|
if (!granted) {
|
|
23
21
|
const res = { errMsg: 'Permissions denied!' };
|
|
24
22
|
return errorHandler(fail, complete)(res);
|
|
@@ -36,38 +34,72 @@ export function saveMedia(opts, type, API) {
|
|
|
36
34
|
}
|
|
37
35
|
});
|
|
38
36
|
}
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
function showPicker(opts, mediaTypes) {
|
|
38
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
const { fail, complete } = opts;
|
|
40
|
+
try {
|
|
41
|
+
const res = yield showActionSheet({
|
|
42
|
+
itemList: ['拍摄', '从手机相册选择'],
|
|
43
|
+
});
|
|
44
|
+
if (res.tapIndex === 0) {
|
|
45
|
+
return _chooseMedia(Object.assign(Object.assign({}, opts), { sourceType: ['camera'] }), mediaTypes);
|
|
46
|
+
}
|
|
47
|
+
if (res.tapIndex === 1) {
|
|
48
|
+
return _chooseMedia(Object.assign(Object.assign({}, opts), { sourceType: ['album'] }), mediaTypes);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
const res = { errMsg: `choose${mediaTypes === MediaTypeOptions.Images ? 'Image' : mediaTypes === MediaTypeOptions.Videos ? 'Video' : 'Media'} fail` };
|
|
53
|
+
fail === null || fail === void 0 ? void 0 : fail(res);
|
|
54
|
+
complete === null || complete === void 0 ? void 0 : complete(res);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
export function chooseMedia(opts = {}, mediaTypes) {
|
|
41
59
|
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
-
|
|
43
|
-
|
|
60
|
+
const { sourceType = ['album', 'camera'], } = opts;
|
|
61
|
+
if ((sourceType === null || sourceType === void 0 ? void 0 : sourceType.includes('camera')) && (sourceType === null || sourceType === void 0 ? void 0 : sourceType.includes('album'))) {
|
|
62
|
+
return showPicker(opts, mediaTypes);
|
|
63
|
+
}
|
|
64
|
+
else if (sourceType === null || sourceType === void 0 ? void 0 : sourceType.includes('camera')) {
|
|
65
|
+
return _chooseMedia(Object.assign(Object.assign({}, opts), { sourceType: ['camera'] }), mediaTypes);
|
|
44
66
|
}
|
|
45
|
-
|
|
67
|
+
return _chooseMedia(Object.assign(Object.assign({}, opts), { sourceType: ['album'] }), mediaTypes);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
export function _chooseMedia(opts = {}, mediaTypes) {
|
|
71
|
+
var _a, _b, _c;
|
|
72
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
73
|
+
const { sizeType = [], sourceType = [], success, fail, complete, maxDuration, count = (mediaTypes === MEDIA_TYPE.Videos ? 1 : 9), compressed } = opts;
|
|
46
74
|
const options = {
|
|
47
75
|
mediaTypes,
|
|
48
|
-
quality: sizeType[0] === 'compressed' ? 0.7 : 1,
|
|
76
|
+
quality: (sizeType[0] === 'compressed' || compressed) ? 0.7 : 1,
|
|
49
77
|
videoMaxDuration: maxDuration,
|
|
50
|
-
allowsMultipleSelection:
|
|
51
|
-
selectionLimit:
|
|
78
|
+
allowsMultipleSelection: count > 1,
|
|
79
|
+
selectionLimit: count,
|
|
52
80
|
};
|
|
81
|
+
const messString = mediaTypes === MediaTypeOptions.Images ? 'Image' : mediaTypes === MediaTypeOptions.Videos ? 'Video' : 'Media';
|
|
53
82
|
const isCamera = sourceType[0] === 'camera';
|
|
54
|
-
const { granted } = isCamera ? yield requestCameraPermissionsAsync() : yield
|
|
83
|
+
const { granted } = isCamera ? yield requestCameraPermissionsAsync() : yield requestMediaLibraryPermissionsAsync();
|
|
55
84
|
if (!granted) {
|
|
56
85
|
const res = { errMsg: 'Permissions denied!' };
|
|
57
86
|
return errorHandler(fail, complete)(res);
|
|
58
87
|
}
|
|
59
|
-
let launchMediaAsync = isCamera ?
|
|
88
|
+
let launchMediaAsync = isCamera ? launchCameraAsync : launchImageLibraryAsync;
|
|
60
89
|
try {
|
|
61
90
|
const resp = yield launchMediaAsync(options);
|
|
62
91
|
let res = {};
|
|
63
|
-
if (mediaTypes === MEDIA_TYPE.
|
|
92
|
+
if (mediaTypes === MEDIA_TYPE.Videos) {
|
|
64
93
|
const asset = (_a = resp.assets) === null || _a === void 0 ? void 0 : _a[0];
|
|
65
94
|
res = Object.assign(Object.assign({}, asset), { tempFilePath: asset === null || asset === void 0 ? void 0 : asset.uri, size: asset === null || asset === void 0 ? void 0 : asset.fileSize });
|
|
66
95
|
}
|
|
67
96
|
else {
|
|
68
97
|
res = {
|
|
69
98
|
tempFilePaths: (_b = resp.assets) === null || _b === void 0 ? void 0 : _b.map((item) => item.uri),
|
|
70
|
-
tempFiles: (_c = resp.assets) === null || _c === void 0 ? void 0 : _c.map((item) =>
|
|
99
|
+
tempFiles: (_c = resp.assets) === null || _c === void 0 ? void 0 : _c.map((item) => {
|
|
100
|
+
var _a;
|
|
101
|
+
return (Object.assign(Object.assign({}, item), { path: item.uri, size: item.fileSize, type: item.mimeType, fileType: ((_a = item.mimeType) === null || _a === void 0 ? void 0 : _a.startsWith('video')) ? 'video' : 'image' }));
|
|
102
|
+
})
|
|
71
103
|
};
|
|
72
104
|
}
|
|
73
105
|
if (res.tempFilePath || (!!res.tempFilePaths && res.tempFilePaths.length > 0)) {
|
|
@@ -75,14 +107,14 @@ export function chooseMedia(opts, mediaTypes) {
|
|
|
75
107
|
}
|
|
76
108
|
else {
|
|
77
109
|
const res = {
|
|
78
|
-
errMsg:
|
|
110
|
+
errMsg: `choose${messString}:fail cancel`
|
|
79
111
|
};
|
|
80
112
|
return errorHandler(fail, complete)(res);
|
|
81
113
|
}
|
|
82
114
|
}
|
|
83
115
|
catch (err) {
|
|
84
116
|
const res = {
|
|
85
|
-
errMsg:
|
|
117
|
+
errMsg: `choose${messString}:fail`,
|
|
86
118
|
err
|
|
87
119
|
};
|
|
88
120
|
return errorHandler(fail, complete)(res);
|
package/dist/lib/media.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/lib/media.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAA;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/lib/media.ts"],"names":[],"mappings":"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"}
|
|
@@ -138,7 +138,7 @@ function scanFromPhoto(callback, errorCallBack) {
|
|
|
138
138
|
});
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
|
-
}, MEDIA_TYPE.
|
|
141
|
+
}, MEDIA_TYPE.Images).catch(errorCallBack);
|
|
142
142
|
}
|
|
143
143
|
export function scanCode(option = {}) {
|
|
144
144
|
return __awaiter(this, void 0, void 0, function* () {
|
package/libList.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tarojs/taro-rn",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.8",
|
|
4
4
|
"description": "Taro RN framework",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "types/index.d.ts",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"react-native-root-toast": "^3.5.1",
|
|
48
48
|
"react-native-safe-area-context": "~4.8.0",
|
|
49
49
|
"react-native-stylekit": "^1.0.0",
|
|
50
|
-
"@tarojs/runtime-rn": "4.0.0-beta.
|
|
50
|
+
"@tarojs/runtime-rn": "4.0.0-beta.8"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@babel/core": "^7.14.5",
|
|
@@ -1,33 +1,5 @@
|
|
|
1
1
|
import { chooseMedia, MEDIA_TYPE } from '../media'
|
|
2
|
-
import { showActionSheet } from '../showActionSheet'
|
|
3
2
|
|
|
4
3
|
export function chooseImage(opts: Taro.chooseImage.Option): Promise<any> {
|
|
5
|
-
|
|
6
|
-
sourceType = ['album', 'camera'],
|
|
7
|
-
} = opts
|
|
8
|
-
if(sourceType?.includes('camera') && sourceType?.includes('album')) {
|
|
9
|
-
return showImagePicker(opts)
|
|
10
|
-
} else if (sourceType?.includes('camera')) {
|
|
11
|
-
return chooseMedia({...opts, sourceType: ['camera']}, MEDIA_TYPE.IMAGES)
|
|
12
|
-
}
|
|
13
|
-
return chooseMedia({...opts, sourceType: ['album']}, MEDIA_TYPE.IMAGES)
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
async function showImagePicker(options: Taro.chooseImage.Option):Promise<any> {
|
|
17
|
-
const { fail, complete } = options
|
|
18
|
-
try {
|
|
19
|
-
const res = await showActionSheet({
|
|
20
|
-
itemList: ['拍照', '从手机相册选择'],
|
|
21
|
-
})
|
|
22
|
-
if (res.tapIndex === 0) {
|
|
23
|
-
return chooseMedia({...options, sourceType: ['camera']}, MEDIA_TYPE.IMAGES)
|
|
24
|
-
}
|
|
25
|
-
if (res.tapIndex === 1) {
|
|
26
|
-
return chooseMedia({...options, sourceType: ['album']}, MEDIA_TYPE.IMAGES)
|
|
27
|
-
}
|
|
28
|
-
} catch (err) {
|
|
29
|
-
const res = { errMsg: 'chooseImage: fail' }
|
|
30
|
-
fail?.(res)
|
|
31
|
-
complete?.(res)
|
|
32
|
-
}
|
|
4
|
+
return chooseMedia(opts, MEDIA_TYPE.Images)
|
|
33
5
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { chooseMedia as _chooseMedia, MEDIA_TYPE } from '../media'
|
|
2
|
+
|
|
3
|
+
export function chooseMedia (opts: Taro.chooseMedia.Option): Promise<any> {
|
|
4
|
+
if (opts.mediaType?.length === 1) {
|
|
5
|
+
if (opts.mediaType[0] === 'video') {
|
|
6
|
+
return _chooseMedia(opts, MEDIA_TYPE.Videos)
|
|
7
|
+
} else if (opts.mediaType[0] === 'image') {
|
|
8
|
+
return _chooseMedia(opts, MEDIA_TYPE.Images)
|
|
9
|
+
} else {
|
|
10
|
+
return _chooseMedia(opts, MEDIA_TYPE.All)
|
|
11
|
+
}
|
|
12
|
+
} else {
|
|
13
|
+
return _chooseMedia(opts, MEDIA_TYPE.All)
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -1,35 +1,5 @@
|
|
|
1
1
|
import { chooseMedia, MEDIA_TYPE } from '../media'
|
|
2
|
-
import { showActionSheet } from '../showActionSheet'
|
|
3
2
|
|
|
4
3
|
export function chooseVideo(opts: Taro.chooseVideo.Option): Promise<any> {
|
|
5
|
-
|
|
6
|
-
sourceType = ['album', 'camera'],
|
|
7
|
-
compressed
|
|
8
|
-
} = opts
|
|
9
|
-
opts = Object.assign(opts, { sizeType: compressed ? ['compressed'] : [] })
|
|
10
|
-
if(sourceType?.includes('camera') && sourceType?.includes('album')) {
|
|
11
|
-
return showVideoPicker(opts)
|
|
12
|
-
} else if (sourceType?.includes('camera')) {
|
|
13
|
-
return chooseMedia({...opts, sourceType: ['camera']}, MEDIA_TYPE.VIDEOS)
|
|
14
|
-
}
|
|
15
|
-
return chooseMedia({...opts, sourceType: ['album']}, MEDIA_TYPE.VIDEOS)
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
async function showVideoPicker(options: Taro.chooseVideo.Option):Promise<any> {
|
|
19
|
-
const { fail, complete } = options
|
|
20
|
-
try {
|
|
21
|
-
const res = await showActionSheet({
|
|
22
|
-
itemList: ['拍摄', '从手机相册选择'],
|
|
23
|
-
})
|
|
24
|
-
if (res.tapIndex === 0) {
|
|
25
|
-
return chooseMedia({...options, sourceType: ['camera']}, MEDIA_TYPE.VIDEOS)
|
|
26
|
-
}
|
|
27
|
-
if (res.tapIndex === 1) {
|
|
28
|
-
return chooseMedia({...options, sourceType: ['album']}, MEDIA_TYPE.VIDEOS)
|
|
29
|
-
}
|
|
30
|
-
} catch (err) {
|
|
31
|
-
const res = { errMsg: 'chooseVideo: fail' }
|
|
32
|
-
fail?.(res)
|
|
33
|
-
complete?.(res)
|
|
34
|
-
}
|
|
4
|
+
return chooseMedia(opts, MEDIA_TYPE.Videos)
|
|
35
5
|
}
|
package/src/lib/index.ts
CHANGED
package/src/lib/media.ts
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { CameraRoll } from "@react-native-camera-roll/camera-roll"
|
|
2
2
|
import { requestCameraPermissionsAsync } from 'expo-camera'
|
|
3
|
-
import
|
|
3
|
+
import {
|
|
4
|
+
requestMediaLibraryPermissionsAsync,
|
|
5
|
+
launchImageLibraryAsync,
|
|
6
|
+
launchCameraAsync,
|
|
7
|
+
MediaTypeOptions,
|
|
8
|
+
ImagePickerAsset,
|
|
9
|
+
} from 'expo-image-picker'
|
|
4
10
|
import { successHandler, errorHandler } from '../utils'
|
|
11
|
+
import { showActionSheet } from "./showActionSheet"
|
|
5
12
|
|
|
6
|
-
export const MEDIA_TYPE =
|
|
7
|
-
VIDEOS: 'Videos',
|
|
8
|
-
IMAGES: 'Images'
|
|
9
|
-
}
|
|
13
|
+
export const MEDIA_TYPE = MediaTypeOptions
|
|
10
14
|
|
|
11
15
|
export async function saveMedia(opts: Taro.saveImageToPhotosAlbum.Option | Taro.saveVideoToPhotosAlbum.Option, type:string, API:string):Promise<TaroGeneral.CallbackResult> {
|
|
12
16
|
const { filePath, success, fail, complete } = opts
|
|
13
|
-
const { granted } = await
|
|
17
|
+
const { granted } = await requestMediaLibraryPermissionsAsync()
|
|
14
18
|
if (!granted) {
|
|
15
19
|
const res = { errMsg: 'Permissions denied!' }
|
|
16
20
|
return errorHandler(fail, complete)(res)
|
|
@@ -28,30 +32,70 @@ export async function saveMedia(opts: Taro.saveImageToPhotosAlbum.Option | Taro.
|
|
|
28
32
|
}
|
|
29
33
|
}
|
|
30
34
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
35
|
+
async function showPicker(opts: Taro.chooseImage.Option | Taro.chooseVideo.Option | Taro.chooseMedia.Option, mediaTypes: MediaTypeOptions):Promise<any> {
|
|
36
|
+
const { fail, complete } = opts
|
|
37
|
+
try {
|
|
38
|
+
const res = await showActionSheet({
|
|
39
|
+
itemList: ['拍摄', '从手机相册选择'],
|
|
40
|
+
})
|
|
41
|
+
if (res.tapIndex === 0) {
|
|
42
|
+
return _chooseMedia({...opts, sourceType: ['camera']}, mediaTypes)
|
|
43
|
+
}
|
|
44
|
+
if (res.tapIndex === 1) {
|
|
45
|
+
return _chooseMedia({...opts, sourceType: ['album']}, mediaTypes)
|
|
46
|
+
}
|
|
47
|
+
} catch (err) {
|
|
48
|
+
const res = { errMsg: `choose${
|
|
49
|
+
mediaTypes === MediaTypeOptions.Images ? 'Image' : mediaTypes === MediaTypeOptions.Videos ? 'Video' : 'Media'
|
|
50
|
+
} fail` }
|
|
51
|
+
fail?.(res)
|
|
52
|
+
complete?.(res)
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export async function chooseMedia(opts: Taro.chooseImage.Option | Taro.chooseVideo.Option | Taro.chooseMedia.Option = {}, mediaTypes: MediaTypeOptions): Promise<TaroGeneral.CallbackResult> {
|
|
57
|
+
const {
|
|
58
|
+
sourceType = ['album', 'camera'],
|
|
59
|
+
} = opts
|
|
60
|
+
if(sourceType?.includes('camera') && sourceType?.includes('album')) {
|
|
61
|
+
return showPicker(opts, mediaTypes)
|
|
62
|
+
} else if (sourceType?.includes('camera')) {
|
|
63
|
+
return _chooseMedia({...opts, sourceType: ['camera']}, mediaTypes)
|
|
34
64
|
}
|
|
35
|
-
|
|
65
|
+
return _chooseMedia({...opts, sourceType: ['album']}, mediaTypes)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export async function _chooseMedia(opts: Taro.chooseImage.Option | Taro.chooseVideo.Option | Taro.chooseMedia.Option = {}, mediaTypes: MediaTypeOptions): Promise<TaroGeneral.CallbackResult> {
|
|
69
|
+
const {
|
|
70
|
+
sizeType = [],
|
|
71
|
+
sourceType = [],
|
|
72
|
+
success,
|
|
73
|
+
fail,
|
|
74
|
+
complete,
|
|
75
|
+
maxDuration,
|
|
76
|
+
count = (mediaTypes === MEDIA_TYPE.Videos ? 1 : 9),
|
|
77
|
+
compressed
|
|
78
|
+
} = opts as any
|
|
36
79
|
const options = {
|
|
37
80
|
mediaTypes,
|
|
38
|
-
quality: sizeType[0] === 'compressed' ? 0.7 : 1,
|
|
81
|
+
quality: (sizeType[0] === 'compressed' || compressed) ? 0.7 : 1,
|
|
39
82
|
videoMaxDuration: maxDuration,
|
|
40
|
-
allowsMultipleSelection:
|
|
41
|
-
selectionLimit:
|
|
83
|
+
allowsMultipleSelection: count > 1,
|
|
84
|
+
selectionLimit: count,
|
|
42
85
|
}
|
|
86
|
+
const messString = mediaTypes === MediaTypeOptions.Images ? 'Image' : mediaTypes === MediaTypeOptions.Videos ? 'Video' : 'Media'
|
|
43
87
|
const isCamera = sourceType[0] === 'camera'
|
|
44
|
-
const { granted } = isCamera ? await requestCameraPermissionsAsync() : await
|
|
88
|
+
const { granted } = isCamera ? await requestCameraPermissionsAsync() : await requestMediaLibraryPermissionsAsync()
|
|
45
89
|
if (!granted) {
|
|
46
90
|
const res = { errMsg: 'Permissions denied!' }
|
|
47
91
|
return errorHandler(fail, complete)(res)
|
|
48
92
|
}
|
|
49
93
|
|
|
50
|
-
let launchMediaAsync = isCamera ?
|
|
94
|
+
let launchMediaAsync = isCamera ? launchCameraAsync : launchImageLibraryAsync
|
|
51
95
|
try {
|
|
52
96
|
const resp = await launchMediaAsync(options)
|
|
53
97
|
let res: any = {}
|
|
54
|
-
if (mediaTypes === MEDIA_TYPE.
|
|
98
|
+
if (mediaTypes === MEDIA_TYPE.Videos) {
|
|
55
99
|
const asset = resp.assets?.[0]
|
|
56
100
|
res = {
|
|
57
101
|
...asset,
|
|
@@ -61,11 +105,12 @@ export async function chooseMedia(opts: Taro.chooseImage.Option | Taro.chooseVid
|
|
|
61
105
|
} else {
|
|
62
106
|
res = {
|
|
63
107
|
tempFilePaths: resp.assets?.map((item) => item.uri),
|
|
64
|
-
tempFiles: resp.assets?.map((item) => ({
|
|
108
|
+
tempFiles: resp.assets?.map((item: ImagePickerAsset) => ({
|
|
65
109
|
...item,
|
|
66
110
|
path: item.uri,
|
|
67
111
|
size: item.fileSize,
|
|
68
112
|
type: item.mimeType,
|
|
113
|
+
fileType: item.mimeType?.startsWith('video') ? 'video' : 'image',
|
|
69
114
|
}))
|
|
70
115
|
}
|
|
71
116
|
}
|
|
@@ -73,13 +118,13 @@ export async function chooseMedia(opts: Taro.chooseImage.Option | Taro.chooseVid
|
|
|
73
118
|
return successHandler(success, complete)(res)
|
|
74
119
|
} else {
|
|
75
120
|
const res = {
|
|
76
|
-
errMsg:
|
|
121
|
+
errMsg: `choose${messString}:fail cancel`
|
|
77
122
|
}
|
|
78
123
|
return errorHandler(fail, complete)(res)
|
|
79
124
|
}
|
|
80
125
|
} catch (err) {
|
|
81
126
|
const res = {
|
|
82
|
-
errMsg:
|
|
127
|
+
errMsg: `choose${messString}:fail`,
|
|
83
128
|
err
|
|
84
129
|
}
|
|
85
130
|
return errorHandler(fail, complete)(res)
|
|
@@ -143,7 +143,7 @@ function scanFromPhoto(callback, errorCallBack) {
|
|
|
143
143
|
})
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
|
-
}, MEDIA_TYPE.
|
|
146
|
+
}, MEDIA_TYPE.Images).catch(errorCallBack)
|
|
147
147
|
}
|
|
148
148
|
|
|
149
149
|
export async function scanCode(option: Taro.scanCode.Option = {}): Promise<Taro.scanCode.SuccessCallbackResult> {
|