|
|
|
|
@ -39,16 +39,19 @@ import { PortalToFollowElem, PortalToFollowElemContent, PortalToFollowElemTrigge
|
|
|
|
|
|
|
|
|
|
export type IAppInfoProps = {
|
|
|
|
|
expand: boolean
|
|
|
|
|
onlyShowDetail?: boolean
|
|
|
|
|
openState?: boolean
|
|
|
|
|
onDetailExpand?: (expand: boolean) => void
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const AppInfo = ({ expand }: IAppInfoProps) => {
|
|
|
|
|
const AppInfo = ({ expand, onlyShowDetail = false, openState = false, onDetailExpand }: IAppInfoProps) => {
|
|
|
|
|
const { t } = useTranslation()
|
|
|
|
|
const { notify } = useContext(ToastContext)
|
|
|
|
|
const { replace } = useRouter()
|
|
|
|
|
const { onPlanInfoChanged } = useProviderContext()
|
|
|
|
|
const appDetail = useAppStore(state => state.appDetail)
|
|
|
|
|
const setAppDetail = useAppStore(state => state.setAppDetail)
|
|
|
|
|
const [open, setOpen] = useState(false)
|
|
|
|
|
const [open, setOpen] = useState(openState)
|
|
|
|
|
const [showEditModal, setShowEditModal] = useState(false)
|
|
|
|
|
const [showDuplicateModal, setShowDuplicateModal] = useState(false)
|
|
|
|
|
const [showConfirmDelete, setShowConfirmDelete] = useState(false)
|
|
|
|
|
@ -193,6 +196,7 @@ const AppInfo = ({ expand }: IAppInfoProps) => {
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<div>
|
|
|
|
|
{!onlyShowDetail && (
|
|
|
|
|
<button
|
|
|
|
|
onClick={() => {
|
|
|
|
|
if (isCurrentWorkspaceEditor)
|
|
|
|
|
@ -227,9 +231,13 @@ const AppInfo = ({ expand }: IAppInfoProps) => {
|
|
|
|
|
}
|
|
|
|
|
</div>
|
|
|
|
|
</button>
|
|
|
|
|
)}
|
|
|
|
|
<ContentDialog
|
|
|
|
|
show={open}
|
|
|
|
|
onClose={() => setOpen(false)}
|
|
|
|
|
show={onlyShowDetail ? openState : open}
|
|
|
|
|
onClose={() => {
|
|
|
|
|
setOpen(false)
|
|
|
|
|
onDetailExpand?.(false)
|
|
|
|
|
}}
|
|
|
|
|
className='absolute bottom-2 left-2 top-2 flex w-[420px] flex-col rounded-2xl !p-0'
|
|
|
|
|
>
|
|
|
|
|
<div className='flex shrink-0 flex-col items-start justify-center gap-3 self-stretch p-4'>
|
|
|
|
|
@ -258,6 +266,7 @@ const AppInfo = ({ expand }: IAppInfoProps) => {
|
|
|
|
|
className='gap-[1px]'
|
|
|
|
|
onClick={() => {
|
|
|
|
|
setOpen(false)
|
|
|
|
|
onDetailExpand?.(false)
|
|
|
|
|
setShowEditModal(true)
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
@ -270,6 +279,7 @@ const AppInfo = ({ expand }: IAppInfoProps) => {
|
|
|
|
|
className='gap-[1px]'
|
|
|
|
|
onClick={() => {
|
|
|
|
|
setOpen(false)
|
|
|
|
|
onDetailExpand?.(false)
|
|
|
|
|
setShowDuplicateModal(true)
|
|
|
|
|
}}>
|
|
|
|
|
<RiFileCopy2Line className='h-3.5 w-3.5 text-components-button-secondary-text' />
|
|
|
|
|
@ -308,6 +318,7 @@ const AppInfo = ({ expand }: IAppInfoProps) => {
|
|
|
|
|
&& <div className='flex h-8 cursor-pointer items-center gap-x-1 rounded-lg p-1.5 hover:bg-state-base-hover'
|
|
|
|
|
onClick={() => {
|
|
|
|
|
setOpen(false)
|
|
|
|
|
onDetailExpand?.(false)
|
|
|
|
|
setShowImportDSLModal(true)
|
|
|
|
|
}}>
|
|
|
|
|
<RiFileUploadLine className='h-4 w-4 text-text-tertiary' />
|
|
|
|
|
@ -319,6 +330,7 @@ const AppInfo = ({ expand }: IAppInfoProps) => {
|
|
|
|
|
&& <div className='flex h-8 cursor-pointer items-center gap-x-1 rounded-lg p-1.5 hover:bg-state-base-hover'
|
|
|
|
|
onClick={() => {
|
|
|
|
|
setOpen(false)
|
|
|
|
|
onDetailExpand?.(false)
|
|
|
|
|
setShowSwitchModal(true)
|
|
|
|
|
}}>
|
|
|
|
|
<RiExchange2Line className='h-4 w-4 text-text-tertiary' />
|
|
|
|
|
@ -345,6 +357,7 @@ const AppInfo = ({ expand }: IAppInfoProps) => {
|
|
|
|
|
className='gap-0.5'
|
|
|
|
|
onClick={() => {
|
|
|
|
|
setOpen(false)
|
|
|
|
|
onDetailExpand?.(false)
|
|
|
|
|
setShowConfirmDelete(true)
|
|
|
|
|
}}
|
|
|
|
|
>
|
|
|
|
|
|