@@ -1748,6 +1748,7 @@ const HeliconePricingSection = ({
17481748 pricingConfig ?. heliconePricingMultiplier ?. toString ( ) || "1.0" ,
17491749 ) ;
17501750 const [ isSaving , setIsSaving ] = useState ( false ) ;
1751+ const [ confirmDialogOpen , setConfirmDialogOpen ] = useState ( false ) ;
17511752
17521753 const currentMultiplier = pricingConfig ?. heliconePricingMultiplier || 1.0 ;
17531754
@@ -1783,7 +1784,13 @@ const HeliconePricingSection = ({
17831784 setNotification ( "Multiplier must be between 0 and 2" , "error" ) ;
17841785 return ;
17851786 }
1787+ setConfirmDialogOpen ( true ) ;
1788+ } ;
1789+
1790+ const confirmSave = ( ) => {
1791+ const value = parseFloat ( multiplier ) ;
17861792 setIsSaving ( true ) ;
1793+ setConfirmDialogOpen ( false ) ;
17871794 updatePricingMutation . mutate ( value ) ;
17881795 } ;
17891796
@@ -1829,6 +1836,57 @@ const HeliconePricingSection = ({
18291836 : " (no discount)" }
18301837 </ Muted >
18311838 </ div >
1839+
1840+ < Dialog open = { confirmDialogOpen } onOpenChange = { setConfirmDialogOpen } >
1841+ < DialogContent >
1842+ < DialogHeader >
1843+ < DialogTitle > Confirm Pricing Change</ DialogTitle >
1844+ < DialogDescription >
1845+ Are you sure you want to update the pricing multiplier from{ " " }
1846+ < strong > { currentMultiplier } x</ strong > to{ " " }
1847+ < strong > { parseFloat ( multiplier ) } x</ strong > ?
1848+ { parseFloat ( multiplier ) < 1 && (
1849+ < >
1850+ { " " }
1851+ This will apply a{ " " }
1852+ < strong >
1853+ { ( ( 1 - parseFloat ( multiplier ) ) * 100 ) . toFixed ( 0 ) } % discount
1854+ </ strong > { " " }
1855+ to all Helicone inference costs for this organization.
1856+ </ >
1857+ ) }
1858+ { parseFloat ( multiplier ) > 1 && (
1859+ < >
1860+ { " " }
1861+ This will apply a{ " " }
1862+ < strong >
1863+ { ( ( parseFloat ( multiplier ) - 1 ) * 100 ) . toFixed ( 0 ) } % markup
1864+ </ strong > { " " }
1865+ to all Helicone inference costs for this organization.
1866+ </ >
1867+ ) }
1868+ </ DialogDescription >
1869+ </ DialogHeader >
1870+ < div className = "flex justify-end gap-2" >
1871+ < Button
1872+ variant = "outline"
1873+ onClick = { ( ) => setConfirmDialogOpen ( false ) }
1874+ >
1875+ Cancel
1876+ </ Button >
1877+ < Button onClick = { confirmSave } disabled = { isSaving } >
1878+ { isSaving ? (
1879+ < >
1880+ < Loader2 size = { 16 } className = "mr-2 animate-spin" />
1881+ Updating...
1882+ </ >
1883+ ) : (
1884+ "Confirm"
1885+ ) }
1886+ </ Button >
1887+ </ div >
1888+ </ DialogContent >
1889+ </ Dialog >
18321890 </ div >
18331891 ) ;
18341892} ;
0 commit comments