import React, { useState, useEffect } from 'react';
import { Text, Grid } from 'theme-ui';
import Prizes from './prizes';
/** @jsxImportSource theme-ui */
const styled = `
@import url(https://fonts.googleapis.com/css2?family=Slackey&family=Emblema+One&family=Gaegu&display=swap);
.slackey {
font-family: "Slackey", sans-serif;
}
.gaegu {
font-family: "Gaegu", sans-serif;
}
body {
background-color: #FAEFD6;
}
a {
color: inherit;
}
`;
export default function ShopComponent({
availableItems,
userAirtableID = null,
hoursBalance = null,
userEmail = null,
pub
}) {
// State to manage quantity for each item
const [quantities, setQuantities] = useState({});
// Function to update quantity for an item
const handleQuantityChange = (itemID, quantity) => {
setQuantities({ ...quantities, [itemID]: quantity });
};
function buyLink(itemID, itemImage) {
const quantity = quantities[itemID] || 1; // Default quantity is 1 if not set
return `https://forms.hackclub.com/arcade-order?user_id=${userAirtableID}&item_id=${itemID}&quantity=${quantity}&image=${encodeURIComponent(itemImage)}&email=${encodeURIComponent(userEmail)}`;
}
const canPurchaseItems = userAirtableID !== null;
return (
<>
{/* Shop for {userAirtableID} */}
{availableItems
.sort((a, b) => a['Cost Hours'] - b['Cost Hours'])
.filter(item => (item['Stock'] > 0 || item['Stock'] === null))
.map((item) => (
handleQuantityChange(item.id, q)} // Pass handler to update quantity
hoursBalance={hoursBalance}
stock={item['Stock']}
categories={item['Category']}
pub={pub}
inStock={true}
/>
))}
{availableItems
.sort((a, b) => a['Cost Hours'] - b['Cost Hours'])
.filter(item => (item['Stock'] === 0))
.map((item) => (
handleQuantityChange(item.id, q)} // Pass handler to update quantity
hoursBalance={hoursBalance}
stock={item['Stock']}
categories={item['Category']}
pub={pub}
inStock={false}
/>
))}
>
);
}