UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

166 lines (164 loc) 4.47 kB
var WRITE_PHOTO_ALBUM_SCOPE = 'scope.writePhotosAlbum'; var TIP_MAP = { saveImage: '保存到相册', saveImageSuccess: '已保存到相册', saveImageFail: '保存相册失败', saveImageFailOfAuth: '保存相册失败,请检查权限', authConfirmContent: '检测到您没打开保存图片权限,是否去设置打开?', authConfirmFailToast: '您没有授权,无法保存到相册' }; function authConfirm(options) { return new Promise(function (resolve, reject) { wx.showModal({ content: options.authConfirmContent, confirmText: '确认', cancelText: '取消', success: function success(res) { if (res.confirm) { wx.openSetting({ success: function success(res) { if (res.authSetting[WRITE_PHOTO_ALBUM_SCOPE]) { resolve(true); } else { wx.showToast({ title: options.authConfirmFailToast, icon: 'none' }); reject(); } } }); } else { wx.showToast({ title: options.authConfirmFailToast, icon: 'none' }); reject(); } } }); }); } function showSaveImageModal(_ref) { var url = _ref.url, options = _ref.options; return new Promise(function (resolve, reject) { wx.showActionSheet({ itemList: [options.saveImage], success: function success() { resolve({ url: url, options: options }); }, fail: function fail(err) { reject(err); } }); }); } // 授权 function checkWritePhotoAuth(_ref2) { var url = _ref2.url, options = _ref2.options; return new Promise(function (resolve, reject) { wx.getSetting({ success: function success(settings) { if (!settings.authSetting[WRITE_PHOTO_ALBUM_SCOPE]) { wx.authorize({ scope: WRITE_PHOTO_ALBUM_SCOPE, success: function success() { // 同意授权 resolve({ url: url, options: options }); }, fail: function fail() { authConfirm(options).then(function () { resolve({ url: url, options: options }); })["catch"](reject); } }); } else { // 已经有权限了 resolve({ url: url, options: options }); } } }); }); } // 转换图片格式为本地路径 function getImageLocalPath(_ref3) { var url = _ref3.url, options = _ref3.options; return new Promise(function (resolve, reject) { wx.getImageInfo({ src: url, success: function success(res) { resolve({ path: res.path, options: options }); }, fail: function fail(err) { reject(err); } }); }); } function saveImageToAlbum(_ref4) { var path = _ref4.path, options = _ref4.options; var p4 = new Promise(function (resolve, reject) { wx.saveImageToPhotosAlbum({ filePath: path, success: function success() { wx.showToast({ title: options.saveImageSuccess }); resolve(true); }, fail: function fail(err) { var message = options.saveImageFail; var _ref5 = err || {}, _ref5$errMsg = _ref5.errMsg, errMsg = _ref5$errMsg === void 0 ? '' : _ref5$errMsg; if (errMsg.indexOf('fail system deny') > -1 || errMsg.indexOf('fail save error') > -1) { message = options.saveImageFailOfAuth; } wx.showToast({ title: message, icon: 'none' }); console.log(err); reject(err); } }); }); return p4; } /** * 小程序下保存图片 * @param {string} url 图片地址 * @param {object} options 提示选项 * @example * ```ts * saveMpImage('https://xxx.png'); * ``` */ function saveMpImage(url) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : TIP_MAP; var newOptions = Object.assign(Object.assign({}, TIP_MAP), options); showSaveImageModal({ url: url, options: newOptions }).then(checkWritePhotoAuth).then(getImageLocalPath).then(saveImageToAlbum)["catch"](function () {}); } export { saveMpImage };