From 1cc5a2be9e7c3408b8b59aabd6d6e9afeb574c84 Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Tue, 27 Aug 2024 01:12:32 -0700 Subject: move ffxiv post components to submodule - declutter blog code --- src/components/FFXIVItemPrice.tsx | 119 -------------------------------------- 1 file changed, 119 deletions(-) delete mode 100644 src/components/FFXIVItemPrice.tsx (limited to 'src/components/FFXIVItemPrice.tsx') diff --git a/src/components/FFXIVItemPrice.tsx b/src/components/FFXIVItemPrice.tsx deleted file mode 100644 index d65b3ca..0000000 --- a/src/components/FFXIVItemPrice.tsx +++ /dev/null @@ -1,119 +0,0 @@ -import React, { useState, useEffect } from 'react'; - -interface FFXIVItemPriceProps { - itemId: number; - itemName: string; - itemImageUrl: string; -} - -const FFXIVItemPrice: React.FC = ({ itemId = 5530, itemName="Coke", itemImageUrl="https://xivapi.com/i/021000/021462_hr1.png"}) => { - const [selectedWorld, setSelectedWorld] = useState(null); - const [dailySaleVelocity, setDailySaleVelocity] = useState(null); - const [averageSalePrice, setAverageSalePrice] = useState(null); - const [inputQuantity, setInputQuantity] = useState(0); - const [potentialGil, setPotentialGil] = useState(0); - const [dataSource, setDataSource] = useState('world'); - - const fetchData = (attempt: number = 1) => { - fetch(`https://universalis.app/api/v2/aggregated/${selectedWorld}/${itemId}`) - .then(response => response.json()) - .then(data => { - let result = data.results[0]; - try { - setDailySaleVelocity(Math.round(result.nq.dailySaleVelocity.world.quantity)); - setAverageSalePrice(Math.round(result.nq.averageSalePrice.world.price)); - setDataSource('world'); - } catch (error) { - try { - setDailySaleVelocity(Math.round(result.nq.dailySaleVelocity.dc.quantity)); - setAverageSalePrice(Math.round(result.nq.averageSalePrice.dc.price)); - setDataSource('dc'); - } catch (error) { - try { - setDailySaleVelocity(Math.round(result.nq.dailySaleVelocity.region.quantity)); - setAverageSalePrice(Math.round(result.nq.averageSalePrice.region.price)); - setDataSource('region'); - } catch (error) { - console.error('Error fetching data:', error); - if (attempt < 3) { - setTimeout(() => fetchData(attempt + 1), 5000); - } - } - } - } - }) - .catch(error => { - console.error(`Error fetching data (attempt ${attempt}):`, error); - if (attempt < 3) { - setTimeout(() => fetchData(attempt + 1), 5000); - } - }); - }; - - useEffect(() => { - const savedWorld = localStorage.getItem('selectedWorld'); - if (savedWorld) { - setSelectedWorld(savedWorld); - } else { - setSelectedWorld('Midgardsormr'); - } - - fetchData(); - }, [itemId, selectedWorld]); - - const handleInputChange = (e: React.ChangeEvent) => { - const quantity = parseInt(e.target.value, 10); - setInputQuantity(quantity); - setPotentialGil(quantity * (averageSalePrice || 0)); - }; - - const formatNumber = (number: number | null) => { - return number !== null ? new Intl.NumberFormat().format(number) : 'N/A'; - }; - - return ( -
- - - - - - - - - - - - - - - - - - - - -
Average Price/Item:{formatNumber(averageSalePrice)} gil
Daily Sale Velocity:{formatNumber(dailySaleVelocity)} items
Enter Quantity: - -
Potential Gil Earnings:{formatNumber(potentialGil)} gil
- -
- ); -}; - -export default FFXIVItemPrice; \ No newline at end of file -- cgit v1.2.3