From 82e03978b89938219958032efb1448cc76baa181 Mon Sep 17 00:00:00 2001 From: Saumit Date: Sat, 27 Sep 2025 02:14:26 +0530 Subject: Initial snapshot - OpenTelemetry demo 2.1.3 -f --- .../components/ProductCard/ProductCard.tsx | 65 ++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/frontend/components/ProductCard/ProductCard.tsx (limited to 'src/frontend/components/ProductCard/ProductCard.tsx') diff --git a/src/frontend/components/ProductCard/ProductCard.tsx b/src/frontend/components/ProductCard/ProductCard.tsx new file mode 100644 index 0000000..0744e21 --- /dev/null +++ b/src/frontend/components/ProductCard/ProductCard.tsx @@ -0,0 +1,65 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +import { CypressFields } from '../../utils/enums/CypressFields'; +import { Product } from '../../protos/demo'; +import ProductPrice from '../ProductPrice'; +import * as S from './ProductCard.styled'; +import { useState, useEffect } from 'react'; +import { useNumberFlagValue } from '@openfeature/react-sdk'; + +interface IProps { + product: Product; +} + +async function getImageWithHeaders(requestInfo: Request) { + const res = await fetch(requestInfo); + return await res.blob(); +} + +const ProductCard = ({ + product: { + id, + picture, + name, + priceUsd = { + currencyCode: 'USD', + units: 0, + nanos: 0, + }, + }, +}: IProps) => { + const imageSlowLoad = useNumberFlagValue('imageSlowLoad', 0); + const [imageSrc, setImageSrc] = useState(''); + + useEffect(() => { + const headers = new Headers(); + headers.append('x-envoy-fault-delay-request', imageSlowLoad.toString()); + headers.append('Cache-Control', 'no-cache') + const requestInit = { + method: "GET", + headers: headers + }; + const image_url ='/images/products/' + picture + const requestInfo = new Request(image_url, requestInit); + getImageWithHeaders(requestInfo).then(blob => { + setImageSrc(URL.createObjectURL(blob)); + }); + }, [imageSlowLoad, picture]); + + return ( + + + +
+ {name} + + + +
+
+
+ ); +}; + +export default ProductCard; -- cgit v1.2.3