import Taro from '@tarojs/taro'; import { SubscribeTempId } from '@/constants/subscribe'; import http from '@/http'; import { API } from '@/http/api'; import { logWithPrefix } from '@/utils/common'; const log = logWithPrefix('subscribe-utils'); export const isSubscribeRefused = async ( tempId: SubscribeTempId | SubscribeTempId[] ): Promise<[boolean, SubscribeTempId[]]> => { tempId = Array.isArray(tempId) ? tempId : [tempId]; const { subscriptionsSetting } = await Taro.getSetting({ withSubscriptions: true }); log('isSubscribeRefuse subscriptionsSetting:', subscriptionsSetting); if (!subscriptionsSetting) { return [false, []]; } const { mainSwitch, itemSettings = {} } = subscriptionsSetting; if (!mainSwitch) { return [true, []]; } const acceptedIds: SubscribeTempId[] = []; let refused = false; tempId.some(id => { const item = itemSettings[id]; if (item === 'accept') { acceptedIds.push(id); } if (refused) { return; } refused = item === 'reject'; }); return [refused || false, acceptedIds]; }; export const subscribeMessage = async (tempIds: SubscribeTempId[]) => { return Taro.requestSubscribeMessage({ tmplIds: tempIds, entityIds: [], }); }; export const postSubscribe = (tempIds: SubscribeTempId[], acceptTempIds: SubscribeTempId[]) => { const data = { templateIds: tempIds, subscribeIds: acceptTempIds }; log('postSubscribe', data); return http.post(API.SUBSCRIBE, { data }); };