89 lines
2.6 KiB
JavaScript
89 lines
2.6 KiB
JavaScript
"use strict";
|
|
const common_vendor = require("../common/vendor.js");
|
|
const checkAlbumPermission = () => {
|
|
return new Promise((resolve, reject) => {
|
|
common_vendor.index.getSetting({
|
|
success(res) {
|
|
if (res.authSetting["scope.writePhotosAlbum"] === void 0) {
|
|
requestAlbumPermission().then(resolve).catch(reject);
|
|
} else if (res.authSetting["scope.writePhotosAlbum"] === false) {
|
|
resolve(false);
|
|
} else {
|
|
resolve(true);
|
|
}
|
|
},
|
|
fail: reject
|
|
});
|
|
});
|
|
};
|
|
const requestAlbumPermission = () => {
|
|
return new Promise((resolve, reject) => {
|
|
common_vendor.index.authorize({
|
|
scope: "scope.writePhotosAlbum",
|
|
success: () => resolve(true),
|
|
fail: () => resolve(false)
|
|
});
|
|
});
|
|
};
|
|
const openSettings = () => {
|
|
return new Promise((resolve) => {
|
|
common_vendor.index.showModal({
|
|
title: "提示",
|
|
content: "需要您授权访问相册才能保存视频,是否前往设置?",
|
|
success(res) {
|
|
if (res.confirm) {
|
|
common_vendor.index.openSetting({
|
|
success: () => resolve(true),
|
|
fail: () => resolve(false)
|
|
});
|
|
} else {
|
|
resolve(false);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
};
|
|
const saveVideoToAlbum = (filePath) => {
|
|
return new Promise(async (resolve, reject) => {
|
|
try {
|
|
const hasPermission = await checkAlbumPermission();
|
|
if (!hasPermission) {
|
|
const settingsResult = await openSettings();
|
|
if (!settingsResult) {
|
|
return reject(new Error("相册权限被拒绝"));
|
|
}
|
|
const newPermission = await checkAlbumPermission();
|
|
if (!newPermission) {
|
|
return reject(new Error("相册权限被拒绝"));
|
|
}
|
|
}
|
|
common_vendor.index.saveVideoToPhotosAlbum({
|
|
filePath,
|
|
success: resolve,
|
|
fail: reject
|
|
});
|
|
} catch (error) {
|
|
reject(error);
|
|
}
|
|
});
|
|
};
|
|
const downloadAndSaveVideo = async (url) => {
|
|
try {
|
|
common_vendor.index.showLoading({ title: "下载中...", mask: true });
|
|
const downloadRes = await common_vendor.index.$http.download(url);
|
|
await saveVideoToAlbum(downloadRes.tempFilePath);
|
|
common_vendor.index.showToast({ title: "已成功保存到相册" });
|
|
return true;
|
|
} catch (error) {
|
|
console.error("下载保存失败:", error);
|
|
common_vendor.index.showToast({
|
|
title: `保存失败: ${error.message || "未知错误"}`,
|
|
icon: "none"
|
|
});
|
|
return false;
|
|
} finally {
|
|
common_vendor.index.hideLoading();
|
|
}
|
|
};
|
|
exports.downloadAndSaveVideo = downloadAndSaveVideo;
|