| | |
| | | ModelLoadBalancingConfigEntry, |
| | | ModelProvider, |
| | | } from '@/app/components/header/account-setting/model-provider-page/declarations' |
| | | import { |
| | | EDUCATION_VERIFYING_LOCALSTORAGE_ITEM, |
| | | } from '@/app/education-apply/constants' |
| | | |
| | | import Pricing from '@/app/components/billing/pricing' |
| | | import type { ModerationConfig, PromptVariable } from '@/models/debug' |
| | | import type { |
| | |
| | | import OpeningSettingModal from '@/app/components/base/features/new-feature-panel/conversation-opener/modal' |
| | | import type { OpeningStatement } from '@/app/components/base/features/types' |
| | | import type { InputVar } from '@/app/components/workflow/types' |
| | | import type { UpdatePluginPayload } from '@/app/components/plugins/types' |
| | | import UpdatePlugin from '@/app/components/plugins/update-plugin' |
| | | import { removeSpecificQueryParam } from '@/utils' |
| | | import { noop } from 'lodash-es' |
| | | |
| | | export type ModalState<T> = { |
| | | payload: T |
| | |
| | | entry?: ModelLoadBalancingConfigEntry |
| | | index?: number |
| | | } |
| | | |
| | | export type ModalContextState = { |
| | | setShowAccountSettingModal: Dispatch<SetStateAction<ModalState<string> | null>> |
| | | setShowApiBasedExtensionModal: Dispatch<SetStateAction<ModalState<ApiBasedExtension> | null>> |
| | |
| | | workflowVariables?: InputVar[] |
| | | onAutoAddPromptVariable?: (variable: PromptVariable[]) => void |
| | | }> | null>> |
| | | setShowUpdatePluginModal: Dispatch<SetStateAction<ModalState<UpdatePluginPayload> | null>> |
| | | } |
| | | const ModalContext = createContext<ModalContextState>({ |
| | | setShowAccountSettingModal: noop, |
| | | setShowApiBasedExtensionModal: noop, |
| | | setShowModerationSettingModal: noop, |
| | | setShowExternalDataToolModal: noop, |
| | | setShowPricingModal: noop, |
| | | setShowAnnotationFullModal: noop, |
| | | setShowModelModal: noop, |
| | | setShowExternalKnowledgeAPIModal: noop, |
| | | setShowModelLoadBalancingModal: noop, |
| | | setShowModelLoadBalancingEntryModal: noop, |
| | | setShowOpeningModal: noop, |
| | | setShowUpdatePluginModal: noop, |
| | | setShowAccountSettingModal: () => { }, |
| | | setShowApiBasedExtensionModal: () => { }, |
| | | setShowModerationSettingModal: () => { }, |
| | | setShowExternalDataToolModal: () => { }, |
| | | setShowPricingModal: () => { }, |
| | | setShowAnnotationFullModal: () => { }, |
| | | setShowModelModal: () => { }, |
| | | setShowExternalKnowledgeAPIModal: () => { }, |
| | | setShowModelLoadBalancingModal: () => { }, |
| | | setShowModelLoadBalancingEntryModal: () => { }, |
| | | setShowOpeningModal: () => { }, |
| | | }) |
| | | |
| | | export const useModalContext = () => useContext(ModalContext) |
| | | |
| | | // Adding a dangling comma to avoid the generic parsing issue in tsx, see: |
| | | // https://github.com/microsoft/TypeScript/issues/15713 |
| | | // eslint-disable-next-line @typescript-eslint/comma-dangle |
| | | export const useModalContextSelector = <T,>(selector: (state: ModalContextState) => T): T => |
| | | useContextSelector(ModalContext, selector) |
| | | |
| | |
| | | workflowVariables?: InputVar[] |
| | | onAutoAddPromptVariable?: (variable: PromptVariable[]) => void |
| | | }> | null>(null) |
| | | const [showUpdatePluginModal, setShowUpdatePluginModal] = useState<ModalState<UpdatePluginPayload> | null>(null) |
| | | |
| | | const searchParams = useSearchParams() |
| | | const router = useRouter() |
| | | const [showPricingModal, setShowPricingModal] = useState(searchParams.get('show-pricing') === '1') |
| | | const [showAnnotationFullModal, setShowAnnotationFullModal] = useState(false) |
| | | const handleCancelAccountSettingModal = () => { |
| | | const educationVerifying = localStorage.getItem(EDUCATION_VERIFYING_LOCALSTORAGE_ITEM) |
| | | |
| | | if (educationVerifying === 'yes') |
| | | localStorage.removeItem(EDUCATION_VERIFYING_LOCALSTORAGE_ITEM) |
| | | |
| | | removeSpecificQueryParam('action') |
| | | setShowAccountSettingModal(null) |
| | | if (showAccountSettingModal?.onCancelCallback) |
| | | showAccountSettingModal?.onCancelCallback() |
| | |
| | | setShowModelLoadBalancingModal, |
| | | setShowModelLoadBalancingEntryModal, |
| | | setShowOpeningModal, |
| | | setShowUpdatePluginModal, |
| | | }}> |
| | | <> |
| | | {children} |
| | |
| | | onAutoAddPromptVariable={showOpeningModal.payload.onAutoAddPromptVariable} |
| | | /> |
| | | )} |
| | | |
| | | { |
| | | !!showUpdatePluginModal && ( |
| | | <UpdatePlugin |
| | | {...showUpdatePluginModal.payload} |
| | | onCancel={() => { |
| | | setShowUpdatePluginModal(null) |
| | | showUpdatePluginModal.onCancelCallback?.() |
| | | }} |
| | | onSave={() => { |
| | | setShowUpdatePluginModal(null) |
| | | showUpdatePluginModal.onSaveCallback?.({} as any) |
| | | }} |
| | | /> |
| | | ) |
| | | } |
| | | </> |
| | | </ModalContext.Provider> |
| | | ) |