Skip to content

Commit 08f2c54

Browse files
committed
WIP, custom API Modes
1 parent a398bfd commit 08f2c54

File tree

5 files changed

+40
-19
lines changed

5 files changed

+40
-19
lines changed

src/components/ConversationCard/index.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import InputBox from '../InputBox'
55
import ConversationItem from '../ConversationItem'
66
import {
77
createElementAtPosition,
8+
getApiModesStringArrayFromConfig,
89
isFirefox,
910
isMobile,
1011
isSafari,
@@ -375,7 +376,7 @@ function ConversationCard(props) {
375376
else setSession(newSession)
376377
}}
377378
>
378-
{config.activeApiModes.map((modelName) => {
379+
{getApiModesStringArrayFromConfig(config, true).map((modelName) => {
379380
const desc = modelNameToDesc(modelName, t)
380381
if (desc)
381382
return (

src/content-script/index.jsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import {
1616
createElementAtPosition,
1717
cropText,
1818
endsWithQuestionMark,
19+
getApiModesStringArrayFromConfig,
1920
getClientPosition,
2021
getPossibleElementByQuerySelector,
2122
} from '../utils'
@@ -354,7 +355,12 @@ async function prepareForForegroundRequests() {
354355

355356
const userConfig = await getUserConfig()
356357

357-
if (!chatgptWebModelKeys.some((model) => userConfig.activeApiModes.includes(model))) return
358+
if (
359+
!chatgptWebModelKeys.some((model) =>
360+
getApiModesStringArrayFromConfig(userConfig, true).includes(model),
361+
)
362+
)
363+
return
358364

359365
if (location.pathname === '/') {
360366
const input = document.querySelector('#prompt-textarea')

src/popup/sections/ApiModes.jsx

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useTranslation } from 'react-i18next'
22
import PropTypes from 'prop-types'
3-
import { apiModeToModelName, modelNameToApiMode, modelNameToDesc } from '../../utils/index.mjs'
3+
import { apiModeToModelName, getApiModesFromConfig, modelNameToDesc } from '../../utils/index.mjs'
44
import { PencilIcon, TrashIcon } from '@primer/octicons-react'
55
import { useState } from 'react'
66
import {
@@ -30,20 +30,7 @@ export function ApiModes({ config, updateConfig }) {
3030
const [editing, setEditing] = useState(false)
3131
const [editingApiMode, setEditingApiMode] = useState(defaultApiMode)
3232
const [editingIndex, setEditingIndex] = useState(-1)
33-
34-
const stringApiModes = config.customApiModes.map(apiModeToModelName)
35-
const originalApiModes = config.activeApiModes
36-
.map((modelName) => {
37-
// 'customModel' is always active
38-
if (stringApiModes.includes(modelName) || modelName === 'customModel') {
39-
return
40-
}
41-
if (modelName === 'azureOpenAi') modelName += '-' + config.azureDeploymentName
42-
if (modelName === 'ollama') modelName += '-' + config.ollamaModelName
43-
return modelNameToApiMode(modelName)
44-
})
45-
.filter((apiMode) => apiMode)
46-
const apiModes = [...originalApiModes, ...config.customApiModes]
33+
const apiModes = getApiModesFromConfig(config)
4734

4835
const editingComponent = (
4936
<div style={{ display: 'flex', flexDirection: 'column', '--spacing': '4px' }}>

src/popup/sections/GeneralPart.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useTranslation } from 'react-i18next'
22
import { useState } from 'react'
33
import FileSaver from 'file-saver'
4-
import { openUrl, modelNameToDesc } from '../../utils/index.mjs'
4+
import { openUrl, modelNameToDesc, getApiModesStringArrayFromConfig } from '../../utils/index.mjs'
55
import {
66
isUsingOpenAiApiKey,
77
isUsingAzureOpenAi,
@@ -159,7 +159,7 @@ export function GeneralPart({ config, updateConfig }) {
159159
updateConfig({ modelName: modelName })
160160
}}
161161
>
162-
{config.activeApiModes.map((modelName) => {
162+
{getApiModesStringArrayFromConfig(config, true).map((modelName) => {
163163
const desc = modelNameToDesc(modelName, t)
164164
if (desc)
165165
return (

src/utils/model-name-convert.mjs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,3 +78,30 @@ export function apiModeToModelName(apiMode) {
7878

7979
return apiMode.itemName
8080
}
81+
82+
export function getApiModesFromConfig(config, onlyActive) {
83+
const stringApiModes = config.customApiModes
84+
.map((apiMode) => {
85+
if (onlyActive) {
86+
if (apiMode.active) return apiModeToModelName(apiMode)
87+
} else return apiModeToModelName(apiMode)
88+
return false
89+
})
90+
.filter((apiMode) => apiMode)
91+
const originalApiModes = config.activeApiModes
92+
.map((modelName) => {
93+
// 'customModel' is always active
94+
if (stringApiModes.includes(modelName) || modelName === 'customModel') {
95+
return
96+
}
97+
if (modelName === 'azureOpenAi') modelName += '-' + config.azureDeploymentName
98+
if (modelName === 'ollama') modelName += '-' + config.ollamaModelName
99+
return modelNameToApiMode(modelName)
100+
})
101+
.filter((apiMode) => apiMode)
102+
return [...originalApiModes, ...config.customApiModes]
103+
}
104+
105+
export function getApiModesStringArrayFromConfig(config, onlyActive) {
106+
return getApiModesFromConfig(config, onlyActive).map(apiModeToModelName)
107+
}

0 commit comments

Comments
 (0)