Files
boluo-app-main/src/utils/subscribe.ts
2025-06-27 22:46:24 +08:00

53 lines
1.5 KiB
TypeScript

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 });
};