Refactor: UI & Feature updates (Calculator, UnitConverter, Privacy, Cleanup)
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
Component({
|
||||
data: {
|
||||
innerShow: false,
|
||||
privacyContractName: '《用户隐私保护指引》'
|
||||
},
|
||||
lifetimes: {
|
||||
attached() {
|
||||
// 注册隐私协议监听器
|
||||
const _this = this;
|
||||
if (wx.onNeedPrivacyAuthorization) {
|
||||
wx.onNeedPrivacyAuthorization((resolve, eventInfo) => {
|
||||
console.log('触发隐私协议弹窗', eventInfo);
|
||||
const needsResolve = eventInfo.referrer === 'api'; // API调用触发需要手动resolve
|
||||
|
||||
_this.resolvePrivacyAuthorization = resolve; // 保存 resolve 函数
|
||||
|
||||
if (wx.getPrivacySetting) {
|
||||
wx.getPrivacySetting({
|
||||
success: (res) => {
|
||||
console.log('getPrivacySetting success', res);
|
||||
// 无论是否需要(needAuthorization), 只要触发了onNeedPrivacyAuthorization就证明被拦截了(或者需要再次确认)
|
||||
// 通常 res.needAuthorization 为 true
|
||||
_this.setData({
|
||||
innerShow: true,
|
||||
privacyContractName: res.privacyContractName || _this.data.privacyContractName
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
handleDisagree() {
|
||||
this.setData({ innerShow: false });
|
||||
// 如果有保存的 resolve,调用并报错拒绝(虽然 API 主要是要 resolve({ buttonId: 'agree-btn', event: 'agree' }),拒绝通常不调 resolve 或调 fail)
|
||||
// 实际上用户拒绝后,该次 API 调用应该失败
|
||||
if (this.resolvePrivacyAuthorization) {
|
||||
// this.resolvePrivacyAuthorization({ event: 'disagree' }); // 某些场景下可能需要
|
||||
this.resolvePrivacyAuthorization = null;
|
||||
}
|
||||
},
|
||||
handleAgree(e: any) {
|
||||
console.log('用户同意隐私协议');
|
||||
// 按钮 open-type="agreePrivacyAuthorization" 会自动触发同意逻辑
|
||||
// 这里的 bindagreeprivacyauthorization 回调用于 UI 反馈
|
||||
this.setData({ innerShow: false });
|
||||
|
||||
// 如果是由 API 触发的(如 getClipboardData),可以通过保存的 resolve 告知系统
|
||||
// 但通常 open-type 按钮点击后系统会自动重试之前的 API 调用,或者在 button 上绑定 resolve
|
||||
if (this.resolvePrivacyAuthorization) {
|
||||
this.resolvePrivacyAuthorization({ buttonId: 'agree-btn', event: 'agree' });
|
||||
this.resolvePrivacyAuthorization = null;
|
||||
}
|
||||
},
|
||||
openPrivacyContract() {
|
||||
wx.openPrivacyContract({})
|
||||
}
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user