arch(sprint1): move UI env reads behind runtime facade

This commit is contained in:
sdarbinyan
2026-07-03 01:58:08 +04:00
parent 3cbb28a116
commit ae258382e1
9 changed files with 144 additions and 24 deletions

View File

@@ -10,12 +10,12 @@ import { catchError, exhaustMap, take, timeout } from 'rxjs/operators';
import { DeliverySelectorComponent } from '../../components/delivery-selector/delivery-selector.component';
import { EmptyCartIconComponent } from '../../components/empty-cart-icon/empty-cart-icon.component';
import { TelegramLoginComponent } from '../../components/telegram-login/telegram-login.component';
import { environment } from '../../../environments/environment';
import { getDiscountedPrice, getMainImage, trackByItemId, getBadgeClass, getTranslatedField } from '../../utils/item.utils';
import { LangRoutePipe } from '../../pipes/lang-route.pipe';
import { TranslatePipe } from '../../i18n/translate.pipe';
import { TranslateService } from '../../i18n/translate.service';
import { PAYMENT_POLL_INTERVAL_MS, PAYMENT_MAX_CHECKS, PAYMENT_TIMEOUT_CLOSE_MS, LINK_COPIED_DURATION_MS } from '../../config/constants';
import { UiRuntimeFacade } from '../../facades/runtime/ui-runtime.facade';
type PaymentMethod = 'qr' | 'card';
@@ -35,10 +35,14 @@ export class CartComponent implements OnDestroy {
hasDeliveryPrice;
allRequiredDeliveriesSelected;
termsAccepted = false;
isnovo = environment.theme === 'novo';
private readonly uiRuntime = inject(UiRuntimeFacade);
private i18n = inject(TranslateService);
private authService = inject(AuthService);
get isnovo(): boolean {
return this.uiRuntime.isNovo();
}
isAuthenticated = this.authService.isAuthenticated;

View File

@@ -2,11 +2,11 @@
import { Router, RouterLink } from '@angular/router';
import { ApiService, LanguageService } from '../../services';
import { Category } from '../../models';
import { environment } from '../../../environments/environment';
import { getTranslatedCategoryName } from '../../utils/item.utils';
import { ItemsCarouselComponent } from '../../components/items-carousel/items-carousel.component';
import { LangRoutePipe } from '../../pipes/lang-route.pipe';
import { TranslatePipe } from '../../i18n/translate.pipe';
import { UiRuntimeFacade } from '../../facades/runtime/ui-runtime.facade';
@Component({
selector: 'app-home',
@@ -16,8 +16,13 @@ import { TranslatePipe } from '../../i18n/translate.pipe';
changeDetection: ChangeDetectionStrategy.OnPush
})
export class HomeComponent implements OnInit, OnDestroy {
brandName = environment.brandFullName;
isnovo = environment.theme === 'novo';
constructor(
private apiService: ApiService,
private router: Router,
private langService: LanguageService,
private readonly uiRuntime: UiRuntimeFacade
) {}
categories = signal<Category[]>([]);
wideCategories = signal<Set<number>>(new Set());
loading = signal(true);
@@ -53,7 +58,13 @@ export class HomeComponent implements OnInit, OnDestroy {
return cache;
});
constructor(private apiService: ApiService, private router: Router, private langService: LanguageService) {}
get brandName(): string {
return this.uiRuntime.brandFullName();
}
get isnovo(): boolean {
return this.uiRuntime.isNovo();
}
ngOnInit(): void {
this.loadCategories();

View File

@@ -7,12 +7,12 @@ import { AuthService } from '../../services/auth.service';
import { Item, ItemDetail, DescriptionField, DeliveryOption } from '../../models';
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
import { Subscription } from 'rxjs';
import { environment } from '../../../environments/environment';
import { SecurityContext } from '@angular/core';
import { getStockStatus, getBadgeClass, getTranslatedField } from '../../utils/item.utils';
import { LangRoutePipe } from '../../pipes/lang-route.pipe';
import { TranslatePipe } from '../../i18n/translate.pipe';
import { TranslateService } from '../../i18n/translate.service';
import { UiRuntimeFacade } from '../../facades/runtime/ui-runtime.facade';
@Component({
selector: 'app-item-detail',
@@ -26,7 +26,11 @@ export class ItemDetailComponent implements OnInit, OnDestroy {
selectedPhotoIndex = signal(0);
loading = signal(true);
error = signal<string | null>(null);
isnovo = environment.theme === 'novo';
private readonly uiRuntime = inject(UiRuntimeFacade);
get isnovo(): boolean {
return this.uiRuntime.isNovo();
}
// Variant selection
selectedColour = signal<string | null>(null);