From 2c5e1a151df8a7cac5b00139feb4f1b9b1ce05db Mon Sep 17 00:00:00 2001 From: Mary Hipp Date: Mon, 19 Aug 2024 15:25:30 -0400 Subject: [PATCH 1/2] fix(api): allow updating of type for style preset --- invokeai/app/api/routers/style_presets.py | 12 +++++------- .../style_preset_records_common.py | 1 + 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/invokeai/app/api/routers/style_presets.py b/invokeai/app/api/routers/style_presets.py index 0f4967cc63b..dadd89debb3 100644 --- a/invokeai/app/api/routers/style_presets.py +++ b/invokeai/app/api/routers/style_presets.py @@ -26,13 +26,10 @@ ) -class StylePresetUpdateFormData(BaseModel): +class StylePresetFormData(BaseModel): name: str = Field(description="Preset name") positive_prompt: str = Field(description="Positive prompt") negative_prompt: str = Field(description="Negative prompt") - - -class StylePresetCreateFormData(StylePresetUpdateFormData): type: PresetType = Field(description="Preset type") @@ -95,9 +92,10 @@ async def update_style_preset( try: parsed_data = json.loads(data) - validated_data = StylePresetUpdateFormData(**parsed_data) + validated_data = StylePresetFormData(**parsed_data) name = validated_data.name + type = validated_data.type positive_prompt = validated_data.positive_prompt negative_prompt = validated_data.negative_prompt @@ -105,7 +103,7 @@ async def update_style_preset( raise HTTPException(status_code=400, detail="Invalid preset data") preset_data = PresetData(positive_prompt=positive_prompt, negative_prompt=negative_prompt) - changes = StylePresetChanges(name=name, preset_data=preset_data) + changes = StylePresetChanges(name=name, preset_data=preset_data, type=type) style_preset_image = ApiDependencies.invoker.services.style_preset_image_files.get_url(style_preset_id) style_preset = ApiDependencies.invoker.services.style_preset_records.update( @@ -145,7 +143,7 @@ async def create_style_preset( try: parsed_data = json.loads(data) - validated_data = StylePresetCreateFormData(**parsed_data) + validated_data = StylePresetFormData(**parsed_data) name = validated_data.name type = validated_data.type diff --git a/invokeai/app/services/style_preset_records/style_preset_records_common.py b/invokeai/app/services/style_preset_records/style_preset_records_common.py index 0391b690ccb..36153d002d0 100644 --- a/invokeai/app/services/style_preset_records/style_preset_records_common.py +++ b/invokeai/app/services/style_preset_records/style_preset_records_common.py @@ -32,6 +32,7 @@ class PresetType(str, Enum, metaclass=MetaEnum): class StylePresetChanges(BaseModel, extra="forbid"): name: Optional[str] = Field(default=None, description="The style preset's new name.") preset_data: Optional[PresetData] = Field(default=None, description="The updated data for style preset.") + type: Optional[PresetType] = Field(description="The updated type of the style preset") class StylePresetWithoutId(BaseModel): From 48e5e7b2be9e7bc7158ef5372808efe0b0dec29b Mon Sep 17 00:00:00 2001 From: Mary Hipp Date: Mon, 19 Aug 2024 15:26:02 -0400 Subject: [PATCH 2/2] fix(ui): properly unwrap delete style preset API request so that error is caught --- .../features/stylePresets/components/StylePresetListItem.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/invokeai/frontend/web/src/features/stylePresets/components/StylePresetListItem.tsx b/invokeai/frontend/web/src/features/stylePresets/components/StylePresetListItem.tsx index 14b318f98b0..1bad3bdca3b 100644 --- a/invokeai/frontend/web/src/features/stylePresets/components/StylePresetListItem.tsx +++ b/invokeai/frontend/web/src/features/stylePresets/components/StylePresetListItem.tsx @@ -77,7 +77,7 @@ export const StylePresetListItem = ({ preset }: { preset: StylePresetRecordWithI const handleDeletePreset = useCallback(async () => { try { - await deleteStylePreset(preset.id); + await deleteStylePreset(preset.id).unwrap(); toast({ status: 'success', title: t('stylePresets.templateDeleted'),