import { Image, StyleSheet, Platform, ImageBackground, View, Text, Button, TextInputKeyPressEventData, TextInput, FlatList } from 'react-native'; import { SafeAreaView } from 'react-native-safe-area-context'; import { useAppSelector } from '../store'; import { selectProducts } from '@/features/product/productSlice'; import { Product, dimensions_t } from '@/lib/product'; import { useEffect, useState } from 'react'; import { TouchableHighlight } from 'react-native-gesture-handler'; const fallbackImage = require("@/assets/images/board-stock-lightened-blurred.png"); export default function HomeScreen() { const products = useAppSelector(selectProducts); const [activeProduct, setActiveProduct] = useState(null as Product | null); const [price, setPrice] = useState("0.00"); const [length, setLength] = useState("0"); const [width, setWidth] = useState("0"); const [units, setUnits] = useState("in" as "ft" | "in"); useEffect(function () { const iv = setInterval(function () { if (!activeProduct) return; const l = Number.parseInt(length); const w = Number.parseInt(width); // console.log("l=%d, w=%d", l, w); const u = units; const d: dimensions_t = activeProduct.area ? { l, w, u } : { l, u }; try { const p = activeProduct.priceFor(d); console.log("set price %s", p); const s = p.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2, }) setPrice(s == "NaN" ? "0.00" : s); } catch (err) { console.log(activeProduct); console.error(err) return null; } }, 50); return function () { clearInterval(iv); } }, [activeProduct, length, width]); return ( $ {price} {activeProduct ? ( {units} {activeProduct.area && ( {units} ) }