utils.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. const IMAGE_EXT = ['jpeg', 'jpg', 'gif', 'png', 'svg'];
  2. export function isImageUrl(url) {
  3. return IMAGE_EXT.some(ext => url.indexOf(`.${ext}`) !== -1);
  4. }
  5. export function isImageFile(item) {
  6. if (item.type) {
  7. return item.type.indexOf('image') === 0;
  8. }
  9. if (item.path) {
  10. return isImageUrl(item.path);
  11. }
  12. if (item.url) {
  13. return isImageUrl(item.url);
  14. }
  15. return false;
  16. }
  17. export function isVideo(res, accept) {
  18. return accept === 'video';
  19. }
  20. export function chooseFile({ accept, multiple, capture, compressed, maxDuration, sizeType, camera, maxCount }) {
  21. if (accept === 'image') {
  22. return new Promise((resolve, reject) => {
  23. wx.chooseImage({
  24. count: multiple ? Math.min(maxCount, 9) : 1,
  25. sourceType: capture,
  26. sizeType,
  27. success: resolve,
  28. fail: reject
  29. });
  30. });
  31. }
  32. if (accept === 'video') {
  33. return new Promise((resolve, reject) => {
  34. wx.chooseVideo({
  35. sourceType: capture,
  36. compressed,
  37. maxDuration,
  38. camera,
  39. success: resolve,
  40. fail: reject
  41. });
  42. });
  43. }
  44. return new Promise((resolve, reject) => {
  45. wx.chooseMessageFile({
  46. count: multiple ? maxCount : 1,
  47. type: 'file',
  48. success: resolve,
  49. fail: reject
  50. });
  51. });
  52. }
  53. export function isFunction(val) {
  54. return typeof val === 'function';
  55. }
  56. export function isObject(val) {
  57. return val !== null && typeof val === 'object';
  58. }
  59. export function isPromise(val) {
  60. return isObject(val) && isFunction(val.then) && isFunction(val.catch);
  61. }