Manages product data retrieval, state, pagination, and filtering through HTTP calls for an Angular e-commerce application.
import { Inject, Injectable } from '@angular/core';
import {
Product,
ProductDetails,
SaveProductPayload,
} from '../models/product.model';
import { Pagination } from '../models/pagination.model';
import { ProductsFilter } from '../models/products-filter.model';
import { BehaviorSubject, Observable, of } from 'rxjs';
import { catchError, distinctUntilChanged, tap } from 'rxjs/operators';
import { createParamsFromObject } from '../utils/create-params-from-object';
import { HttpClient, HttpParams } from '@angular/common/http';
import { API_URL } from '@core/api.token';
import { ProductsFilterRes } from '@core/models/ProductsFilterRes';
export interface ProductsState {
data: Product[];
pagination: Pagination;
filters: ProductsFilter | null;
error: string | null;
loading: bool
... (truncated -- full source via MCP)
See the full source, get the GitHub permalink, and search 40K more like it.
Get a free API key