Files
thebet365/apps/player/src/constants/defaultBanner.ts

46 lines
1.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { BannerItem } from '../components/BannerCarousel.vue';
/** 默认轮播首图apps/player/src/assets/images/banner.webp */
import defaultBannerImg from '../assets/images/banner.webp';
const FALLBACK_BANNER_URL = '/uploads/banners/welcome.svg';
export const DEFAULT_BANNER: BannerItem = {
id: 'default',
translation: {
title: '',
imageUrl: defaultBannerImg,
},
};
function pickImageUrl(url?: string | null): string {
if (!url) return defaultBannerImg;
return url;
}
export function resolveBanners(banners: BannerItem[] | undefined | null): BannerItem[] {
// API 数据尚未到达(加载中),返回空数组避免闪烁默认图
if (banners == null) return [];
const fromApi = banners.map((banner) => ({
...banner,
translation: {
...banner.translation,
imageUrl: pickImageUrl(banner.translation?.imageUrl),
},
}));
if (fromApi.length > 0) return fromApi;
// API 返回了但列表为空,展示默认 Banner
const defaultSlide: BannerItem = {
...DEFAULT_BANNER,
translation: {
...DEFAULT_BANNER.translation,
imageUrl: defaultBannerImg || FALLBACK_BANNER_URL,
},
};
return [defaultSlide];
}