utils.js 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. "use strict";
  2. var __assign = (this && this.__assign) || function () {
  3. __assign = Object.assign || function(t) {
  4. for (var s, i = 1, n = arguments.length; i < n; i++) {
  5. s = arguments[i];
  6. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
  7. t[p] = s[p];
  8. }
  9. return t;
  10. };
  11. return __assign.apply(this, arguments);
  12. };
  13. Object.defineProperty(exports, "__esModule", { value: true });
  14. exports.chooseFile = exports.isVideoFile = exports.isImageFile = void 0;
  15. var utils_1 = require("../common/utils");
  16. var validator_1 = require("../common/validator");
  17. function isImageFile(item) {
  18. if (item.isImage != null) {
  19. return item.isImage;
  20. }
  21. if (item.type) {
  22. return item.type === 'image';
  23. }
  24. if (item.url) {
  25. return (0, validator_1.isImageUrl)(item.url);
  26. }
  27. return false;
  28. }
  29. exports.isImageFile = isImageFile;
  30. function isVideoFile(item) {
  31. if (item.isVideo != null) {
  32. return item.isVideo;
  33. }
  34. if (item.type) {
  35. return item.type === 'video';
  36. }
  37. if (item.url) {
  38. return (0, validator_1.isVideoUrl)(item.url);
  39. }
  40. return false;
  41. }
  42. exports.isVideoFile = isVideoFile;
  43. function formatImage(res) {
  44. return res.tempFiles.map(function (item) { return (__assign(__assign({}, (0, utils_1.pickExclude)(item, ['path'])), { type: 'image', url: item.path, thumb: item.path })); });
  45. }
  46. function formatVideo(res) {
  47. return [
  48. __assign(__assign({}, (0, utils_1.pickExclude)(res, ['tempFilePath', 'thumbTempFilePath', 'errMsg'])), { type: 'video', url: res.tempFilePath, thumb: res.thumbTempFilePath }),
  49. ];
  50. }
  51. function formatMedia(res) {
  52. return res.tempFiles.map(function (item) { return (__assign(__assign({}, (0, utils_1.pickExclude)(item, ['fileType', 'thumbTempFilePath', 'tempFilePath'])), { type: res.type, url: item.tempFilePath, thumb: res.type === 'video' ? item.thumbTempFilePath : item.tempFilePath })); });
  53. }
  54. function formatFile(res) {
  55. return res.tempFiles.map(function (item) { return (__assign(__assign({}, (0, utils_1.pickExclude)(item, ['path'])), { url: item.path })); });
  56. }
  57. function chooseFile(_a) {
  58. var accept = _a.accept, multiple = _a.multiple, capture = _a.capture, compressed = _a.compressed, maxDuration = _a.maxDuration, sizeType = _a.sizeType, camera = _a.camera, maxCount = _a.maxCount, mediaType = _a.mediaType, extension = _a.extension;
  59. return new Promise(function (resolve, reject) {
  60. switch (accept) {
  61. case 'image':
  62. wx.chooseImage({
  63. count: multiple ? Math.min(maxCount, 9) : 1,
  64. sourceType: capture,
  65. sizeType: sizeType,
  66. success: function (res) { return resolve(formatImage(res)); },
  67. fail: reject,
  68. });
  69. break;
  70. case 'media':
  71. wx.chooseMedia({
  72. count: multiple ? Math.min(maxCount, 9) : 1,
  73. mediaType: mediaType,
  74. sourceType: capture,
  75. maxDuration: maxDuration,
  76. sizeType: sizeType,
  77. camera: camera,
  78. success: function (res) { return resolve(formatMedia(res)); },
  79. fail: reject,
  80. });
  81. break;
  82. case 'video':
  83. wx.chooseVideo({
  84. sourceType: capture,
  85. compressed: compressed,
  86. maxDuration: maxDuration,
  87. camera: camera,
  88. success: function (res) { return resolve(formatVideo(res)); },
  89. fail: reject,
  90. });
  91. break;
  92. default:
  93. wx.chooseMessageFile(__assign(__assign({ count: multiple ? maxCount : 1, type: accept }, (extension ? { extension: extension } : {})), { success: function (res) { return resolve(formatFile(res)); }, fail: reject }));
  94. break;
  95. }
  96. });
  97. }
  98. exports.chooseFile = chooseFile;