dont check erros with string 'error', remove unnecessary optional chaining

This commit is contained in:
shamoon 2024-07-01 17:00:09 -07:00
parent a3b4032cb5
commit a2a617b319
3 changed files with 40 additions and 37 deletions

View File

@ -44,41 +44,44 @@ export default function Widget({ options }) {
> >
<FaChartLine className="flex-none w-5 h-5 text-theme-800 dark:text-theme-200 mr-2" /> <FaChartLine className="flex-none w-5 h-5 text-theme-800 dark:text-theme-200 mr-2" />
<div className="flex flex-wrap items-center gap-0.5"> <div className="flex flex-wrap items-center gap-0.5">
{data.stocks.map((stock) => ( {data.stocks.map(
<div (stock) =>
key={stock.ticker} stock && (
className="rounded h-full text-xs px-1 w-[4.75rem] flex flex-col items-center justify-center" <div
> key={stock.ticker}
<span className="text-theme-800 dark:text-theme-200 text-xs">{stock.ticker}</span> className="rounded h-full text-xs px-1 w-[4.75rem] flex flex-col items-center justify-center"
{!viewingPercentChange ? (
<span
className={
color !== false
? `text-xs ${stock?.percentChange < 0 ? "text-rose-300/70" : "text-emerald-300/70"}`
: "text-theme-800/70 dark:text-theme-200/50 text-xs"
}
> >
{stock?.currentPrice !== "error" <span className="text-theme-800 dark:text-theme-200 text-xs">{stock.ticker}</span>
? t("common.number", { {!viewingPercentChange ? (
value: stock.currentPrice, <span
style: "currency", className={
currency: "USD", color !== false
}) ? `text-xs ${stock.percentChange < 0 ? "text-rose-300/70" : "text-emerald-300/70"}`
: t("widget.api_error")} : "text-theme-800/70 dark:text-theme-200/50 text-xs"
</span> }
) : ( >
<span {stock.currentPrice !== null
className={ ? t("common.number", {
color !== false value: stock.currentPrice,
? `text-xs ${stock?.percentChange < 0 ? "text-rose-300/70" : "text-emerald-300/70"}` style: "currency",
: "text-theme-800/70 dark:text-theme-200/70 text-xs" currency: "USD",
} })
> : t("widget.api_error")}
{stock?.percentChange !== "error" ? `${stock.percentChange}%` : t("widget.api_error")} </span>
</span> ) : (
)} <span
</div> className={
))} color !== false
? `text-xs ${stock.percentChange < 0 ? "text-rose-300/70" : "text-emerald-300/70"}`
: "text-theme-800/70 dark:text-theme-200/70 text-xs"
}
>
{stock.percentChange !== null ? `${stock.percentChange}%` : t("widget.api_error")}
</span>
)}
</div>
),
)}
</div> </div>
</button> </button>
</Raw> </Raw>

View File

@ -56,7 +56,7 @@ export default async function handler(req, res) {
// API sometimes returns 200, but values returned are `null` // API sometimes returns 200, but values returned are `null`
if (c === null || dp === null) { if (c === null || dp === null) {
return { ticker: ticker || "error", currentPrice: "error", percentChange: "error" }; return { ticker: ticker, currentPrice: null, percentChange: null };
} }
// Rounding percentage, but we want it back to a number for comparison // Rounding percentage, but we want it back to a number for comparison

View File

@ -64,8 +64,8 @@ function StockItem({ service, ticker }) {
<div className="bg-theme-200/50 dark:bg-theme-900/20 rounded flex flex-1 items-center justify-between m-1 p-1 text-xs"> <div className="bg-theme-200/50 dark:bg-theme-900/20 rounded flex flex-1 items-center justify-between m-1 p-1 text-xs">
<span className="font-thin ml-2 flex-none">{ticker}</span> <span className="font-thin ml-2 flex-none">{ticker}</span>
<div className="flex items-center flex-row-reverse mr-2 text-right"> <div className="flex items-center flex-row-reverse mr-2 text-right">
<span className={`font-bold ml-2 w-10 ${data?.dp > 0 ? "text-emerald-300" : "text-rose-300"}`}> <span className={`font-bold ml-2 w-10 ${data.dp > 0 ? "text-emerald-300" : "text-rose-300"}`}>
{data?.dp?.toFixed(2) ? `${data?.dp?.toFixed(2)}%` : t("widget.api_error")} {data.dp?.toFixed(2) ? `${data.dp?.toFixed(2)}%` : t("widget.api_error")}
</span> </span>
<span className="font-bold"> <span className="font-bold">
{data.c {data.c