// utils/storage-guard.js // 存储空间统一拦截:上传照片/图片前检查剩余空间,超出时在按钮处直接阻止上传。 const { api } = require('./request'); // 判断是否超出配额(会员无限空间,不拦截) function quotaExceeded(d, extraBytes) { if (!d) return false; const isVip = d.is_vip || d.isVip; if (isVip) return false; const free = d.free_bytes || d.freeBytes || 0; const used = d.used_bytes || d.usedBytes || 0; return used + (extraBytes || 0) > free; } // 空间不足时的统一提示 function showQuotaBlocked() { wx.showModal({ title: '存储空间不足', content: '当前存储空间已满,请升级为无限空间会员后再上传照片。', confirmText: '去升级', cancelText: '取消', success: function (res) { if (res.confirm) wx.navigateTo({ url: '/pages/storage/storage' }); } }); } // 上传前检查:空间充足 resolve(true);不足则弹窗提示并 resolve(false);查询失败不阻断上传(由服务端二次校验兜底)。 function guardStorageSpace(extraBytes) { return api.storageInfo() .then(function (d) { if (quotaExceeded(d, extraBytes || 0)) { showQuotaBlocked(); return false; } return true; }) .catch(function () { return true; }); } module.exports = { guardStorageSpace, quotaExceeded, showQuotaBlocked };