zhengyiming
5 小时以前 9b47d54a72046f3926c5620bfd4c836db5c61147
apps/taro/src/hooks/lifepay.ts
@@ -1,6 +1,12 @@
import { useQuery } from '@tanstack/vue-query';
import { useLifeRechargeContext, CreateEditPayChannelsInput } from '@life-payment/core-vue';
import {
  useLifeRechargeContext,
  CreateEditPayChannelsInput,
  GetShowingLifePayAnnouncementInput,
} from '@life-payment/core-vue';
import { MaybeRef } from 'vue';
import { Message } from '@/utils';
import Taro from '@tarojs/taro';
export function useOnlineService() {
  const { blLifeRecharge } = useLifeRechargeContext();
@@ -60,3 +66,63 @@
    getChannlesNameByNum,
  };
}
type UseShowingLifePayAnnouncementOptions = {
  params?: MaybeRef<API.GetShowingLifePayAnnouncementInput>;
  onSuccess?: (data: API.CreateEditLifePayAnnouncementOutput) => any;
  staleTime?: MaybeRef<number>;
};
export function useShowingLifePayAnnouncement(options: UseShowingLifePayAnnouncementOptions = {}) {
  const { onSuccess, params = {}, staleTime } = options;
  const { blLifeRecharge } = useLifeRechargeContext();
  const {
    data: announcement,
    isLoading,
    refetch,
  } = useQuery({
    queryKey: ['blLifeRecharge/getShowingLifePayAnnouncement', params],
    queryFn: async () => {
      return await blLifeRecharge.services.getShowingLifePayAnnouncement(unref(params), {
        showLoading: false,
        skipErrorHandler: true,
      });
    },
    onSuccess: (data) => {
      onSuccess?.(data);
    },
    staleTime: staleTime,
  });
  return {
    announcement,
    isLoading,
    refetch,
  };
}
const dialogShowingLifePayAnnouncementCache = {};
export function useDialogShowingLifePayAnnouncement() {
  const { blLifeRecharge } = useLifeRechargeContext();
  const router = Taro.useRouter();
  useShowingLifePayAnnouncement({
    params: {
      announcementType: blLifeRecharge.constants.AnnouncementTypeEnum.Dialog,
    },
    onSuccess(data) {
      if (!dialogShowingLifePayAnnouncementCache[router.path]) {
        dialogShowingLifePayAnnouncementCache[router.path] = true;
        Message.confirm({
          title: '公告',
          message: data.announcementContent ?? '',
          showCancelBtn: false,
        });
      }
    },
    staleTime: Infinity,
  });
}