fix trade service

This commit is contained in:
2025-11-26 19:24:01 +01:00
parent 89fc4a782c
commit 9f5dab94af

View File

@@ -151,24 +151,8 @@ export default function TradeDetail({
} }
}; };
const handleCounterOffer = async () => { // In the symmetric model, counter-offer is the same as edit
try { const handleCounterOffer = handleEdit;
// For counter-offer, load the other user's collection
const collectionMap = await getUserCollection(otherUserId);
const cardIds = Array.from(collectionMap.keys());
const cards = await getCardsByIds(cardIds);
const collection = cards.map((card) => ({
card,
quantity: collectionMap.get(card.id) || 0,
}));
setEditReceiverCollection(collection);
setShowEditMode('counter');
} catch (error) {
console.error('Error loading collection for counter-offer:', error);
toast.error('Failed to load collection');
}
};
// senderCards = myCards, receiverCards = theirCards (already calculated correctly) // senderCards = myCards, receiverCards = theirCards (already calculated correctly)
const yourCards = senderCards; const yourCards = senderCards;
@@ -176,15 +160,13 @@ export default function TradeDetail({
const yourPrice = calculateTotalPrice(yourCards); const yourPrice = calculateTotalPrice(yourCards);
const theirPrice = calculateTotalPrice(theirCards); const theirPrice = calculateTotalPrice(theirCards);
// For edit mode, determine initial cards based on mode // For edit mode, pre-populate with current cards
// In the symmetric model, both edit and counter-offer use the same perspective:
// - Your cards (what you're offering)
// - Their cards (what you want)
// Include quantity in the card object so TradeCreator can preserve it // Include quantity in the card object so TradeCreator can preserve it
const isCounterOffer = showEditMode === 'counter'; const editInitialSenderCards = yourCards.map(c => ({ ...c.card, quantity: c.quantity }));
const editInitialSenderCards = isCounterOffer const editInitialReceiverCards = theirCards.map(c => ({ ...c.card, quantity: c.quantity }));
? theirCards.map(c => ({ ...c.card, quantity: c.quantity }))
: yourCards.map(c => ({ ...c.card, quantity: c.quantity }));
const editInitialReceiverCards = isCounterOffer
? yourCards.map(c => ({ ...c.card, quantity: c.quantity }))
: theirCards.map(c => ({ ...c.card, quantity: c.quantity }));
if (showEditMode) { if (showEditMode) {
return ( return (
@@ -416,10 +398,20 @@ export default function TradeDetail({
</button> </button>
</> </>
) : trade.editor_id === user?.id ? ( ) : trade.editor_id === user?.id ? (
/* User made the last edit - waiting for response */ /* User made the last edit - can still edit while waiting for response */
<p className="text-center text-gray-400 text-sm py-2"> <>
Waiting for {otherUser?.username} to respond... <p className="text-center text-gray-400 text-sm py-2">
</p> Waiting for {otherUser?.username} to respond...
</p>
<button
onClick={handleEdit}
disabled={processing}
className="w-full flex items-center justify-center gap-2 px-4 py-3 bg-blue-600 hover:bg-blue-700 disabled:bg-gray-600 rounded-lg font-medium transition"
>
<Edit size={18} />
Modify Your Offer
</button>
</>
) : ( ) : (
/* No editor yet (initial trade) */ /* No editor yet (initial trade) */
<> <>