@@ -260,21 +260,14 @@ const TaskForm: FC<TaskFormProps> = ({ templates, onSuccess }) => {
260
260
261
261
// Handle preset data changes
262
262
useEffect ( ( ) => {
263
- if ( presetsData !== undefined ) {
264
- setPresets ( presetsData ) ;
265
- // Reset selected preset when changing templates or when no presets available
266
- if ( presetsData === null || presetsData . length === 0 ) {
267
- setSelectedPresetId ( null ) ;
268
- } else {
269
- // Set default preset if available
270
- const defaultPreset = presetsData . find ( ( p :Preset ) => p . Default ) ;
271
- if ( defaultPreset ) {
272
- setSelectedPresetId ( defaultPreset . ID ) ;
273
- } else {
274
- setSelectedPresetId ( null ) ;
275
- }
276
- }
263
+ if ( ! presetsData ) {
264
+ setPresets ( null ) ;
265
+ return ;
277
266
}
267
+ setPresets ( presetsData ) ;
268
+ const defaultPreset = presetsData . find ( ( p :Preset ) => p . Default ) ;
269
+ const defaultPresetID = defaultPreset ?. ID || null ;
270
+ setSelectedPresetId ( defaultPresetID ) ;
278
271
} , [ presetsData ] ) ;
279
272
const missedExternalAuth = externalAuth ?. filter (
280
273
( auth ) => ! auth . optional && ! auth . authenticated ,
@@ -402,21 +395,13 @@ const TaskForm: FC<TaskFormProps> = ({ templates, onSuccess }) => {
402
395
< SelectValue placeholder = "Select a preset" />
403
396
</ SelectTrigger >
404
397
< SelectContent >
405
- { presets
406
- . sort ( ( a , b ) => {
407
- // Default preset should come first
408
- if ( a . Default && ! b . Default ) return - 1 ;
409
- if ( ! a . Default && b . Default ) return 1 ;
410
- // Otherwise, sort alphabetically by name
411
- return a . Name . localeCompare ( b . Name ) ;
412
- } )
413
- . map ( ( preset ) => (
414
- < SelectItem value = { preset . ID } key = { preset . ID } >
415
- < span className = "overflow-hidden text-ellipsis block" >
416
- { preset . Name } { preset . Default && "(Default)" }
417
- </ span >
418
- </ SelectItem >
419
- ) ) }
398
+ { sortedPresets ( presets ) . map ( ( preset ) => (
399
+ < SelectItem value = { preset . ID } key = { preset . ID } >
400
+ < span className = "overflow-hidden text-ellipsis block" >
401
+ { preset . Name } { preset . Default && "(Default)" }
402
+ </ span >
403
+ </ SelectItem >
404
+ ) ) }
420
405
</ SelectContent >
421
406
</ Select >
422
407
</ div >
@@ -740,4 +725,16 @@ export const data = {
740
725
} ,
741
726
} ;
742
727
728
+ // sortedPresets sorts presets with the default preset first,
729
+ // followed by the rest sorted alphabetically by name ascending.
730
+ const sortedPresets = ( presets :Preset [ ] ) :Preset [ ] => {
731
+ return presets . sort ( ( a , b ) => {
732
+ // Default preset should come first
733
+ if ( a . Default && ! b . Default ) return - 1 ;
734
+ if ( ! a . Default && b . Default ) return 1 ;
735
+ // Otherwise, sort alphabetically by name
736
+ return a . Name . localeCompare ( b . Name ) ;
737
+ } ) ;
738
+ } ;
739
+
743
740
export default TasksPage ;