enable marketplace

This commit is contained in:
StyleZhang 2024-10-16 15:49:56 +08:00
parent 846555af1b
commit 1a64c660ba
4 changed files with 28 additions and 8 deletions

View File

@ -22,6 +22,7 @@ import TabSlider from '@/app/components/base/tab-slider'
import Tooltip from '@/app/components/base/tooltip'
import cn from '@/utils/classnames'
import PermissionSetModal from '@/app/components/plugins/permission-setting-modal/modal'
import { useSelector as useAppContextSelector } from '@/context/app-context'
export type PluginPageProps = {
plugins: React.ReactNode
@ -45,12 +46,17 @@ const PluginPage = ({
}] = useBoolean()
const [currentFile, setCurrentFile] = useState<File | null>(null)
const containerRef = usePluginPageContext(v => v.containerRef)
const { enable_marketplace } = useAppContextSelector(s => s.systemFeatures)
const options = useMemo(() => {
return [
{ value: 'plugins', text: t('common.menus.plugins') },
{ value: 'discover', text: 'Explore Marketplace' },
...(
!enable_marketplace
? [{ value: 'discover', text: 'Explore Marketplace' }]
: []
),
]
}, [t])
}, [t, enable_marketplace])
const [activeTab, setActiveTab] = useTabSearchParams({
defaultTab: options[0].value,
})
@ -137,7 +143,7 @@ const PluginPage = ({
</>
)}
{
activeTab === 'discover' && marketplace
activeTab === 'discover' && !enable_marketplace && marketplace
}
{showPluginSettingModal && (

View File

@ -15,12 +15,14 @@ import {
PortalToFollowElemContent,
PortalToFollowElemTrigger,
} from '@/app/components/base/portal-to-follow-elem'
import { useSelector as useAppContextSelector } from '@/context/app-context'
const InstallPluginDropdown = () => {
const fileInputRef = useRef<HTMLInputElement>(null)
const [isMenuOpen, setIsMenuOpen] = useState(false)
const [selectedAction, setSelectedAction] = useState<string | null>(null)
const [selectedFile, setSelectedFile] = useState<File | null>(null)
const { enable_marketplace } = useAppContextSelector(s => s.systemFeatures)
const handleFileChange = (event: React.ChangeEvent<HTMLInputElement>) => {
const file = event.target.files?.[0]
@ -62,7 +64,11 @@ const InstallPluginDropdown = () => {
/>
<div className='p-1 w-full'>
{[
{ icon: MagicBox, text: 'Marketplace', action: 'marketplace' },
...(
enable_marketplace
? [{ icon: MagicBox, text: 'Marketplace', action: 'marketplace' }]
: []
),
{ icon: Github, text: 'GitHub', action: 'github' },
{ icon: FileZip, text: 'Local Package File', action: 'local' },
].map(({ icon: Icon, text, action }) => (

View File

@ -19,11 +19,13 @@ import { fetchCollectionList } from '@/service/tools'
import Card from '@/app/components/plugins/card'
import { useGetLanguage } from '@/context/i18n'
import CardMoreInfo from '@/app/components/plugins/card/card-more-info'
import { useSelector as useAppContextSelector } from '@/context/app-context'
const ProviderList = () => {
const { t } = useTranslation()
const language = useGetLanguage()
const containerRef = useRef<HTMLDivElement>(null)
const { enable_marketplace } = useAppContextSelector(s => s.systemFeatures)
const [activeTab, setActiveTab] = useTabSearchParams({
defaultTab: 'builtin',
@ -109,6 +111,7 @@ const ProviderList = () => {
'border-[1.5px] border-transparent',
currentProvider?.id === collection.id && 'border-components-option-card-option-selected-border',
)}
hideCornerMark
locale={language}
payload={{
...collection,
@ -116,7 +119,6 @@ const ProviderList = () => {
} as any}
footer={
<CardMoreInfo
downloadCount={0}
tags={collection.labels}
/>
}
@ -125,9 +127,13 @@ const ProviderList = () => {
))}
{!filteredCollectionList.length && <div className='absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2'><Empty /></div>}
</div>
{
!enable_marketplace && (
<Marketplace onMarketplaceScroll={() => {
containerRef.current?.scrollTo({ top: containerRef.current.scrollHeight, behavior: 'smooth' })
}} />
)
}
</div>
<div className={cn(
'shrink-0 w-0 border-l-[0.5px] border-black/8 overflow-y-auto transition-all duration-200 ease-in-out',

View File

@ -4,6 +4,7 @@ export type SystemFeatures = {
sso_enforced_for_web: boolean
sso_enforced_for_web_protocol: string
enable_web_sso_switch_component: boolean
enable_marketplace: boolean
}
export const defaultSystemFeatures: SystemFeatures = {
@ -12,4 +13,5 @@ export const defaultSystemFeatures: SystemFeatures = {
sso_enforced_for_web: false,
sso_enforced_for_web_protocol: '',
enable_web_sso_switch_component: false,
enable_marketplace: false,
}