t-comm
Version:
专业、稳定、纯粹的工具库
169 lines (166 loc) • 4.38 kB
JavaScript
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 };