diff --git a/database.db b/database.db index 412457a..1b7db45 100644 Binary files a/database.db and b/database.db differ diff --git a/src/app/Components/BankAccountsView.tsx b/src/app/Components/BankAccountsView.tsx index 642832d..556bcb0 100644 --- a/src/app/Components/BankAccountsView.tsx +++ b/src/app/Components/BankAccountsView.tsx @@ -9,8 +9,8 @@ const BankAccountsView = (props: { }) => { return (
-
-
+
+
Moonbucks

$5,342.23

diff --git a/src/app/Components/ResourceAccount.tsx b/src/app/Components/ResourceAccount.tsx new file mode 100644 index 0000000..00d6260 --- /dev/null +++ b/src/app/Components/ResourceAccount.tsx @@ -0,0 +1,32 @@ +"use client"; +import React from "react"; +import { IResourceAccount } from "typings"; +import { resourceToBg, resourceToFc } from "../../utils/helpers"; + +const ResourceAccount = (props: { account: IResourceAccount }) => { + return ( +
+
+ + {props.account.resourceType} + +

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

+
+
+ ); +}; + +export default ResourceAccount; diff --git a/src/app/Components/ResourceStore.tsx b/src/app/Components/ResourceStore.tsx index d662c37..31d5ac4 100644 --- a/src/app/Components/ResourceStore.tsx +++ b/src/app/Components/ResourceStore.tsx @@ -1,61 +1,57 @@ import React, { useState, useEffect } from "react"; -import ResourceItem from "./ResourceItem"; import ResourceStoreItem from "./ResourceStoreItem"; import { sumValues } from "../../utils/helpers"; -import { - IBankAccount, - IConversionPair, - IClaimableResource, - IResourceType, -} from "typings"; +import { IBankAccount, IConversionPair } from "typings"; const ResourceStore = (props: { - bankAccounts: IBankAccount[]; + bankAccount: IBankAccount | undefined; setLightBoxIsActive: () => void; }) => { const [conversionRate, setConversionRate] = useState(0.1); - const [amount, setAmount] = useState([]); const [conversionPairs, setConversionPairs] = useState< IConversionPair[] | null >(null); useEffect(() => { - const pairs = amount.map((n) => ({ - resourceType: n.resourceType, - resourceAmount: n.balance, - moneyAmount: n.balance * conversionRate.valueOf(), - })); - setConversionPairs(pairs); - }, [amount]); + if (props.bankAccount) { + const pairs = props.bankAccount.resourceAccounts.map((resource) => ({ + resourceType: resource.resourceType, + resourceAmount: 0, + moneyAmount: 0, + })); + setConversionPairs(pairs); + } + }, []); const handleAmountChange = ( e: React.ChangeEvent, - resourceType: IResourceType + resourceType: string ) => { - const existingObj = amount.find( - (obj) => obj.resourceType.name === resourceType.name + if (!conversionPairs) return; + + const existingObj = conversionPairs.find( + (obj) => obj.resourceType === resourceType ); - if (existingObj) { - setAmount( - amount.map((obj) => - obj.resourceType.name === resourceType.name - ? { resourceType: resourceType, balance: Number(e.target.value) } - : obj - ) - ); - } else { - setAmount([ - ...amount, - { resourceType: resourceType, balance: Number(e.target.value) }, - ]); - } + const updatedPairs = conversionPairs.map((pair) => { + if (pair.resourceType === existingObj?.resourceType) { + return { + ...pair, + resourceAmount: Number(e.target.value), + moneyAmount: Number(e.target.value) * conversionRate.valueOf(), + }; + } else { + return pair; + } + }); + setConversionPairs(updatedPairs); }; - const getConversionPair = (name: string) => { - return conversionPairs?.find((obj) => obj.resourceType.name === name); + const getConversionPair = (resourceType: string) => { + return conversionPairs?.find((obj) => obj.resourceType === resourceType); }; + console.log(conversionPairs); return (

@@ -63,19 +59,20 @@ const ResourceStore = (props: {

- {props.bankAccounts.map((bankAccount) => ( -
-
- + {props.bankAccount && + props.bankAccount.resourceAccounts.map((resourceAccount) => ( +
+
+ +
-
- ))} + ))} {conversionPairs && (
@@ -92,13 +89,6 @@ const ResourceStore = (props: { } )}

- {/* */} diff --git a/src/app/Components/ResourceStoreItem.tsx b/src/app/Components/ResourceStoreItem.tsx index 946ac05..dbdebe5 100644 --- a/src/app/Components/ResourceStoreItem.tsx +++ b/src/app/Components/ResourceStoreItem.tsx @@ -1,33 +1,33 @@ "use client"; import React, { useEffect, useState } from "react"; -import { IBankAccount, IConversionPair } from "typings"; -import { IResourceType } from "typings"; +import { IResourceAccount, IConversionPair } from "typings"; +import { resourceToBg, resourceToFc } from "../../utils/helpers"; const ResourceStoreItem = (props: { - bankAccount: IBankAccount; + resourceAccount: IResourceAccount; conversionPair: IConversionPair | undefined; handleAmountChange: ( e: React.ChangeEvent, - resourceType: IResourceType + resourceType: string ) => void; }) => { return (
- {props.bankAccount.resourceType.name} + {props.resourceAccount.resourceType}

- {props.bankAccount.balance.toLocaleString("en-US", { + {props.resourceAccount.balance.toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 2, })}{" "} @@ -40,11 +40,11 @@ const ResourceStoreItem = (props: { - {props.conversionPair.resourceType.name} + {props.conversionPair.resourceType}

{props.conversionPair.resourceAmount.toLocaleString("en-US", { @@ -72,7 +72,7 @@ const ResourceStoreItem = (props: { @@ -96,7 +96,7 @@ const ResourceStoreItem = (props: { className="bg-white px-4 py-2 mr-4 rounded-lg flex-none" placeholder="0" onChange={(e) => - props.handleAmountChange(e, props.bankAccount.resourceType) + props.handleAmountChange(e, props.resourceAccount.resourceType) } />

diff --git a/src/app/page.tsx b/src/app/page.tsx index 2a5c0be..07060b0 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -198,6 +198,12 @@ export default function Home() { setLightBoxIsActive(!lightBoxIsActive); }; + const handleCloseError = () => { + setError(null); + }; + + if (!userId) return

Please login

; + return ( <> {lightBoxIsActive && ( )} diff --git a/typings.d.ts b/typings.d.ts index 672ba0e..19f13fd 100644 --- a/typings.d.ts +++ b/typings.d.ts @@ -3,11 +3,10 @@ export type User = { inventoryItems: IInventoryItem[]; }; -export interface IResourceType { - id: number; - name: string; - fontColorClass: string; - bgColorClass: string; +export interface TimeDuration { + hours: number; + minutes: number; + seconds: number; } export interface IResourceWell { @@ -54,7 +53,7 @@ export interface IClaimableResource { } export interface IConversionPair { - resourceType: IResourceType; + resourceType: string; resourceAmount: number; moneyAmount: number }