diff --git a/frontend/libs/api-enums/src/lib/common/generation/CommonQuality.ts b/frontend/libs/api-enums/src/lib/common/generation/CommonQuality.ts new file mode 100644 index 0000000000..5e35935d44 --- /dev/null +++ b/frontend/libs/api-enums/src/lib/common/generation/CommonQuality.ts @@ -0,0 +1,9 @@ + +// NOTE: These are defined in Rust (as the source of truth) and duplicated in the frontend. +// In the future, we should use code gen (protobufs or similar) to keep the two sides in sync. + +export enum CommonQuality { + High = "high", + Medium = "medium", + Low = "low", +} diff --git a/frontend/libs/api-enums/src/lib/common/generation/index.ts b/frontend/libs/api-enums/src/lib/common/generation/index.ts index 4a3922ff64..199355876a 100644 --- a/frontend/libs/api-enums/src/lib/common/generation/index.ts +++ b/frontend/libs/api-enums/src/lib/common/generation/index.ts @@ -1,6 +1,7 @@ export * from "./CommonImageModel.js"; export * from "./CommonVideoModel.js"; export * from "./CommonAspectRatio.js"; +export * from "./CommonQuality.js"; export * from "./CommonVideoResolution.js"; export * from "./GenerationMode.js"; export * from "./ImageGenerationMode.js"; diff --git a/frontend/libs/components/pricing-modal/src/lib/convert/imageQualityToCommonQuality.ts b/frontend/libs/components/pricing-modal/src/lib/convert/imageQualityToCommonQuality.ts new file mode 100644 index 0000000000..5ba9c2304f --- /dev/null +++ b/frontend/libs/components/pricing-modal/src/lib/convert/imageQualityToCommonQuality.ts @@ -0,0 +1,21 @@ +import { CommonQuality } from "@storyteller/api-enums"; + +/** + * Convert a quality value to CommonQuality for the image cost estimate API. + * + * Accepts a CommonQuality string value from @storyteller/model-list ("high", "medium", "low"). + */ +export function imageQualityToCommonQuality( + quality: string | undefined, +): CommonQuality | null { + switch (quality) { + case "high": + return CommonQuality.High; + case "medium": + return CommonQuality.Medium; + case "low": + return CommonQuality.Low; + default: + return null; + } +} diff --git a/frontend/libs/components/pricing-modal/src/lib/convert/index.ts b/frontend/libs/components/pricing-modal/src/lib/convert/index.ts index ee778ad453..d631aaf06c 100644 --- a/frontend/libs/components/pricing-modal/src/lib/convert/index.ts +++ b/frontend/libs/components/pricing-modal/src/lib/convert/index.ts @@ -3,5 +3,6 @@ export * from "./videoAspectRatioToCommonAspectRatio.js"; export * from "./videoStoreToGenerationMode.js"; export * from "./imageModelToCommonImageModel.js"; export * from "./imageAspectRatioToCommonAspectRatio.js"; +export * from "./imageQualityToCommonQuality.js"; export * from "./imageResolutionToCommonVideoResolution.js"; export * from "./imageStoreToGenerationMode.js"; diff --git a/frontend/libs/components/pricing-modal/src/lib/useImageCostEstimate.ts b/frontend/libs/components/pricing-modal/src/lib/useImageCostEstimate.ts index 23f055d412..b8d3cbb477 100644 --- a/frontend/libs/components/pricing-modal/src/lib/useImageCostEstimate.ts +++ b/frontend/libs/components/pricing-modal/src/lib/useImageCostEstimate.ts @@ -16,6 +16,7 @@ import { useCostBreakdownModalStore } from "./cost-breakdown-modal-store"; import { imageModelToCommonImageModel, imageAspectRatioToCommonAspectRatio, + imageQualityToCommonQuality, imageResolutionToCommonVideoResolution, } from "./convert/index.js"; @@ -117,6 +118,7 @@ export function useImageCostEstimate( ); const commonResolution = imageResolutionToCommonVideoResolution(resolutionStr); + const commonQuality = imageQualityToCommonQuality(qualityStr); const generationMode = referenceImageCount > 0 ? { type: "image_edit" as const, count: referenceImageCount } @@ -134,7 +136,7 @@ export function useImageCostEstimate( generation_mode: generationMode, aspect_ratio: commonAspectRatio ?? undefined, resolution: commonResolution ?? undefined, - quality: qualityStr ?? undefined, + quality: commonQuality ?? undefined, }) .then((result) => { if (isEstimateImageCostSuccess(result)) { diff --git a/frontend/libs/tauri-api/src/lib/cost_estimate/EstimateImageCost.ts b/frontend/libs/tauri-api/src/lib/cost_estimate/EstimateImageCost.ts index 2a3468a96a..d3c897694e 100644 --- a/frontend/libs/tauri-api/src/lib/cost_estimate/EstimateImageCost.ts +++ b/frontend/libs/tauri-api/src/lib/cost_estimate/EstimateImageCost.ts @@ -3,6 +3,7 @@ import { CommandResult, CommandSuccessStatus } from "../common/CommandStatus"; import { CommonImageModel, CommonAspectRatio, + CommonQuality, CommonVideoResolution, ImageGenerationMode, GenerationProvider, @@ -14,7 +15,7 @@ export interface EstimateImageCostRequest { generation_mode: ImageGenerationMode; aspect_ratio?: CommonAspectRatio; resolution?: CommonVideoResolution; - quality?: string; + quality?: CommonQuality; image_batch_count?: number; }