Skip to content

Commit 977ff7e

Browse files
myxamediyarclaude
andcommitted
fix(higgsfield): parse numeric block inputs with the shared parser
Use parseOptionalNumberInput so whitespace-only values are treated as empty instead of 0, and enforce the documented integer and range limits. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 98fb040 commit 977ff7e

1 file changed

Lines changed: 27 additions & 14 deletions

File tree

‎apps/sim/blocks/blocks/higgsfield.ts‎

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { HiggsfieldIcon } from '@/components/icons'
22
import { AuthMode, type BlockConfig, type BlockMeta, IntegrationType } from '@/blocks/types'
3+
import { parseOptionalNumberInput } from '@/blocks/utils'
34

45
const GENERATE_OPERATIONS = ['higgsfield_generate', 'higgsfield_generate_soul_image']
56
const REQUEST_OPERATIONS = [
@@ -10,13 +11,6 @@ const REQUEST_OPERATIONS = [
1011
const CHARACTER_ID_OPERATIONS = ['higgsfield_get_character', 'higgsfield_delete_character']
1112
const SOUL = 'higgsfield_generate_soul_image'
1213

13-
function optionalNumber(value: unknown): number | undefined {
14-
if (value === undefined || value === null || value === '') return undefined
15-
const parsed = Number(value)
16-
if (!Number.isFinite(parsed)) throw new Error(`Expected a number but received "${value}"`)
17-
return parsed
18-
}
19-
2014
export const HiggsfieldBlock: BlockConfig = {
2115
type: 'higgsfield',
2216
name: 'Higgsfield',
@@ -322,13 +316,32 @@ export const HiggsfieldBlock: BlockConfig = {
322316
tool: (params) => params.operation,
323317
params: (params) => ({
324318
...params,
325-
batchSize: optionalNumber(params.batchSize),
326-
characterStrength: optionalNumber(params.characterStrength),
327-
styleStrength: optionalNumber(params.styleStrength),
328-
seed: optionalNumber(params.seed),
329-
expiresAfter: optionalNumber(params.expiresAfter),
330-
page: optionalNumber(params.page),
331-
pageSize: optionalNumber(params.pageSize),
319+
batchSize: parseOptionalNumberInput(params.batchSize, 'Number of Images', {
320+
integer: true,
321+
}),
322+
characterStrength: parseOptionalNumberInput(
323+
params.characterStrength,
324+
'Character Strength',
325+
{
326+
min: 0,
327+
max: 1,
328+
}
329+
),
330+
styleStrength: parseOptionalNumberInput(params.styleStrength, 'Style Strength', {
331+
min: 0,
332+
max: 1,
333+
}),
334+
seed: parseOptionalNumberInput(params.seed, 'Seed', {
335+
integer: true,
336+
min: 1,
337+
max: 1000000,
338+
}),
339+
expiresAfter: parseOptionalNumberInput(params.expiresAfter, 'Keep Data For', {
340+
integer: true,
341+
min: 3600,
342+
}),
343+
page: parseOptionalNumberInput(params.page, 'Page', { integer: true, min: 1 }),
344+
pageSize: parseOptionalNumberInput(params.pageSize, 'Page Size', { integer: true, min: 1 }),
332345
}),
333346
},
334347
},

0 commit comments

Comments
 (0)