Skip to content

Commit 13bf5fe

Browse files
Fix(UI): Error message for extract region (#8759)
## Summary This PR fixes misleading popup message "Canvas is empty" when attempting to extract region with empty mask layer. Replaced with correct message "Mask layer is empty". Also redirected few other popups to use translation file. ## Checklist - [x] _The PR has a short but descriptive title, suitable for a changelog_ - [ ] _Tests added / updated (if applicable)_ - [ ] _❗Changes to a redux slice have a corresponding migration_ - [ ] _Documentation added / updated (if applicable)_ - [ ] _Updated `What's New` copy (if doing a release after this PR)_
2 parents 04f8156 + 53ab178 commit 13bf5fe

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

invokeai/frontend/web/public/locales/en.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2185,6 +2185,9 @@
21852185
"showHUD": "Show HUD",
21862186
"rectangle": "Rectangle",
21872187
"maskFill": "Mask Fill",
2188+
"maskLayerEmpty": "Mask layer is empty",
2189+
"extractMaskedAreaFailed": "Unable to extract masked area.",
2190+
"extractMaskedAreaMissingData": "Cannot extract: image or mask data is missing.",
21882191
"addPositivePrompt": "Add $t(controlLayers.prompt)",
21892192
"addNegativePrompt": "Add $t(controlLayers.negativePrompt)",
21902193
"addReferenceImage": "Add $t(controlLayers.referenceImage)",

invokeai/frontend/web/src/features/controlLayers/components/InpaintMask/InpaintMaskMenuItemsExtractMaskedArea.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export const InpaintMaskMenuItemsExtractMaskedArea = memo(() => {
2727
const maskAdapter = canvasManager.getAdapter(entityIdentifier);
2828
if (!maskAdapter) {
2929
log.error({ entityIdentifier }, 'Inpaint mask adapter not found when extracting masked area');
30-
toast({ status: 'error', title: 'Unable to extract masked area.' });
30+
toast({ status: 'error', title: t('controlLayers.extractMaskedAreaFailed') });
3131
return;
3232
}
3333

@@ -44,7 +44,7 @@ export const InpaintMaskMenuItemsExtractMaskedArea = memo(() => {
4444

4545
// Abort when the canvas is effectively empty—no pixels to extract.
4646
if (rect.width <= 0 || rect.height <= 0) {
47-
toast({ status: 'warning', title: 'Canvas is empty.' });
47+
toast({ status: 'warning', title: t('controlLayers.maskLayerEmpty') });
4848
return;
4949
}
5050

@@ -74,15 +74,15 @@ export const InpaintMaskMenuItemsExtractMaskedArea = memo(() => {
7474
},
7575
'Mask and composite dimensions did not match when extracting masked area'
7676
);
77-
toast({ status: 'error', title: 'Unable to extract masked area.' });
77+
toast({ status: 'error', title: t('controlLayers.extractMaskedAreaFailed') });
7878
return;
7979
}
8080

8181
const compositeArray = compositeImageData.data;
8282
const maskArray = maskImageData.data;
8383

8484
if (!compositeArray || !maskArray) {
85-
toast({ status: 'error', title: 'Cannot extract: image or mask data is missing.' });
85+
toast({ status: 'error', title: t('controlLayers.extractMaskedAreaMissingData') });
8686
return;
8787
}
8888

@@ -137,10 +137,10 @@ export const InpaintMaskMenuItemsExtractMaskedArea = memo(() => {
137137
});
138138
} catch (error) {
139139
log.error({ error: serializeError(error as Error) }, 'Failed to extract masked area to raster layer');
140-
toast({ status: 'error', title: 'Unable to extract masked area.' });
140+
toast({ status: 'error', title: t('controlLayers.extractMaskedAreaFailed') });
141141
}
142142
})();
143-
}, [canvasManager, entityIdentifier]);
143+
}, [canvasManager, entityIdentifier, t]);
144144

145145
return (
146146
<MenuItem onClick={onExtract} icon={<PiSelectionBackgroundBold />} isDisabled={isBusy}>

0 commit comments

Comments
 (0)