From 97961d6896745c68cbf20ff288ab9d80e24db84d Mon Sep 17 00:00:00 2001 From: Snarling <84951833+Snarling@users.noreply.github.com> Date: Sat, 20 Aug 2022 18:52:18 -0400 Subject: [PATCH] Reduce prop chaining --- src/StockMarket/ui/StockMarketRoot.tsx | 28 +----------------- src/StockMarket/ui/StockTicker.tsx | 40 +++++++++----------------- src/StockMarket/ui/StockTickers.tsx | 29 +------------------ src/ui/GameRoot.tsx | 8 +----- 4 files changed, 17 insertions(+), 88 deletions(-) diff --git a/src/StockMarket/ui/StockMarketRoot.tsx b/src/StockMarket/ui/StockMarketRoot.tsx index 59d348225..21eb14b66 100644 --- a/src/StockMarket/ui/StockMarketRoot.tsx +++ b/src/StockMarket/ui/StockMarketRoot.tsx @@ -7,31 +7,14 @@ import { InfoAndPurchases } from "./InfoAndPurchases"; import { StockTickers } from "./StockTickers"; import { IStockMarket } from "../IStockMarket"; -import { Stock } from "../Stock"; -import { OrderTypes } from "../data/OrderTypes"; -import { PositionTypes } from "../data/PositionTypes"; import { IPlayer } from "../../PersonObjects/IPlayer"; import { EventEmitter } from "../../utils/EventEmitter"; -type txFn = (stock: Stock, shares: number) => boolean; -type placeOrderFn = ( - stock: Stock, - shares: number, - price: number, - ordType: OrderTypes, - posType: PositionTypes, -) => boolean; - type IProps = { - buyStockLong: txFn; - buyStockShort: txFn; eventEmitterForReset?: EventEmitter<[]>; initStockMarket: () => void; p: IPlayer; - placeOrder: placeOrderFn; - sellStockLong: txFn; - sellStockShort: txFn; stockMarket: IStockMarket; }; @@ -49,16 +32,7 @@ export function StockMarketRoot(props: IProps): React.ReactElement { <> {props.p.hasWseAccount && ( - + )} ); diff --git a/src/StockMarket/ui/StockTicker.tsx b/src/StockMarket/ui/StockTicker.tsx index 47654b6db..faf3c9abb 100644 --- a/src/StockMarket/ui/StockTicker.tsx +++ b/src/StockMarket/ui/StockTicker.tsx @@ -14,6 +14,8 @@ import { Stock } from "../Stock"; import { getBuyTransactionCost, getSellTransactionGain, calculateBuyMaxAmount } from "../StockMarketHelpers"; import { OrderTypes } from "../data/OrderTypes"; import { PositionTypes } from "../data/PositionTypes"; +import { placeOrder } from "../StockMarket"; +import { buyStock, shortStock, sellStock, sellShort } from "../BuyingAndSelling"; import { IPlayer } from "../../PersonObjects/IPlayer"; import { numeralWrapper } from "../../ui/numeralFormat"; @@ -38,24 +40,10 @@ enum SelectorOrderType { Stop = "Stop Order", } -type txFn = (stock: Stock, shares: number) => boolean; -type placeOrderFn = ( - stock: Stock, - shares: number, - price: number, - ordType: OrderTypes, - posType: PositionTypes, -) => boolean; - type IProps = { - buyStockLong: txFn; - buyStockShort: txFn; orders: Order[]; p: IPlayer; - placeOrder: placeOrderFn; rerenderAllTickers: () => void; - sellStockLong: txFn; - sellStockShort: txFn; stock: Stock; }; @@ -138,9 +126,9 @@ export function StockTicker(props: IProps): React.ReactElement { switch (orderType) { case SelectorOrderType.Market: { if (position === PositionTypes.Short) { - props.buyStockShort(props.stock, shares); + shortStock(props.stock, shares); } else { - props.buyStockLong(props.stock, shares); + buyStock(props.stock, shares); } props.rerenderAllTickers(); break; @@ -150,7 +138,7 @@ export function StockTicker(props: IProps): React.ReactElement { setModalProps({ text: "Enter the price for your Limit Order", placeText: "Place Buy Limit Order", - place: (price: number) => props.placeOrder(props.stock, shares, price, OrderTypes.LimitBuy, position), + place: (price: number) => placeOrder(props.stock, shares, price, OrderTypes.LimitBuy, position), }); break; } @@ -159,7 +147,7 @@ export function StockTicker(props: IProps): React.ReactElement { setModalProps({ text: "Enter the price for your Stop Order", placeText: "Place Buy Stop Order", - place: (price: number) => props.placeOrder(props.stock, shares, price, OrderTypes.StopBuy, position), + place: (price: number) => placeOrder(props.stock, shares, price, OrderTypes.StopBuy, position), }); break; } @@ -178,9 +166,9 @@ export function StockTicker(props: IProps): React.ReactElement { switch (orderType) { case SelectorOrderType.Market: { if (position === PositionTypes.Short) { - props.buyStockShort(stock, maxShares); + shortStock(stock, maxShares); } else { - props.buyStockLong(stock, maxShares); + buyStock(stock, maxShares); } props.rerenderAllTickers(); break; @@ -234,9 +222,9 @@ export function StockTicker(props: IProps): React.ReactElement { switch (orderType) { case SelectorOrderType.Market: { if (position === PositionTypes.Short) { - props.sellStockShort(props.stock, shares); + sellShort(props.stock, shares); } else { - props.sellStockLong(props.stock, shares); + sellStock(props.stock, shares); } props.rerenderAllTickers(); break; @@ -246,7 +234,7 @@ export function StockTicker(props: IProps): React.ReactElement { setModalProps({ text: "Enter the price for your Limit Order", placeText: "Place Sell Limit Order", - place: (price: number) => props.placeOrder(props.stock, shares, price, OrderTypes.LimitSell, position), + place: (price: number) => placeOrder(props.stock, shares, price, OrderTypes.LimitSell, position), }); break; } @@ -255,7 +243,7 @@ export function StockTicker(props: IProps): React.ReactElement { setModalProps({ text: "Enter the price for your Stop Order", placeText: "Place Sell Stop Order", - place: (price: number) => props.placeOrder(props.stock, shares, price, OrderTypes.StopSell, position), + place: (price: number) => placeOrder(props.stock, shares, price, OrderTypes.StopSell, position), }); break; } @@ -270,9 +258,9 @@ export function StockTicker(props: IProps): React.ReactElement { switch (orderType) { case SelectorOrderType.Market: { if (position === PositionTypes.Short) { - props.sellStockShort(stock, stock.playerShortShares); + sellShort(stock, stock.playerShortShares); } else { - props.sellStockLong(stock, stock.playerShares); + sellStock(stock, stock.playerShares); } props.rerenderAllTickers(); break; diff --git a/src/StockMarket/ui/StockTickers.tsx b/src/StockMarket/ui/StockTickers.tsx index 91c40e316..ab67d9b3e 100644 --- a/src/StockMarket/ui/StockTickers.tsx +++ b/src/StockMarket/ui/StockTickers.tsx @@ -10,29 +10,13 @@ import { StockTickersConfig, TickerDisplayMode } from "./StockTickersConfig"; import { IStockMarket } from "../IStockMarket"; import { Stock } from "../Stock"; -import { OrderTypes } from "../data/OrderTypes"; -import { PositionTypes } from "../data/PositionTypes"; import { IPlayer } from "../../PersonObjects/IPlayer"; import { EventEmitter } from "../../utils/EventEmitter"; -type txFn = (stock: Stock, shares: number) => boolean; -type placeOrderFn = ( - stock: Stock, - shares: number, - price: number, - ordType: OrderTypes, - posType: PositionTypes, -) => boolean; - type IProps = { - buyStockLong: txFn; - buyStockShort: txFn; eventEmitterForReset?: EventEmitter<[]>; p: IPlayer; - placeOrder: placeOrderFn; - sellStockLong: txFn; - sellStockShort: txFn; stockMarket: IStockMarket; }; @@ -86,18 +70,7 @@ export function StockTickers(props: IProps): React.ReactElement { } tickers.push( - , + , ); } } diff --git a/src/ui/GameRoot.tsx b/src/ui/GameRoot.tsx index 13a506353..3a7f43cb5 100644 --- a/src/ui/GameRoot.tsx +++ b/src/ui/GameRoot.tsx @@ -17,8 +17,7 @@ import { prestigeAugmentation } from "../Prestige"; import { dialogBoxCreate } from "./React/DialogBox"; import { GetAllServers } from "../Server/AllServers"; import { Factions } from "../Faction/Factions"; -import { buyStock, sellStock, shortStock, sellShort } from "../StockMarket/BuyingAndSelling"; -import { eventEmitterForUiReset, initStockMarketFn, placeOrder, StockMarket } from "../StockMarket/StockMarket"; +import { eventEmitterForUiReset, initStockMarketFn, StockMarket } from "../StockMarket/StockMarket"; import { Theme } from "@mui/material/styles"; import makeStyles from "@mui/styles/makeStyles"; @@ -438,14 +437,9 @@ export function GameRoot({ player, engine, terminal }: IProps): React.ReactEleme case Page.StockMarket: { mainPage = ( );