fix moshtari code

This commit is contained in:
2026-08-27 14:37:39 +03:30
parent 52057805ff
commit da5b113406
5 changed files with 108 additions and 39 deletions
+37
View File
@@ -74,6 +74,43 @@ function pairHasImage(pair: ThemeImagePair): boolean {
return Boolean(pair.light || pair.dark)
}
/** همهٔ اسلات‌های تم خالی‌اند (رکورد app_banners پوچ که روی legacy سایه انداخته) */
export function isThemeBannersEmpty(data: AppBannersValue): boolean {
return (
!pairHasImage(data.homeAsset) &&
!pairHasImage(data.piggyCreate) &&
!(data.productsHero ?? []).some(pairHasImage) &&
!pairHasImage(data.referral) &&
!pairHasImage(data.share) &&
!pairHasImage(data.invite)
)
}
function mergePair(primary: ThemeImagePair, legacy: ThemeImagePair): ThemeImagePair {
return {
light: primary.light || legacy.light,
dark: primary.dark || legacy.dark,
}
}
/** اسلات خالی primary را از legacy پر می‌کند؛ اسلایدر/محصولات اگر آرایه خالی باشد از legacy می‌آید */
export function mergeAppBannersFromLegacy(
primary: AppBannersValue,
legacy: AppBannersValue,
): AppBannersValue {
return {
slider: primary.slider.length ? primary.slider : legacy.slider,
homeAsset: mergePair(primary.homeAsset, legacy.homeAsset),
piggyCreate: mergePair(primary.piggyCreate, legacy.piggyCreate),
productsHero: (primary.productsHero ?? []).some(pairHasImage)
? primary.productsHero
: legacy.productsHero ?? [],
referral: mergePair(primary.referral, legacy.referral),
share: mergePair(primary.share, legacy.share),
invite: mergePair(primary.invite, legacy.invite),
}
}
/** آرایهٔ جدید یا سه اسلات قدیمی productsHero1/2/3 */
export function normalizeProductsHero(parsed: Record<string, unknown>): ThemeImagePair[] {
if (Array.isArray(parsed.productsHero)) {