| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- /*
- Copyright (C) 2025 QuantumNous
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation, either version 3 of the
- License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see <https://www.gnu.org/licenses/>.
- For commercial licensing, please contact [email protected]
- */
- import React from 'react';
- import { Banner } from '@douyinfe/semi-ui';
- import { IconAlertTriangle } from '@douyinfe/semi-icons';
- import CardPro from '../../common/ui/CardPro';
- import ChannelsTable from './ChannelsTable';
- import ChannelsActions from './ChannelsActions';
- import ChannelsFilters from './ChannelsFilters';
- import ChannelsTabs from './ChannelsTabs';
- import { useChannelsData } from '../../../hooks/channels/useChannelsData';
- import { useIsMobile } from '../../../hooks/common/useIsMobile';
- import BatchTagModal from './modals/BatchTagModal';
- import ModelTestModal from './modals/ModelTestModal';
- import ColumnSelectorModal from './modals/ColumnSelectorModal';
- import EditChannelModal from './modals/EditChannelModal';
- import EditTagModal from './modals/EditTagModal';
- import MultiKeyManageModal from './modals/MultiKeyManageModal';
- import { createCardProPagination } from '../../../helpers/utils';
- const ChannelsPage = () => {
- const channelsData = useChannelsData();
- const isMobile = useIsMobile();
- return (
- <>
- {/* Modals */}
- <ColumnSelectorModal {...channelsData} />
- <EditTagModal
- visible={channelsData.showEditTag}
- tag={channelsData.editingTag}
- handleClose={() => channelsData.setShowEditTag(false)}
- refresh={channelsData.refresh}
- />
- <EditChannelModal
- refresh={channelsData.refresh}
- visible={channelsData.showEdit}
- handleClose={channelsData.closeEdit}
- editingChannel={channelsData.editingChannel}
- />
- <BatchTagModal {...channelsData} />
- <ModelTestModal {...channelsData} />
- <MultiKeyManageModal
- visible={channelsData.showMultiKeyManageModal}
- onCancel={() => channelsData.setShowMultiKeyManageModal(false)}
- channel={channelsData.currentMultiKeyChannel}
- onRefresh={channelsData.refresh}
- />
- {/* Main Content */}
- {channelsData.globalPassThroughEnabled ? (
- <Banner
- type='warning'
- closeIcon={null}
- icon={
- <IconAlertTriangle
- size='large'
- style={{ color: 'var(--semi-color-warning)' }}
- />
- }
- description={channelsData.t(
- '已开启全局请求透传:参数覆写、模型重定向、渠道适配等 NewAPI 内置功能将失效,非最佳实践;如因此产生问题,请勿提交 issue 反馈。',
- )}
- style={{ marginBottom: 12 }}
- />
- ) : null}
- <CardPro
- type='type3'
- tabsArea={<ChannelsTabs {...channelsData} />}
- actionsArea={<ChannelsActions {...channelsData} />}
- searchArea={<ChannelsFilters {...channelsData} />}
- paginationArea={createCardProPagination({
- currentPage: channelsData.activePage,
- pageSize: channelsData.pageSize,
- total: channelsData.channelCount,
- onPageChange: channelsData.handlePageChange,
- onPageSizeChange: channelsData.handlePageSizeChange,
- isMobile: isMobile,
- t: channelsData.t,
- })}
- t={channelsData.t}
- >
- <ChannelsTable {...channelsData} />
- </CardPro>
- </>
- );
- };
- export default ChannelsPage;
|