fix(image-studio): add asset library saving + 402 subscription error handling

Backend:
- New POST /api/image-studio/save-to-library endpoint
  Saves generated base64 images to workspace disk and creates ContentAsset
  record for the unified asset library. Returns asset_id, file_url, filename.

Frontend:
- Added saveImageToLibrary() to useImageStudio hook
- CreateStudio auto-saves generated images to asset library after creation
- All 8 API operations now use _formatErrorMessage() helper
  for 402/429 subscription limit errors with upgrade prompts
  instead of generic error messages
This commit is contained in:
ajaysi
2026-05-09 16:57:26 +05:30
parent 4fdc7d3ea0
commit 93a1985d9f
4 changed files with 172 additions and 8 deletions

View File

@@ -191,6 +191,7 @@ export const CreateStudio: React.FC<CreateStudioProps> = ({ onImageGenerated })
estimateCost,
loadTemplates,
loadProviders,
saveImageToLibrary,
} = useImageStudio();
// Load meta data on mount
@@ -317,6 +318,23 @@ export const CreateStudio: React.FC<CreateStudioProps> = ({ onImageGenerated })
seed: providerForAdvanced ? parsedSeed : undefined,
});
// Auto-save generated images to asset library
if (result?.results?.length) {
const resolvedProvider = result.request?.provider || provider;
const resolvedModel = result.request?.model || effectiveModel;
for (const imgResult of result.results) {
if (imgResult.image_base64) {
saveImageToLibrary({
imageBase64: imgResult.image_base64,
prompt,
provider: resolvedProvider,
model: resolvedModel,
operation: 'image-generation',
}).catch((e) => console.warn('Asset library save skipped:', e.message || e));
}
}
}
if (onImageGenerated && (result?.results?.length ?? 0) > 0) {
onImageGenerated(result);
}