🐛 fix: Update minimum ratio value to 0 in protocol fields and adjust related schemas; enhance unit conversion in ServerConfig

This commit is contained in:
web 2025-09-28 08:48:17 -07:00
parent 3d778e5e36
commit 3b6ef177ba
4 changed files with 30 additions and 18 deletions

View File

@ -1,5 +1,6 @@
'use client';
import useGlobalStore from '@/config/use-global';
import { useNode } from '@/store/node';
import { zodResolver } from '@hookform/resolvers/zod';
import {
@ -78,6 +79,9 @@ export default function SubscribeForm<T extends Record<string, any>>({
trigger,
title,
}: Readonly<SubscribeFormProps<T>>) {
const { common } = useGlobalStore();
const { currency } = common;
const t = useTranslations('product');
const [open, setOpen] = useState(false);
const updateTimeoutRef = useRef<NodeJS.Timeout | null>(null);
@ -213,7 +217,11 @@ export default function SubscribeForm<T extends Record<string, any>>({
form?.reset(
assign(defaultValues, shake(initialValues, (value) => value === null) as Record<string, any>),
);
}, [form, initialValues]);
const discount = form.getValues('discount') || [];
if (discount.length > 0) {
debouncedCalculateDiscount(discount, 'discount');
}
}, [form, initialValues, open]);
useEffect(() => {
return () => {
@ -228,7 +236,7 @@ export default function SubscribeForm<T extends Record<string, any>>({
if (bool) setOpen(false);
}
const { nodes, getAllAvailableTags, getNodesByTag, getNodesWithoutTags } = useNode();
const { getAllAvailableTags, getNodesByTag, getNodesWithoutTags } = useNode();
const tagGroups = getAllAvailableTags();
@ -630,9 +638,9 @@ export default function SubscribeForm<T extends Record<string, any>>({
{
name: 'discount',
type: 'number',
min: 0.01,
min: 1,
max: 100,
step: 0.01,
step: 1,
placeholder: t('form.discountPercent'),
suffix: '%',
},
@ -642,6 +650,7 @@ export default function SubscribeForm<T extends Record<string, any>>({
type: 'number',
min: 0,
step: 0.01,
prefix: currency.currency_symbol,
formatInput: (value) => unitConversion('centsToDollars', value),
formatOutput: (value) =>
unitConversion('dollarsToCents', value).toString(),

View File

@ -27,7 +27,7 @@ export const PROTOCOL_FIELDS: Record<string, FieldConfig[]> = {
name: 'ratio',
type: 'number',
label: 'traffic_ratio',
min: 1,
min: 0,
step: 0.01,
defaultValue: 1,
group: 'basic',
@ -134,7 +134,7 @@ export const PROTOCOL_FIELDS: Record<string, FieldConfig[]> = {
name: 'ratio',
type: 'number',
label: 'traffic_ratio',
min: 1,
min: 0,
step: 0.01,
defaultValue: 1,
group: 'basic',
@ -242,7 +242,7 @@ export const PROTOCOL_FIELDS: Record<string, FieldConfig[]> = {
name: 'ratio',
type: 'number',
label: 'traffic_ratio',
min: 1,
min: 0,
step: 0.01,
defaultValue: 1,
group: 'basic',
@ -500,7 +500,7 @@ export const PROTOCOL_FIELDS: Record<string, FieldConfig[]> = {
name: 'ratio',
type: 'number',
label: 'traffic_ratio',
min: 1,
min: 0,
step: 0.01,
defaultValue: 1,
group: 'basic',
@ -608,7 +608,7 @@ export const PROTOCOL_FIELDS: Record<string, FieldConfig[]> = {
name: 'ratio',
type: 'number',
label: 'traffic_ratio',
min: 1,
min: 0,
step: 0.01,
defaultValue: 1,
group: 'basic',
@ -716,7 +716,7 @@ export const PROTOCOL_FIELDS: Record<string, FieldConfig[]> = {
name: 'ratio',
type: 'number',
label: 'traffic_ratio',
min: 1,
min: 0,
step: 0.01,
defaultValue: 1,
group: 'basic',
@ -789,7 +789,7 @@ export const PROTOCOL_FIELDS: Record<string, FieldConfig[]> = {
name: 'ratio',
type: 'number',
label: 'traffic_ratio',
min: 1,
min: 0,
step: 0.01,
defaultValue: 1,
group: 'basic',
@ -809,7 +809,7 @@ export const PROTOCOL_FIELDS: Record<string, FieldConfig[]> = {
name: 'ratio',
type: 'number',
label: 'traffic_ratio',
min: 1,
min: 0,
step: 0.01,
defaultValue: 1,
group: 'basic',
@ -886,7 +886,7 @@ export const PROTOCOL_FIELDS: Record<string, FieldConfig[]> = {
name: 'ratio',
type: 'number',
label: 'traffic_ratio',
min: 1,
min: 0,
step: 0.01,
defaultValue: 1,
group: 'basic',
@ -963,7 +963,7 @@ export const PROTOCOL_FIELDS: Record<string, FieldConfig[]> = {
name: 'ratio',
type: 'number',
label: 'traffic_ratio',
min: 1,
min: 0,
step: 0.01,
defaultValue: 1,
group: 'basic',
@ -999,7 +999,7 @@ export const PROTOCOL_FIELDS: Record<string, FieldConfig[]> = {
name: 'ratio',
type: 'number',
label: 'traffic_ratio',
min: 1,
min: 0,
step: 0.01,
defaultValue: 1,
group: 'basic',

View File

@ -17,7 +17,7 @@ import {
const nullableString = z.string().nullish();
const nullableBool = z.boolean().nullish();
const nullablePort = z.number().int().min(0).max(65535).nullish();
const nullableRatio = z.number().min(1).nullish();
const nullableRatio = z.number().min(0).nullish();
const ss = z.object({
ratio: nullableRatio,

View File

@ -35,6 +35,7 @@ import { Textarea } from '@workspace/ui/components/textarea';
import { ArrayInput } from '@workspace/ui/custom-components/dynamic-Inputs';
import { EnhancedInput } from '@workspace/ui/custom-components/enhanced-input';
import { Icon } from '@workspace/ui/custom-components/icon';
import { unitConversion } from '@workspace/ui/utils';
import { DicesIcon } from 'lucide-react';
import { useTranslations } from 'next-intl';
import { uid } from 'radash';
@ -275,8 +276,10 @@ export default function ServerConfig() {
type='number'
min={0}
suffix='MB'
value={field.value as any}
onValueChange={field.onChange}
value={unitConversion('bitsToMb', field.value as number | undefined)}
onValueChange={(value) => {
field.onChange(unitConversion('mbToBits', value));
}}
placeholder='1'
/>
</FormControl>