From 10107ea5e84d46b8feb432823c411b0662832858 Mon Sep 17 00:00:00 2001 From: Pandelis Symeonidis Date: Wed, 29 Nov 2023 11:53:55 +0100 Subject: [PATCH] complete pattern refactor --- frontend/src/components/index.ts | 2 - .../src/components/menu-card/menu-card.tsx | 4 +- frontend/src/pages/buy/item-buy.tsx | 15 +++++-- frontend/src/pages/sell/item-sell.tsx | 8 +++- frontend/src/service/character.ts | 4 +- frontend/src/service/items.ts | 39 +++++++++---------- 6 files changed, 39 insertions(+), 33 deletions(-) diff --git a/frontend/src/components/index.ts b/frontend/src/components/index.ts index 40ee36ae0..08a89d126 100644 --- a/frontend/src/components/index.ts +++ b/frontend/src/components/index.ts @@ -7,8 +7,6 @@ export * from "./item-card"; export * from "./input-fields"; export * from "./switch-selector"; export * from "./navigation-tab"; -export * from "./menu-card"; -export * from "./menu-item"; export * from "./price-in-ist"; export * from "./base-route"; export * from "./equipped-item-card"; diff --git a/frontend/src/components/menu-card/menu-card.tsx b/frontend/src/components/menu-card/menu-card.tsx index b52a59d8f..dd7b89aec 100644 --- a/frontend/src/components/menu-card/menu-card.tsx +++ b/frontend/src/components/menu-card/menu-card.tsx @@ -48,11 +48,11 @@ export const MenuCard: FC = ({ title, category, equippedItemProp, const unequipItem = useUnequipItem(); const handleEquipResult: MakeOfferCallback = { - accepted: () => setEquippedItem(undefined), + accepted: setEquippedItem, }; const handleUnequipResult: MakeOfferCallback = { - accepted: setEquippedItem, + accepted: () => setEquippedItem(undefined), }; const allItems = useMemo(() => { diff --git a/frontend/src/pages/buy/item-buy.tsx b/frontend/src/pages/buy/item-buy.tsx index c5e05adfc..0d65cf233 100644 --- a/frontend/src/pages/buy/item-buy.tsx +++ b/frontend/src/pages/buy/item-buy.tsx @@ -29,10 +29,17 @@ export const ItemBuy = () => { const handleSubmit = async () => { setIsAwaitingApproval(true); - await buyItem.sendOffer(() => { - setIsOfferAccepted(true); - setIsAwaitingApproval(false); - }, {}); + await buyItem.sendOffer({ + refunded: () => { + setIsOfferAccepted(true); + }, + accepted: () => { + setIsOfferAccepted(true); + }, + settled: () => { + setIsAwaitingApproval(false); + } + }); }; if (!data) return ; diff --git a/frontend/src/pages/sell/item-sell.tsx b/frontend/src/pages/sell/item-sell.tsx index e017ae6b0..025cbf77c 100644 --- a/frontend/src/pages/sell/item-sell.tsx +++ b/frontend/src/pages/sell/item-sell.tsx @@ -5,7 +5,7 @@ import { ErrorView } from "../../components"; import { useSellItem } from "../../service"; import { Sell } from "./sell"; import { SellData } from "./types"; -import { Category, isItemCategory } from "../../interfaces"; +import { Category, MakeOfferCallback, isItemCategory } from "../../interfaces"; export const ItemSell = () => { const { name, category } = useParams<"category" | "name">(); @@ -13,9 +13,13 @@ export const ItemSell = () => { const sellItem = useSellItem(name, category as Category); const [data, setData] = useState({ price: 0 }); + const handleResult: MakeOfferCallback = { + settled: () => setIsPlacedInShop(true), + }; + const sendOfferHandler = async (data: SellData) => { if (data.price < 1) return; // We don't want to sell for free in case someone managed to fool the frontend - await sellItem.sendOffer(data.price, () => setIsPlacedInShop(true), {}); + await sellItem.sendOffer(data.price, handleResult); }; if (!data || !isItemCategory(category)) return ; diff --git a/frontend/src/service/character.ts b/frontend/src/service/character.ts index 4ab404b75..d2af6b057 100644 --- a/frontend/src/service/character.ts +++ b/frontend/src/service/character.ts @@ -244,13 +244,13 @@ export const useBuyCharacter = (characterId: string) => { callback: { ...callback, refunded: () => { - if (callback.refunded) callback.refunded(); console.info("BuyCharacter call settled"); + if (callback.refunded) callback.refunded(); setIsLoading(false); }, accepted: () => { - if (callback.accepted) callback.accepted(); console.info("BuyCharacter call settled"); + if (callback.accepted) callback.accepted(); setIsLoading(false); }, setIsLoading: setIsLoading, diff --git a/frontend/src/service/items.ts b/frontend/src/service/items.ts index 375e987a9..436d9087a 100644 --- a/frontend/src/service/items.ts +++ b/frontend/src/service/items.ts @@ -143,7 +143,7 @@ export const useSellItem = (itemName: string | undefined, itemCategory: Category const [isLoading, setIsLoading] = useState(false); const sendOffer = useCallback( - async (price: number, setPlacedInShop: () => void, callback: MakeOfferCallback) => { + async (price: number, callback: MakeOfferCallback) => { try { const found = items.find((item) => item.name === itemName && item.category === itemCategory); if (!found) return; @@ -163,20 +163,14 @@ export const useSellItem = (itemName: string | undefined, itemCategory: Category }, callback: { ...callback, - refunded: () => { - if (callback.refunded) callback.refunded(); - console.info("SellItem call settled"); - setIsLoading(false); - }, - accepted: () => { - if (callback.accepted) callback.accepted(); + seated: () => { console.info("SellItem call settled"); + if (callback.seated) callback.seated(); setIsLoading(false); }, setIsLoading: setIsLoading } }); - setPlacedInShop(); return true; } catch (error) { console.warn(error); @@ -202,7 +196,7 @@ export const useBuyItem = (itemToBuy: ItemInMarket | undefined) => { const istBrand = service.tokenInfo.ist.brand; const sendOffer = useCallback( - async (setIsAwaitingApprovalToFalse: () => void, callback: MakeOfferCallback) => { + async (callback: MakeOfferCallback) => { try { if (!itemToBuy) return; const { forSale, equippedTo, activity, ...itemObject } = itemToBuy.item; @@ -221,16 +215,14 @@ export const useBuyItem = (itemToBuy: ItemInMarket | undefined) => { callback: { ...callback, refunded: () => { - if (callback.refunded) callback.refunded(); console.info("BuyItem call settled"); + if (callback.refunded) callback.refunded(); setIsLoading(false); - setIsAwaitingApprovalToFalse(); }, accepted: () => { - if (callback.accepted) callback.accepted(); console.info("BuyItem call settled"); + if (callback.accepted) callback.accepted(); setIsLoading(false); - setIsAwaitingApprovalToFalse(); }, setIsLoading: setIsLoading } @@ -238,7 +230,6 @@ export const useBuyItem = (itemToBuy: ItemInMarket | undefined) => { } catch (error) { console.warn(error); setIsError(true); - setIsAwaitingApprovalToFalse(); } }, [itemToBuy, items, wallet, service], @@ -282,9 +273,11 @@ export const useEquipItem = () => { }, callback: { ...body.callback, - accepted: () => { + seated: () => { console.info("Swap call settled"); - if (body.callback.accepted) body.callback.accepted(); + if (body.callback.seated) body.callback.seated(); + }, + settled: () => { setTimeout(() => userStateDispatch({ type: "END_INVENTORY_CALL" }), INVENTORY_CALL_FETCH_DELAY); } } @@ -301,9 +294,11 @@ export const useEquipItem = () => { }, callback: { ...body.callback, - accepted: () => { + seated: () => { console.info("Equip call settled"); - if (body.callback.accepted) body.callback.accepted(); + if (body.callback.seated) body.callback.seated(); + }, + settled: () => { setTimeout(() => userStateDispatch({ type: "END_INVENTORY_CALL" }), INVENTORY_CALL_FETCH_DELAY); } }, @@ -342,9 +337,11 @@ export const useUnequipItem = () => { }, callback: { ...body.callback, - accepted: () => { + seated: () => { console.info("Unequip call settled"); - if (body.callback.accepted) body.callback.accepted(); + if (body.callback.seated) body.callback.seated(); + }, + settled: () => { setTimeout(() => userStateDispatch({ type: "END_INVENTORY_CALL" }), INVENTORY_CALL_FETCH_DELAY); } }