UNPKG

t-comm

Version:

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

169 lines (166 loc) 4.38 kB
import { _ as __assign } from '../tslib.es6-096fffdd.js'; 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(_a) { var url = _a.url, options = _a.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(_a) { var url = _a.url, options = _a.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(_a) { var url = _a.url, options = _a.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(_a) { var path = _a.path, options = _a.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 _a = (err || {}).errMsg, errMsg = _a === void 0 ? '' : _a; 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, options) { if (options === void 0) { options = TIP_MAP; } var newOptions = __assign(__assign({}, TIP_MAP), options); showSaveImageModal({ url: url, options: newOptions }).then(checkWritePhotoAuth).then(getImageLocalPath).then(saveImageToAlbum); } export { saveMpImage };