policy-consent-manager.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import {
  2. POLICY_CONSENT_VERSION,
  3. STORAGE_KEY_POLICY_CONSENT,
  4. } from '@/utils/policy-config.js'
  5. let policyHostVm = null
  6. let privacyResolve = null
  7. export function isPolicyConsented() {
  8. return uni.getStorageSync(STORAGE_KEY_POLICY_CONSENT) === POLICY_CONSENT_VERSION
  9. }
  10. /** 未同意业务协议前,禁止展示分享减价/加价等活动弹窗 */
  11. export function shouldBlockMarketingPopup() {
  12. const app = getApp()
  13. if (app && app.globalData && app.globalData.needPolicyConsent) {
  14. return true
  15. }
  16. return !isPolicyConsented()
  17. }
  18. export function setPolicyConsented() {
  19. uni.setStorageSync(STORAGE_KEY_POLICY_CONSENT, POLICY_CONSENT_VERSION)
  20. }
  21. export function registerPolicyHost(vm) {
  22. policyHostVm = vm
  23. const app = getApp()
  24. if (app && app.globalData && app.globalData.needPolicyConsent) {
  25. vm.tryOpenPolicyModal()
  26. }
  27. if (app && app.globalData && app.globalData.needPrivacyPopup) {
  28. vm.tryOpenPrivacyPopup()
  29. }
  30. }
  31. export function unregisterPolicyHost(vm) {
  32. if (policyHostVm === vm) {
  33. policyHostVm = null
  34. }
  35. }
  36. export function requestShowPolicyModal() {
  37. const app = getApp()
  38. if (app && app.globalData) {
  39. app.globalData.needPolicyConsent = true
  40. }
  41. if (policyHostVm) {
  42. policyHostVm.tryOpenPolicyModal()
  43. }
  44. }
  45. export function requestShowPrivacyPopup(resolve) {
  46. privacyResolve = resolve
  47. const app = getApp()
  48. if (app && app.globalData) {
  49. app.globalData.needPrivacyPopup = true
  50. }
  51. if (policyHostVm) {
  52. policyHostVm.tryOpenPrivacyPopup()
  53. }
  54. }
  55. export function getPrivacyResolve() {
  56. return privacyResolve
  57. }
  58. export function clearPrivacyResolve() {
  59. privacyResolve = null
  60. }
  61. export function clearPrivacyPopupFlag() {
  62. const app = getApp()
  63. if (app && app.globalData) {
  64. app.globalData.needPrivacyPopup = false
  65. }
  66. }