@ -27,6 +27,7 @@ import { getCurrentCommitId } from "../utils";
import Link from "next/link" ;
import { UPDATE_URL } from "../constant" ;
import { SearchService , usePromptStore } from "../store/prompt" ;
import { requestUsage } from "../requests" ;
function SettingItem ( props : {
title : string ;
@ -54,7 +55,7 @@ export function Settings(props: { closeSettings: () => void }) {
state . updateConfig ,
state . resetConfig ,
state . clearAllData ,
]
] ,
) ;
const updateStore = useUpdateStore ( ) ;
@ -70,14 +71,34 @@ export function Settings(props: { closeSettings: () => void }) {
} ) ;
}
const [ usage , setUsage ] = useState < {
granted? : number ;
used? : number ;
} > ( ) ;
const [ loadingUsage , setLoadingUsage ] = useState ( false ) ;
function checkUsage() {
setLoadingUsage ( true ) ;
requestUsage ( )
. then ( ( res ) = >
setUsage ( {
granted : res?.total_granted ,
used : res?.total_used ,
} ) ,
)
. finally ( ( ) = > {
setLoadingUsage ( false ) ;
} ) ;
}
useEffect ( ( ) = > {
checkUpdate ( ) ;
checkUsage ( ) ;
} , [ ] ) ;
const accessStore = useAccessStore ( ) ;
const enabledAccessControl = useMemo (
( ) = > accessStore . enabledAccessControl ( ) ,
[ ]
[ ] ,
) ;
const promptStore = usePromptStore ( ) ;
@ -179,7 +200,7 @@ export function Settings(props: { closeSettings: () => void }) {
onChange = { ( e ) = > {
updateConfig (
( config ) = >
( config . submitKey = e . target . value as any as SubmitKey )
( config . submitKey = e . target . value as any as SubmitKey ) ,
) ;
} }
>
@ -199,7 +220,7 @@ export function Settings(props: { closeSettings: () => void }) {
value = { config . theme }
onChange = { ( e ) = > {
updateConfig (
( config ) = > ( config . theme = e . target . value as any as Theme )
( config ) = > ( config . theme = e . target . value as any as Theme ) ,
) ;
} }
>
@ -240,7 +261,7 @@ export function Settings(props: { closeSettings: () => void }) {
onChange = { ( e ) = >
updateConfig (
( config ) = >
( config . fontSize = Number . parseInt ( e . currentTarget . value ) )
( config . fontSize = Number . parseInt ( e . currentTarget . value ) ) ,
)
}
> < / input >
@ -253,7 +274,7 @@ export function Settings(props: { closeSettings: () => void }) {
checked = { config . tightBorder }
onChange = { ( e ) = >
updateConfig (
( config ) = > ( config . tightBorder = e . currentTarget . checked )
( config ) = > ( config . tightBorder = e . currentTarget . checked ) ,
)
}
> < / input >
@ -271,7 +292,7 @@ export function Settings(props: { closeSettings: () => void }) {
onChange = { ( e ) = >
updateConfig (
( config ) = >
( config . disablePromptHint = e . currentTarget . checked )
( config . disablePromptHint = e . currentTarget . checked ) ,
)
}
> < / input >
@ -281,7 +302,7 @@ export function Settings(props: { closeSettings: () => void }) {
title = { Locale . Settings . Prompt . List }
subTitle = { Locale . Settings . Prompt . ListCount (
builtinCount ,
customCount
customCount ,
) }
>
< IconButton
@ -324,6 +345,28 @@ export function Settings(props: { closeSettings: () => void }) {
> < / input >
< / SettingItem >
< SettingItem
title = { Locale . Settings . Usage . Title }
subTitle = {
loadingUsage
? Locale . Settings . Usage . IsChecking
: Locale . Settings . Usage . SubTitle (
usage ? . granted ? ? "[?]" ,
usage ? . used ? ? "[?]" ,
)
}
>
{ loadingUsage ? (
< div / >
) : (
< IconButton
icon = { < ResetIcon > < / ResetIcon > }
text = { Locale . Settings . Usage . Check }
onClick = { checkUsage }
/ >
) }
< / SettingItem >
< SettingItem
title = { Locale . Settings . HistoryCount . Title }
subTitle = { Locale . Settings . HistoryCount . SubTitle }
@ -338,7 +381,7 @@ export function Settings(props: { closeSettings: () => void }) {
onChange = { ( e ) = >
updateConfig (
( config ) = >
( config . historyMessageCount = e . target . valueAsNumber )
( config . historyMessageCount = e . target . valueAsNumber ) ,
)
}
> < / input >
@ -357,7 +400,7 @@ export function Settings(props: { closeSettings: () => void }) {
updateConfig (
( config ) = >
( config . compressMessageLengthThreshold =
e . currentTarget . valueAsNumber )
e . currentTarget . valueAsNumber ) ,
)
}
> < / input >
@ -370,7 +413,8 @@ export function Settings(props: { closeSettings: () => void }) {
value = { config . modelConfig . model }
onChange = { ( e ) = > {
updateConfig (
( config ) = > ( config . modelConfig . model = e . currentTarget . value )
( config ) = >
( config . modelConfig . model = e . currentTarget . value ) ,
) ;
} }
>
@ -395,7 +439,7 @@ export function Settings(props: { closeSettings: () => void }) {
updateConfig (
( config ) = >
( config . modelConfig . temperature =
e . currentTarget . valueAsNumber )
e . currentTarget . valueAsNumber ) ,
) ;
} }
> < / input >
@ -413,7 +457,7 @@ export function Settings(props: { closeSettings: () => void }) {
updateConfig (
( config ) = >
( config . modelConfig . max_tokens =
e . currentTarget . valueAsNumber )
e . currentTarget . valueAsNumber ) ,
)
}
> < / input >
@ -432,7 +476,7 @@ export function Settings(props: { closeSettings: () => void }) {
updateConfig (
( config ) = >
( config . modelConfig . presence_penalty =
e . currentTarget . valueAsNumber )
e . currentTarget . valueAsNumber ) ,
) ;
} }
> < / input >