diff --git a/src/app/Components/Accounts/Account.tsx b/src/app/Components/Accounts/Account.tsx new file mode 100644 index 0000000..5243733 --- /dev/null +++ b/src/app/Components/Accounts/Account.tsx @@ -0,0 +1,123 @@ +"use client"; +import React, { useState } from "react"; +import { IResourceAccount, IConversionPair } from "typings"; +import { resourceToFc } from "../../../utils/helpers"; +import ResourceModal from "./ResourceModal"; + +const ResourceAccount = (props: { + account: IResourceAccount; + sellResource: (pairs: IConversionPair[]) => void; +}) => { + const [showModal, setShowModal] = useState(false); + const [conversionPair, setConversionPair] = useState< + IConversionPair | undefined + >(undefined); + const [conversionRate, setConversionRate] = useState(0.1); + + const handleConversionPair = (amount: number, resourceType: string) => { + const updatedPair = { + resourceType: resourceType, + resourceAmount: amount, + moneyAmount: amount * conversionRate.valueOf(), + }; + setConversionPair(updatedPair); + }; + console.log(conversionPair); + return ( + <> + {showModal && ( +
+
+ +
+ + { +
+

+ Grand total +

+

+ ${" "} + {conversionPair + ? conversionPair.moneyAmount.toLocaleString("en-US", { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + }) + : 0} +

+ {conversionPair && ( + + )} +
+ } +
+
+
+ )} +
+
+ + {props.account.resourceType} + +

+ {props.account.balance.toLocaleString("en-US", { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + })}{" "} + kg +

+ { + setShowModal(!showModal); + }} + > + + +
+
+ + ); +}; + +export default ResourceAccount; diff --git a/src/app/Components/BankAccountsView.tsx b/src/app/Components/Accounts/AccountsView.tsx similarity index 65% rename from src/app/Components/BankAccountsView.tsx rename to src/app/Components/Accounts/AccountsView.tsx index 33f0504..ed21434 100644 --- a/src/app/Components/BankAccountsView.tsx +++ b/src/app/Components/Accounts/AccountsView.tsx @@ -1,12 +1,12 @@ "use client"; -import React from "react"; -import { IBankAccount } from "typings"; -import ResourceAccount from "./ResourceAccount"; +import React, { useState, useEffect } from "react"; +import { IBankAccount, IConversionPair } from "typings"; +import Account from "./Account"; import { BiLoaderAlt } from "react-icons/bi"; const BankAccountsView = (props: { bankAccount: IBankAccount | undefined; - setLightBoxIsActive: () => void; + sellResource: (pairs: IConversionPair[]) => void; }) => { if (props.bankAccount === undefined) { return ( @@ -15,10 +15,11 @@ const BankAccountsView = (props: { ); } + return (
-
-
+
+
Moonbucks

@@ -33,7 +34,13 @@ const BankAccountsView = (props: { {props.bankAccount && props.bankAccount?.resourceAccounts.length > 0 && props.bankAccount.resourceAccounts.map((account, id) => { - return ; + return ( + + ); })}

diff --git a/src/app/Components/Accounts/Old/ResourceStore.tsx b/src/app/Components/Accounts/Old/ResourceStore.tsx new file mode 100644 index 0000000..5109683 --- /dev/null +++ b/src/app/Components/Accounts/Old/ResourceStore.tsx @@ -0,0 +1,110 @@ +import React, { useState, useEffect } from "react"; +import ResourceStoreItem from "../ResourceModal"; +import { sumValues } from "../../../../utils/helpers"; +import { IBankAccount, IConversionPair } from "typings"; + +const ResourceStore = (props: { + bankAccount: IBankAccount | undefined; + sellResource: (pairs: IConversionPair[]) => void; +}) => { + const [conversionRate, setConversionRate] = useState(0.1); + const [conversionPairs, setConversionPairs] = useState< + IConversionPair[] | null + >(null); + + useEffect(() => { + if (props.bankAccount) { + const pairs = props.bankAccount.resourceAccounts.map((resource) => ({ + resourceType: resource.resourceType, + resourceAmount: 0, + moneyAmount: 0, + })); + setConversionPairs(pairs); + } + }, []); + + const handleConversionPairs = (amount: number, resourceType: string) => { + if (!conversionPairs) return; + + const existingObj = conversionPairs.find( + (obj) => obj.resourceType === resourceType + ); + + const updatedPairs = conversionPairs.map((pair) => { + if (pair.resourceType === existingObj?.resourceType) { + return { + ...pair, + resourceAmount: amount, + moneyAmount: amount * conversionRate.valueOf(), + }; + } else { + return pair; + } + }); + setConversionPairs(updatedPairs); + }; + + const getConversionPair = (resourceType: string) => { + return conversionPairs?.find((obj) => obj.resourceType === resourceType); + }; + + const handleSellResources = async () => { + if (conversionPairs) { + const response = props.sellResource(conversionPairs); + // if ok clear pairs + // setConversionPairs(null); + } + }; + + return ( +
+
+

Sell Resources

+
+
+ {props.bankAccount && + props.bankAccount.resourceAccounts.map((resourceAccount, id) => ( +
+
+ +
+
+ ))} + + {conversionPairs && ( +
+

+ Grand total +

+

+ ${" "} + {sumValues(conversionPairs, "moneyAmount").toLocaleString( + "en-US", + { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + } + )} +

+ +
+ )} +
+
+
+
+ ); +}; + +export default ResourceStore; diff --git a/src/app/Components/ResourceItem.tsx b/src/app/Components/Accounts/ResourceItem.tsx similarity index 100% rename from src/app/Components/ResourceItem.tsx rename to src/app/Components/Accounts/ResourceItem.tsx diff --git a/src/app/Components/Accounts/ResourceModal.tsx b/src/app/Components/Accounts/ResourceModal.tsx new file mode 100644 index 0000000..0c21a93 --- /dev/null +++ b/src/app/Components/Accounts/ResourceModal.tsx @@ -0,0 +1,121 @@ +"use client"; +import React, { useEffect, useState } from "react"; +import { IResourceAccount, IConversionPair } from "typings"; +import { resourceToBg, resourceToFc } from "../../../utils/helpers"; + +const ResourceModal = (props: { + resourceAccount: IResourceAccount; + conversionPair: IConversionPair | undefined; + handleConversionPair: (amount: number, resourceType: string) => void; +}) => { + const [error, setError] = useState(""); + + const handleAmountChange = ( + e: React.ChangeEvent, + resourceType: string + ) => { + console.log("Changing amount"); + const amount = Number(e.target.value); + if (amount <= props.resourceAccount.balance) { + props.handleConversionPair(amount, resourceType); + if (error) setError(""); + } else { + setError("You don't have enough"); + } + }; + return ( +
+
+ + {props.resourceAccount.resourceType} + +

+ {props.resourceAccount.balance.toLocaleString("en-US", { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + })}{" "} + kg +

+
+
+
+ + + Amount + +

+ {props.conversionPair + ? props.conversionPair.resourceAmount.toLocaleString("en-US", { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + }) + : 0}{" "} + kg. +

+
+ + + + + + + Moonbucks + +

+ $ + {props.conversionPair + ? props.conversionPair.moneyAmount.toLocaleString("en-US", { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + }) + : 0} +

+
+
+
+
+ {error && ( + {error} + )} + + handleAmountChange(e, props.resourceAccount.resourceType) + } + /> +
+
+ ); +}; + +export default ResourceModal; diff --git a/src/app/Components/InventoryItem.tsx b/src/app/Components/Inventory/InventoryItem.tsx similarity index 95% rename from src/app/Components/InventoryItem.tsx rename to src/app/Components/Inventory/InventoryItem.tsx index 0b7025c..3342da8 100644 --- a/src/app/Components/InventoryItem.tsx +++ b/src/app/Components/Inventory/InventoryItem.tsx @@ -1,6 +1,6 @@ import React, { useState, useEffect } from "react"; import { IInventoryItem, IStake } from "typings"; -import CardLayout from "../Layouts/CardLayout"; +import CardLayout from "../../Layouts/CardLayout"; import Image from "next/image"; const InventoryItem = (props: { inventoryItem: IInventoryItem; @@ -35,7 +35,7 @@ const InventoryItem = (props: { }; return ( -
+

{props.inventoryItem.storeItem.name} @@ -95,7 +95,7 @@ const InventoryItem = (props: { ({getNextUpgradePrice()})

-
+
{props.inventoryItem.storeItem.name}

Your Inventory

-
+
{props.inventoryItems && props.inventoryItems.length > 0 && props.inventoryItems.map((inventoryItem, id) => ( diff --git a/src/app/Components/Navbar.tsx b/src/app/Components/Navigation/Navbar.tsx similarity index 95% rename from src/app/Components/Navbar.tsx rename to src/app/Components/Navigation/Navbar.tsx index 409d209..7857808 100644 --- a/src/app/Components/Navbar.tsx +++ b/src/app/Components/Navigation/Navbar.tsx @@ -88,7 +88,7 @@ export default function Navbar({
-
-
- ); -}; - -export default ResourceStore; diff --git a/src/app/Components/ResourceStoreItem.tsx b/src/app/Components/ResourceStoreItem.tsx deleted file mode 100644 index bc8dffb..0000000 --- a/src/app/Components/ResourceStoreItem.tsx +++ /dev/null @@ -1,122 +0,0 @@ -"use client"; -import React, { useEffect, useState } from "react"; -import { IResourceAccount, IConversionPair } from "typings"; -import { resourceToBg, resourceToFc } from "../../utils/helpers"; - -const ResourceStoreItem = (props: { - resourceAccount: IResourceAccount; - conversionPair: IConversionPair | undefined; - handleConversionPairs: (amount: number, resourceType: string) => void; -}) => { - const [error, setError] = useState(""); - - const handleAmountChange = ( - e: React.ChangeEvent, - resourceType: string - ) => { - const amount = Number(e.target.value); - if (amount <= props.resourceAccount.balance) { - props.handleConversionPairs(amount, resourceType); - if (error) setError(""); - } else { - setError("You don't have enough"); - } - }; - return ( -
-
- - {props.resourceAccount.resourceType} - -

- {props.resourceAccount.balance.toLocaleString("en-US", { - minimumFractionDigits: 2, - maximumFractionDigits: 2, - })}{" "} - kg -

-
- {props.conversionPair ? ( -
-
- - - {props.conversionPair.resourceType} - -

- {props.conversionPair.resourceAmount.toLocaleString("en-US", { - minimumFractionDigits: 2, - maximumFractionDigits: 2, - })}{" "} - kg. -

-
- - - - - - - Moonbucks - -

- $ - {props.conversionPair.moneyAmount.toLocaleString("en-US", { - minimumFractionDigits: 2, - maximumFractionDigits: 2, - })} -

-
-
-
- ) : ( -
- )} -
- {error && ( - {error} - )} - - handleAmountChange(e, props.resourceAccount.resourceType) - } - /> -
-
- ); -}; - -export default ResourceStoreItem; diff --git a/src/app/Components/Staking/StakingSource.tsx b/src/app/Components/Staking/StakingSource.tsx new file mode 100644 index 0000000..fc93826 --- /dev/null +++ b/src/app/Components/Staking/StakingSource.tsx @@ -0,0 +1,237 @@ +import React, { useState, useEffect } from "react"; +import { IInventoryItem, IStakingSource, IStake, IOption } from "typings"; +import { + calculateRemainingTime, + getObjectFromArray, +} from "../../../utils/helpers"; +import SelectDropdown from "../SelectDropdown"; +import Image from "next/image"; + +const StakingSource = (props: { + stakingSource: IStakingSource; + inventoryItems: IInventoryItem[] | null | undefined; + claimStake: (stakingEventId: number) => void; + startStake: ( + inventoryItemId: number, + storeItemId: string, + wellId: number + ) => void; +}) => { + const [activeStakes, setActiveStakes] = useState([]); + const [selectedItemId, setSelectedItemId] = useState(null); + const [selectedStoreItemId, setSelectedStoreItemId] = useState( + null + ); + const [selectedWellId, setSelectedWellId] = useState(null); + const [showInfo, setShowInfo] = useState(false); + + // Check if claimable every second + useEffect(() => { + const updatedActiveStakes = props.stakingSource.activeStakes.map( + (stake) => { + const remainingTime = calculateRemainingTime( + stake.startTime, + stake.durationInMins + ); + + const obj = { + ...stake, + remainingTime: remainingTime, + }; + + return obj; + } + ); + + const intervalId = setInterval(() => { + setActiveStakes(updatedActiveStakes); + }, 1000); + + return () => { + clearInterval(intervalId); + }; + }); + + const handleStartMining = () => { + if (selectedItemId && selectedWellId && selectedStoreItemId) { + props.startStake(selectedItemId, selectedStoreItemId, selectedWellId); + } + }; + + const handleClaim = (stakingEventId: number) => { + props.claimStake(stakingEventId); + }; + + const handleSelectChange = ( + wellId: string, + itemId: number, + storeitemId: string + ) => { + setSelectedWellId(Number(wellId)); + setSelectedStoreItemId(storeitemId); + setSelectedItemId(itemId); + }; + + const Countdown = (props: { remainingTime: number }) => { + const hours = Math.floor((props.remainingTime / (1000 * 60 * 60)) % 24) + .toString() + .padStart(2, "0"); + const minutes = Math.floor((props.remainingTime / (1000 * 60)) % 60) + .toString() + .padStart(2, "0"); + const seconds = Math.floor((props.remainingTime / 1000) % 60) + .toString() + .padStart(2, "0"); + return ( + + {hours} : {minutes} : {seconds} + + ); + }; + + const RenderButtonOrCountdown = (props: { stake: IStake }) => { + if (!props.stake.remainingTime) return

Error

; + + if (props.stake.remainingTime <= 0) { + return ( + + ); + } else { + return ; + } + }; + + const isActive = (item: IInventoryItem): boolean => { + return props.stakingSource.activeStakes.some( + (obj) => obj.inventoryItemId === item.id + ); + }; + + return ( +
+
+ Moon setShowInfo(!showInfo)} + className="hover:cursor-pointer" + /> + {showInfo && ( +
+
+
+
+ +

+ {props.stakingSource.name} +

+

{props.stakingSource.description}

+
+

Active Drills

+ {activeStakes && + activeStakes.map((stake, id) => ( +
+

+ Drill: + {props.inventoryItems && + getObjectFromArray( + props.inventoryItems, + "id", + stake.inventoryItemId + )?.storeItem.name} +

+

+ Resource: + {stake.resourceType} +

+

+ Yield: + {stake.stakeAmount} +

+ +
+ ))} +
+

Inactive Drills

+ {props.inventoryItems && + props.inventoryItems.map( + (item, id) => + !isActive(item) && ( +
+

{item.storeItem.name}

+

Select Resource

+
+ ({ + value: well.id, + label: well.resourceType, + }) + )} + onChange={(value) => + handleSelectChange( + value, + item.id, + item.storeItem.id + ) + } + isActive={selectedItemId === item.id} + /> + {selectedItemId === item.id ? ( + + ) : ( + <> + )} +
+
+ ) + )} +
+
+
+
+ )} +
+
+ ); +}; + +export default StakingSource; diff --git a/src/app/Components/StakingSourcesView.tsx b/src/app/Components/Staking/StakingSourcesView.tsx similarity index 97% rename from src/app/Components/StakingSourcesView.tsx rename to src/app/Components/Staking/StakingSourcesView.tsx index 0b148ed..d2c5336 100644 --- a/src/app/Components/StakingSourcesView.tsx +++ b/src/app/Components/Staking/StakingSourcesView.tsx @@ -43,7 +43,7 @@ const moons = [ interface RowProps { stakingSources: IStakingSource[]; - inventoryItems: IInventoryItem[]; + inventoryItems: IInventoryItem[] | undefined | null; claimStake: (stakingEventId: number) => void; startStake: ( inventoryItemId: number, @@ -59,7 +59,7 @@ const Row: React.FC = ({ startStake, }) => { return ( -
+
{stakingSources.map((stakingSource, index) => (
void; - startStake: ( - inventoryItemId: number, - storeItemId: string, - wellId: number - ) => void; -}) => { - const [activeStakes, setActiveStakes] = useState([]); - const [selectedItemId, setSelectedItemId] = useState(null); - const [selectedStoreItemId, setSelectedStoreItemId] = useState( - null - ); - const [selectedWellId, setSelectedWellId] = useState(null); - const [showInfo, setShowInfo] = useState(false); - - // Check if claimable every second - useEffect(() => { - const updatedActiveStakes = props.stakingSource.activeStakes.map( - (stake) => { - const remainingTime = calculateRemainingTime( - stake.startTime, - stake.durationInMins - ); - - const obj = { - ...stake, - remainingTime: remainingTime, - }; - - return obj; - } - ); - - const intervalId = setInterval(() => { - setActiveStakes(updatedActiveStakes); - }, 1000); - - return () => { - clearInterval(intervalId); - }; - }); - - const handleStartMining = () => { - if (selectedItemId && selectedWellId && selectedStoreItemId) { - props.startStake(selectedItemId, selectedStoreItemId, selectedWellId); - } - }; - - const handleClaim = (stakingEventId: number) => { - props.claimStake(stakingEventId); - }; - - const handleSelectChange = ( - wellId: string, - itemId: number, - storeitemId: string - ) => { - setSelectedWellId(Number(wellId)); - setSelectedStoreItemId(storeitemId); - setSelectedItemId(itemId); - }; - - const Countdown = (props: { remainingTime: number }) => { - const hours = Math.floor((props.remainingTime / (1000 * 60 * 60)) % 24) - .toString() - .padStart(2, "0"); - const minutes = Math.floor((props.remainingTime / (1000 * 60)) % 60) - .toString() - .padStart(2, "0"); - const seconds = Math.floor((props.remainingTime / 1000) % 60) - .toString() - .padStart(2, "0"); - return ( - - {hours} : {minutes} : {seconds} - - ); - }; - - const RenderButtonOrCountdown = (props: { stake: IStake }) => { - if (!props.stake.remainingTime) return

Error

; - - if (props.stake.remainingTime <= 0) { - return ( - - ); - } else { - return ( - // I'll fix it - - ); - } - }; - - const isActive = (item: IInventoryItem): boolean => { - return props.stakingSource.activeStakes.some( - (obj) => obj.inventoryItemId === item.id - ); - }; - - return ( -
-
- Moon setShowInfo(!showInfo)} - className="hover:cursor-pointer" - /> - {showInfo && ( -
-
- -

- {props.stakingSource.name} -

-

{props.stakingSource.description}

-
-

Active Drills

- {activeStakes && - activeStakes.map((stake, id) => ( -
-

- Drill: - {props.inventoryItems && - getObjectFromArray( - props.inventoryItems, - "id", - stake.inventoryItemId - )?.storeItem.name} -

-

- Resource: - {stake.resourceType} -

-

- Yield: - {stake.stakeAmount} -

- -
- ))} -
-

Inactive Drills

- {props.inventoryItems && - props.inventoryItems.map( - (item, id) => - !isActive(item) && ( -
-

{item.storeItem.name}

-

Select Resource

-
- ({ - value: well.id, - label: well.resourceType, - }) - )} - onChange={(value) => - handleSelectChange( - value, - item.id, - item.storeItem.id - ) - } - isActive={selectedItemId === item.id} - /> - {selectedItemId === item.id ? ( - - ) : ( - <> - )} -
-
- ) - )} -
-
- )} -
-
- ); -}; - -export default StakingSource; diff --git a/src/app/Components/StoreItem.tsx b/src/app/Components/Store/StoreItem.tsx similarity index 91% rename from src/app/Components/StoreItem.tsx rename to src/app/Components/Store/StoreItem.tsx index 7f9a002..6a6b363 100644 --- a/src/app/Components/StoreItem.tsx +++ b/src/app/Components/Store/StoreItem.tsx @@ -1,7 +1,7 @@ "use client"; -import React, { useState } from "react"; +import React from "react"; import { IStoreItem } from "typings"; -import CardLayout from "../Layouts/CardLayout"; +import CardLayout from "../../Layouts/CardLayout"; import Image from "next/image"; const StoreItem = (props: { @@ -10,7 +10,7 @@ const StoreItem = (props: { }) => { return ( -
+

{props.storeItem.name}

{props.storeItem.description}

@@ -42,7 +42,7 @@ const StoreItem = (props: { src={props.storeItem.image} alt={props.storeItem.name} fill - className="rounded-lg border border-white/20 shadow-lg object-contain" + className="rounded-lg border border-white/20 shadow-lg object-contain mt-4 md:mt-0" />
diff --git a/src/app/Components/Store/StoreItemView.tsx b/src/app/Components/Store/StoreItemView.tsx new file mode 100644 index 0000000..040ab42 --- /dev/null +++ b/src/app/Components/Store/StoreItemView.tsx @@ -0,0 +1,32 @@ +import React from "react"; +import { IInventoryItem, IStoreItem } from "typings"; +import StoreItem from "./StoreItem"; + +const StoreItemView = (props: { + inventoryItems: IInventoryItem[] | null | undefined; + storeItems: IStoreItem[]; + buyStoreItem: (itemId: string) => void; +}) => { + return ( +
+
+

Store

+
+ {props.storeItems && + props.storeItems.length > 0 && + props.storeItems + .filter((item) => !item.isOwned) + .map((storeItem, id) => ( + + ))} +
+
+
+ ); +}; + +export default StoreItemView; diff --git a/src/app/Components/StoreItemView.tsx b/src/app/Components/StoreItemView.tsx deleted file mode 100644 index b01b4de..0000000 --- a/src/app/Components/StoreItemView.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import React, { useState } from "react"; -import { IInventoryItem, IStakingSource, IStoreItem } from "typings"; -import StoreItem from "./StoreItem"; - -const StoreItemView = (props: { - inventoryItems: IInventoryItem[] | null | undefined; - storeItems: IStoreItem[]; - buyStoreItem: (itemId: string) => void; -}) => { - return ( -
-

Store

-
- {props.storeItems && - props.storeItems.length > 0 && - props.storeItems - .filter((item) => !item.isOwned) - .map((storeItem, id) => ( - - ))} -
-
- ); -}; - -export default StoreItemView; diff --git a/src/app/page.tsx b/src/app/page.tsx index 5604130..1c270b7 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,10 +1,10 @@ "use client"; import { useState, useEffect } from "react"; -import InventoryItemView from "./Components/InventoryItemView"; -import StakingSourcesView from "./Components/StakingSourcesView"; -import BankAccountsView from "./Components/BankAccountsView"; -import StoreItemView from "./Components/StoreItemView"; -import ResourceStore from "./Components/ResourceStore"; +import InventoryItemView from "./Components/Inventory/InventoryItemView"; +import StakingSourcesView from "./Components/Staking/StakingSourcesView"; +import BankAccountsView from "./Components/Accounts/AccountsView"; +import StoreItemView from "./Components/Store/StoreItemView"; +import ResourceStore from "./Components/Accounts/Old/ResourceStore"; import NotificationPopover from "./Components/NotificationPopover"; import { gameConfig } from "@/utils/gameLogic"; import { @@ -12,10 +12,11 @@ import { IStakingSource, IBankAccount, IStake, + IConversionPair, Notification, } from "typings"; -import Navbar from "./Components/Navbar"; -import NavbarVertical from "./Components/NavbarVertical"; +import Navbar from "./Components/Navigation/Navbar"; +import NavbarVertical from "./Components/Navigation/NavbarVertical"; export default function Home() { const [inventoryItems, setInventoryItems] = useState< @@ -170,13 +171,14 @@ export default function Home() { } }; - // Which object is it? - const sellResource = async (obj: any) => { + // TODO Joe create sql + const sellResource = async (pairs: IConversionPair[]) => { + console.log("Selling resource"); const response = await fetch(`/api/user/${userId}/bank-account`, { method: "PUT", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ - obj: obj, + pairs: pairs, }), }); return await response.json(); @@ -261,7 +263,6 @@ export default function Home() { }; const createStakingSource = async () => { - console.log("Minting..."); try { const response = await fetch(`/api/user/${userId}/staking-sources`, { method: "POST", @@ -315,7 +316,6 @@ export default function Home() { return

Loading...

; } - //console.log(stakingSources); return ( <> @@ -325,11 +325,8 @@ export default function Home() { onClose={handleCloseNotification} /> )} - -
+ +
)} - {activeComponent === "resourcestore" && ( - - )}
); diff --git a/src/pages/api/user/[userId]/bank-account.ts b/src/pages/api/user/[userId]/bank-account.ts index 18f4b78..369236e 100644 --- a/src/pages/api/user/[userId]/bank-account.ts +++ b/src/pages/api/user/[userId]/bank-account.ts @@ -19,14 +19,6 @@ export default async function handler( const result = await db.query("SELECT * FROM get_accounts($1)", [userId]); if (result.rowCount > 0) { - - // Make the result to the type - /* const updatedResult: IBankAccount = { - id: result.rows[0].id, - primaryBalance: result.rows[0].primarybalance, - resourceAccounts: result.rows[0].resourceaccounts - } */ - return res.status(200).json(result.rows[0]); } else { return res.status(400).json({error: "Could not find accounts for user"}); @@ -37,9 +29,9 @@ export default async function handler( // sell resource // payload userId, key:resourceName/value:amount const { userId } = req.query; - const { obj } = req.body; - // make sure they have each resource they say they have - // calculate conversion rates + // an array of IConversionPairs + const { pairs } = req.body; + // check they have appropriate amount of each resource // increment balance // decrement resources }