@@ -5,7 +5,7 @@ import { useAppTranslation } from "@/i18n/TranslationContext"
55import { formatPrice } from "@/utils/formatPrice"
66import { cn } from "@/lib/utils"
77
8- import { ModelInfo , geminiModels } from "../../../../src/shared/api"
8+ import { ModelInfo , geminiModels , ApiConfiguration } from "../../../../src/shared/api" // Added ApiConfiguration import
99
1010import { ModelDescriptionMarkdown } from "./ModelDescriptionMarkdown"
1111
@@ -14,16 +14,20 @@ type ModelInfoViewProps = {
1414 modelInfo : ModelInfo
1515 isDescriptionExpanded : boolean
1616 setIsDescriptionExpanded : ( isExpanded : boolean ) => void
17+ apiConfiguration ?: ApiConfiguration // Added optional apiConfiguration prop
1718}
1819
1920export const ModelInfoView = ( {
2021 selectedModelId,
2122 modelInfo,
2223 isDescriptionExpanded,
2324 setIsDescriptionExpanded,
25+ apiConfiguration, // Destructure the new prop
2426} : ModelInfoViewProps ) => {
2527 const { t } = useAppTranslation ( )
2628 const isGemini = useMemo ( ( ) => Object . keys ( geminiModels ) . includes ( selectedModelId ) , [ selectedModelId ] )
29+ // Determine if Gemini free tier is active
30+ const isGeminiFreeTier = apiConfiguration ?. apiProvider === "gemini" && apiConfiguration ?. geminiFreeTier === true
2731
2832 const infoItems = [
2933 < ModelInfoSupportsItem
@@ -49,16 +53,18 @@ export const ModelInfoView = ({
4953 { modelInfo . maxTokens ?. toLocaleString ( ) } tokens
5054 </ >
5155 ) ,
52- modelInfo . inputPrice !== undefined && modelInfo . inputPrice > 0 && (
56+ // Display input price (show $0 if free tier is active)
57+ modelInfo . inputPrice !== undefined && (
5358 < >
5459 < span className = "font-medium" > { t ( "settings:modelInfo.inputPrice" ) } :</ span > { " " }
55- { formatPrice ( modelInfo . inputPrice ) } / 1M tokens
60+ { formatPrice ( isGeminiFreeTier ? 0 : modelInfo . inputPrice ) } / 1M tokens
5661 </ >
5762 ) ,
58- modelInfo . outputPrice !== undefined && modelInfo . outputPrice > 0 && (
63+ // Display output price (show $0 if free tier is active)
64+ modelInfo . outputPrice !== undefined && (
5965 < >
6066 < span className = "font-medium" > { t ( "settings:modelInfo.outputPrice" ) } :</ span > { " " }
61- { formatPrice ( modelInfo . outputPrice ) } / 1M tokens
67+ { formatPrice ( isGeminiFreeTier ? 0 : modelInfo . outputPrice ) } / 1M tokens
6268 </ >
6369 ) ,
6470 modelInfo . supportsPromptCache && modelInfo . cacheReadsPrice && (
0 commit comments