Skip to content

Commit 2592714

Browse files
committed
fix: remove console log and enhance BuyFractionalOrderForm logic
- Removed unnecessary console log from ReadMore component. - Updated BuyFractionalOrderForm to correctly calculate available units using fraction data. - Added error handling for invalid unit amounts during form submission.
1 parent 9486997 commit 2592714

2 files changed

Lines changed: 19 additions & 3 deletions

File tree

components/marketplace/buy-fractional-order-form.tsx

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import {
2424
getPricePerUnit,
2525
} from "@/marketplace/utils";
2626
import { zodResolver } from "@hookform/resolvers/zod";
27+
import { parseClaimOrFractionId } from "@hypercerts-org/sdk";
2728
import { useForm } from "react-hook-form";
2829
import { parseUnits } from "viem";
2930
import z from "zod";
@@ -80,7 +81,14 @@ export const BuyFractionalOrderForm = ({
8081
const { minUnitAmount, maxUnitAmount, minUnitsToKeep } =
8182
decodeFractionalOrderParams(order.additionalParameters);
8283

83-
const availableUnits = BigInt(hypercert?.units || 0) - BigInt(minUnitsToKeep);
84+
const fractionTokenId = BigInt(order.itemIds[0]);
85+
const fraction = hypercert.fractions?.data?.find(
86+
(fraction) =>
87+
parseClaimOrFractionId(fraction.fraction_id || "").id === fractionTokenId,
88+
);
89+
const fractionUnits = BigInt(fraction?.units || 0);
90+
91+
const availableUnits = fractionUnits - BigInt(minUnitsToKeep);
8492
const maxUnitAmountToBuy =
8593
availableUnits > maxUnitAmount ? maxUnitAmount : availableUnits;
8694

@@ -124,6 +132,7 @@ export const BuyFractionalOrderForm = ({
124132
const form = useForm<BuyFractionalOrderFormValues>({
125133
resolver: zodResolver(formSchema),
126134
reValidateMode: "onChange",
135+
mode: "onChange",
127136
defaultValues: {
128137
minPercentageAmount,
129138
maxPercentageAmount,
@@ -143,6 +152,15 @@ export const BuyFractionalOrderForm = ({
143152
}
144153

145154
const unitAmount = getUnitsToBuy(values.percentageAmount);
155+
156+
if (unitAmount === BigInt(0)) {
157+
throw new Error("Invalid unit amount");
158+
}
159+
160+
if (unitAmount > hypercertUnits) {
161+
throw new Error("Unit amount is greater than hypercert units");
162+
}
163+
146164
const pricePerUnit = getPricePerUnit(
147165
values.pricePerPercent,
148166
hypercertUnits,

components/read-more.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ export default function ReadMore({
1919
}) {
2020
const [isOpen, setIsOpen] = useState(false);
2121

22-
console.log(text);
23-
2422
if (!text) {
2523
return null;
2624
}

0 commit comments

Comments
 (0)