import { VipCodeResponse } from '@/modules/mine/model/UserMemberProperty';
import { buildQueryParams } from '@/utils/query.utils';
import Taro from '@tarojs/taro';
type MemberCartInfo = VipCodeResponse & { isEquityCard?: boolean };
/** 创建跳转页面选择辅助函数 */
const createChooseHelperEvents = <T, F>({
url,
name
}: {
/** url 参数 */
url: string;
/** 监听器名称 */
name: string;
}): {
/** 选择页面函数 */
choose: (data: T) => void;
/** 跳转到选择页面函数 */
toChoose: (params: F) => Promise<T>;
} => {
return {
choose: (data) => {
const pages = Taro.getCurrentPages();
const currentPage = pages[pages.length - 1];
const eventChannel = currentPage.getOpenerEventChannel();
eventChannel.emit(name, data);
},
toChoose: (params) => {
return new Promise<T>((resolve, reject) => {
Taro.navigateTo({
url: `${url}?${buildQueryParams(params)}`,
events: {
[name]: (data: T) => {
data ? resolve(data) : reject();
}
}
});
});
}
};
};
const { choose: chooseMembershipCard, toChoose: toChooseMembershipCard } = createChooseHelperEvents<
MemberCartInfo,
any
>({
url: '/pages/mine/membership/choose-membership-card/index',
name: 'chooseMembershipCard'
});
export { chooseMembershipCard, toChooseMembershipCard };