preview.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { ContactChooseTypes } from "@/pages_im/constant";
  2. import { getPurePath } from "@/pages_im/util/common";
  3. import IMSDK, { IMMethods } from "openim-uniapp-polyfill";
  4. const isWebResource = (url) => {
  5. const webResourceRegex = /^(http|https):\/\//i;
  6. return webResourceRegex.test(url);
  7. };
  8. export const forwardImg = async (localImagePath) => {
  9. const message = await IMSDK.asyncApi(
  10. IMMethods.CreateImageMessageFromFullPath,
  11. IMSDK.uuid(),
  12. getPurePath(localImagePath)
  13. );
  14. console.log(getPurePath(localImagePath), message);
  15. uni.navigateTo({
  16. url: `/pages/common/contactChoose/index?type=${
  17. ContactChooseTypes.SendImage
  18. }&forwardMessage=${encodeURIComponent(JSON.stringify(message))}`,
  19. });
  20. };
  21. export const downloadToAlbum = (url) => {
  22. uni.downloadFile({
  23. url,
  24. success(res) {
  25. let url = res.tempFilePath;
  26. uni.saveImageToPhotosAlbum({
  27. filePath: url,
  28. success() {
  29. uni.showToast({
  30. title: "已保存到系统相册",
  31. icon: "none",
  32. });
  33. },
  34. fail() {
  35. uni.showToast({
  36. title: "保存失败",
  37. icon: "none",
  38. });
  39. },
  40. });
  41. },
  42. });
  43. };
  44. export const myPreview = (current, urls) => {
  45. uni.previewImage({
  46. current,
  47. urls,
  48. indicator: "none",
  49. longPressActions: {
  50. itemList: ["转发图片", "保存图片"],
  51. success({ tapIndex, index }) {
  52. if (tapIndex === 0) {
  53. uni.closePreviewImage();
  54. if (isWebResource(urls[index])) {
  55. uni.getImageInfo({
  56. src: urls[index],
  57. success: (res) => {
  58. forwardImg(res.path);
  59. },
  60. });
  61. } else {
  62. forwardImg(urls[index]);
  63. }
  64. } else {
  65. downloadToAlbum(urls[index]);
  66. }
  67. },
  68. },
  69. });
  70. };