mirror of
https://github.com/cfultz/mtgcsv.git
synced 2024-12-04 06:00:04 +01:00
69 lines
2.2 KiB
JavaScript
69 lines
2.2 KiB
JavaScript
// card.js
|
|
|
|
import { updateCardDetails, loadCollection } from './storage.js';
|
|
import { showCardPopup } from './popup.js';
|
|
|
|
export async function addCard(cardList) {
|
|
const cardName = document.getElementById('card-name').value;
|
|
const setCodeInput = document.getElementById('set-code');
|
|
const cardIdInput = document.getElementById('card-id');
|
|
|
|
let setCode = setCodeInput.value;
|
|
let cardId = cardIdInput.value;
|
|
|
|
const cardDetails = await fetchCardDetails(cardName, setCode);
|
|
|
|
if (cardDetails) {
|
|
if (!setCode) {
|
|
setCode = cardDetails.set;
|
|
setCodeInput.value = setCode;
|
|
}
|
|
if (!cardId) {
|
|
cardId = cardDetails.card_id;
|
|
cardIdInput.value = cardId;
|
|
}
|
|
|
|
const cardData = {
|
|
name: cardName,
|
|
set: setCode,
|
|
card_id: cardId,
|
|
quantity: document.getElementById('quantity').value,
|
|
foil: document.getElementById('foil').value,
|
|
mana_cost: cardDetails.mana_cost,
|
|
power: cardDetails.power,
|
|
toughness: cardDetails.toughness,
|
|
type: cardDetails.type,
|
|
rarity: cardDetails.rarity,
|
|
price: cardDetails.price
|
|
};
|
|
|
|
updateCardDetails(cardData);
|
|
cardList.push(cardData); // Add the card to the list
|
|
showCardPopup(cardData.name, cardDetails.imageUrl, cardDetails.price);
|
|
} else {
|
|
alert("Card not found with the given name.");
|
|
}
|
|
}
|
|
|
|
export async function fetchCardDetails(cardName, setCode) {
|
|
const response = await fetch(`https://api.scryfall.com/cards/named?exact=${encodeURIComponent(cardName)}&set=${encodeURIComponent(setCode)}`);
|
|
const data = await response.json();
|
|
|
|
if (data.object === 'error') {
|
|
return null;
|
|
}
|
|
|
|
return {
|
|
set: data.set.toUpperCase(),
|
|
card_id: data.collector_number,
|
|
mana_cost: data.mana_cost || 'N/A',
|
|
power: data.power || 'N/A',
|
|
toughness: data.toughness || 'N/A',
|
|
type: data.type_line.split('—')[0].trim(),
|
|
rarity: data.rarity || 'N/A',
|
|
price: data.prices.usd || '0.00',
|
|
imageUrl: data.image_uris ? data.image_uris.small : null,
|
|
name: data.name
|
|
};
|
|
}
|