uni-share.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import UniImageMenu from './uni-image-menu.js';
  2. class UniShare extends UniImageMenu{
  3. constructor(arg) {
  4. super()
  5. this.isShow = super.isShow
  6. }
  7. async show(param, callback){
  8. var menus = []
  9. plus.share.getServices(services => { //只显示有服务的项目
  10. services = services.filter(item => item.nativeClient)
  11. let servicesList = services.map(e => e.id)
  12. param.menus.forEach(item => {
  13. if (servicesList.includes(item.share.provider) || typeof(item.share) == 'string') {
  14. menus.push(item)
  15. }
  16. })
  17. super.show({
  18. list: menus,
  19. cancelText: param.cancelText
  20. }, e => {
  21. callback(e)
  22. if(e.event == 'clickMenu'){
  23. if (typeof(menus[e.index]['share']) == 'string') {
  24. this[menus[e.index]['share']](param)
  25. } else {
  26. uni.share({
  27. ...param.content,
  28. ...menus[e.index].share,
  29. success: res=> {
  30. console.log("success:" + JSON.stringify(res));
  31. super.hide()
  32. },
  33. fail: function(err) {
  34. console.log("fail:" + JSON.stringify(err));
  35. uni.showModal({
  36. content: JSON.stringify(err),
  37. showCancel: false,
  38. confirmText: "知道了"
  39. });
  40. }
  41. })
  42. }
  43. }
  44. })
  45. }, err => {
  46. uni.showModal({
  47. title: '获取服务供应商失败:' + JSON.stringify(err),
  48. showCancel: false,
  49. confirmText: '知道了'
  50. });
  51. console.error('获取服务供应商失败:' + JSON.stringify(err));
  52. })
  53. }
  54. hide(){
  55. super.hide()
  56. }
  57. copyurl(param) {
  58. console.log('copyurl',param);
  59. uni.setClipboardData({
  60. data: param.content.href,
  61. success: ()=>{
  62. console.log('success');
  63. uni.hideToast() //关闭自带的toast
  64. uni.showToast({
  65. title: '复制成功',
  66. icon: 'none'
  67. });
  68. super.hide();
  69. },
  70. fail: (err) => {
  71. uni.showModal({
  72. content: JSON.stringify(err),
  73. showCancel: false
  74. });
  75. }
  76. });
  77. }
  78. // 使用系统分享发送分享消息
  79. shareSystem(param) {
  80. console.log('shareSystem',param);
  81. plus.share.sendWithSystem({
  82. type: 'text',
  83. content: param.content.title + param.content.summary || '',
  84. href: param.content.href,
  85. }, (e)=> {
  86. console.log('分享成功');
  87. super.hide()
  88. }, (err)=> {
  89. console.log('分享失败:' + JSON.stringify(err));
  90. uni.showModal({
  91. title: '获取服务供应商失败:' + JSON.stringify(err),
  92. showCancel: false,
  93. confirmText: '知道了'
  94. });
  95. });
  96. }
  97. }
  98. export default UniShare