Merge pull request 'fix(front-end): fix no index in products' (#53) from dev into main
All checks were successful
Build and Deploy / test-backend (push) Successful in 29s
Build and Deploy / test-frontend (push) Successful in 1m6s
Build and Deploy / build-and-push (push) Successful in 28s
Build and Deploy / deploy (push) Successful in 20s

Reviewed-on: #53
This commit was merged in pull request #53.
This commit is contained in:
2026-03-23 17:36:11 +01:00

View File

@@ -14,7 +14,15 @@ import {
import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
import { Router, RouterLink } from '@angular/router';
import { TranslateModule, TranslateService } from '@ngx-translate/core';
import { catchError, combineLatest, finalize, of, switchMap, tap } from 'rxjs';
import {
EMPTY,
catchError,
combineLatest,
finalize,
of,
switchMap,
tap,
} from 'rxjs';
import { SeoService } from '../../core/services/seo.service';
import { LanguageService } from '../../core/services/language.service';
import { findColorHex, getColorHex } from '../../core/constants/colors.const';
@@ -220,7 +228,12 @@ export class ProductDetailComponent {
this.modelModalOpen.set(false);
}),
switchMap(([productSlug]) => {
if (!productSlug) {
if (productSlug === undefined) {
return EMPTY;
}
const normalizedProductSlug = productSlug.trim();
if (!normalizedProductSlug) {
this.languageService.clearLocalizedRouteOverrides();
this.error.set('SHOP.NOT_FOUND');
this.setResponseStatus(404);
@@ -229,23 +242,27 @@ export class ProductDetailComponent {
return of(null);
}
return this.shopService.getProductByPublicPath(productSlug).pipe(
catchError((error) => {
this.languageService.clearLocalizedRouteOverrides();
this.product.set(null);
this.selectedVariantId.set(null);
this.setSelectedImageAssetId(null);
this.modelFile.set(null);
const isNotFound = error?.status === 404;
this.error.set(isNotFound ? 'SHOP.NOT_FOUND' : 'SHOP.LOAD_ERROR');
this.setResponseStatus(isNotFound ? 404 : 503);
if (this.shouldApplyFallbackSeo(error)) {
this.applyFallbackSeo();
}
return of(null);
}),
finalize(() => this.loading.set(false)),
);
return this.shopService
.getProductByPublicPath(normalizedProductSlug)
.pipe(
catchError((error) => {
this.languageService.clearLocalizedRouteOverrides();
this.product.set(null);
this.selectedVariantId.set(null);
this.setSelectedImageAssetId(null);
this.modelFile.set(null);
const isNotFound = error?.status === 404;
this.error.set(
isNotFound ? 'SHOP.NOT_FOUND' : 'SHOP.LOAD_ERROR',
);
this.setResponseStatus(isNotFound ? 404 : 503);
if (this.shouldApplyFallbackSeo(error)) {
this.applyFallbackSeo();
}
return of(null);
}),
finalize(() => this.loading.set(false)),
);
}),
takeUntilDestroyed(this.destroyRef),
)