feat: customize permission detect

pull/198/head
金伟强 3 years ago
parent 9a167aa688
commit 7240d90bc1

@ -17,14 +17,16 @@ const CustomizeBtn = (
export type AppCardProps = { export type AppCardProps = {
app: App, app: App,
canCreate: boolean,
onCreate: () => void, onCreate: () => void,
onAddToWorkspace: (appId: string) => void, onAddToWorkspace: (appId: string) => void,
} }
const AppCard = ({ const AppCard = ({
app, app,
canCreate,
onCreate, onCreate,
onAddToWorkspace onAddToWorkspace,
}: AppCardProps) => { }: AppCardProps) => {
const { t } = useTranslation() const { t } = useTranslation()
const {app: appBasicInfo} = app const {app: appBasicInfo} = app
@ -47,10 +49,12 @@ const AppCard = ({
<PlusIcon className='w-4 h-4 mr-1' /> <PlusIcon className='w-4 h-4 mr-1' />
<span className='text-xs'>{t('explore.appCard.addToWorkspace')}</span> <span className='text-xs'>{t('explore.appCard.addToWorkspace')}</span>
</Button> </Button>
<Button className='grow flex items-center !h-7 space-x-1' onClick={onCreate}> {canCreate && (
{CustomizeBtn} <Button className='grow flex items-center !h-7 space-x-1' onClick={onCreate}>
<span className='text-xs'>{t('explore.appCard.customize')}</span> {CustomizeBtn}
</Button> <span className='text-xs'>{t('explore.appCard.customize')}</span>
</Button>
)}
</div> </div>
</div> </div>
</div> </div>

@ -16,7 +16,7 @@ import Toast from '../../base/toast'
const Apps: FC = ({ }) => { const Apps: FC = ({ }) => {
const { t } = useTranslation() const { t } = useTranslation()
const { setControlUpdateInstalledApps } = useContext(ExploreContext) const { setControlUpdateInstalledApps, hasEditPermission } = useContext(ExploreContext)
const [currCategory, setCurrCategory] = React.useState('') const [currCategory, setCurrCategory] = React.useState('')
const [allList, setAllList] = React.useState<App[]>([]) const [allList, setAllList] = React.useState<App[]>([])
const [isLoaded, setIsLoaded] = React.useState(false) const [isLoaded, setIsLoaded] = React.useState(false)
@ -95,6 +95,7 @@ const Apps: FC = ({ }) => {
<AppCard <AppCard
key={app.app_id} key={app.app_id}
app={app} app={app}
canCreate={hasEditPermission}
onCreate={() => { onCreate={() => {
setCurrApp(app) setCurrApp(app)
setIsShowCreateModal(true) setIsShowCreateModal(true)

@ -1,8 +1,9 @@
'use client' 'use client'
import React, { FC } from 'react' import React, { FC, useEffect } from 'react'
import ExploreContext from '@/context/explore-context' import ExploreContext from '@/context/explore-context'
import Sidebar from '@/app/components/explore/sidebar' import Sidebar from '@/app/components/explore/sidebar'
import { useAppContext } from '@/context/app-context'
import { fetchMembers } from '@/service/common'
export interface IExploreProps { export interface IExploreProps {
children: React.ReactNode children: React.ReactNode
@ -12,13 +13,26 @@ const Explore: FC<IExploreProps> = ({
children children
}) => { }) => {
const [controlUpdateInstalledApps, setControlUpdateInstalledApps] = React.useState(0) const [controlUpdateInstalledApps, setControlUpdateInstalledApps] = React.useState(0)
const { userProfile } = useAppContext()
const [hasEditPermission, setHasEditPermission] = React.useState(false)
useEffect(() => {
(async () => {
const { accounts } = await fetchMembers({ url: '/workspaces/current/members', params: {}})
if(!accounts) return
const currUser = accounts.find(account => account.id === userProfile.id)
setHasEditPermission(currUser?.role !== 'normal')
})()
}, [])
return ( return (
<div className='flex h-full bg-gray-100 border-t border-gray-200'> <div className='flex h-full bg-gray-100 border-t border-gray-200'>
<ExploreContext.Provider <ExploreContext.Provider
value={ value={
{ {
controlUpdateInstalledApps, controlUpdateInstalledApps,
setControlUpdateInstalledApps setControlUpdateInstalledApps,
hasEditPermission
} }
} }
> >

@ -3,11 +3,13 @@ import { createContext } from 'use-context-selector'
type IExplore = { type IExplore = {
controlUpdateInstalledApps: number controlUpdateInstalledApps: number
setControlUpdateInstalledApps: (controlUpdateInstalledApps: number) => void setControlUpdateInstalledApps: (controlUpdateInstalledApps: number) => void
hasEditPermission: boolean
} }
const ExploreContext = createContext<IExplore>({ const ExploreContext = createContext<IExplore>({
controlUpdateInstalledApps: 0, controlUpdateInstalledApps: 0,
setControlUpdateInstalledApps: () => { }, setControlUpdateInstalledApps: () => { },
hasEditPermission: false,
}) })
export default ExploreContext export default ExploreContext

Loading…
Cancel
Save