mirror of
https://github.com/langgenius/dify.git
synced 2024-11-16 11:42:29 +08:00
fix: remove and create app not reload plan (#2220)
This commit is contained in:
parent
8be7d8a635
commit
d4262ecceb
|
@ -20,6 +20,7 @@ import type { HtmlContentProps } from '@/app/components/base/popover'
|
||||||
import CustomPopover from '@/app/components/base/popover'
|
import CustomPopover from '@/app/components/base/popover'
|
||||||
import Divider from '@/app/components/base/divider'
|
import Divider from '@/app/components/base/divider'
|
||||||
import { asyncRunSafe } from '@/utils'
|
import { asyncRunSafe } from '@/utils'
|
||||||
|
import { useProviderContext } from '@/context/provider-context'
|
||||||
|
|
||||||
export type AppCardProps = {
|
export type AppCardProps = {
|
||||||
app: App
|
app: App
|
||||||
|
@ -30,6 +31,7 @@ const AppCard = ({ app, onRefresh }: AppCardProps) => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const { notify } = useContext(ToastContext)
|
const { notify } = useContext(ToastContext)
|
||||||
const { isCurrentWorkspaceManager } = useAppContext()
|
const { isCurrentWorkspaceManager } = useAppContext()
|
||||||
|
const { onPlanInfoChanged } = useProviderContext()
|
||||||
const { push } = useRouter()
|
const { push } = useRouter()
|
||||||
|
|
||||||
const mutateApps = useContextSelector(
|
const mutateApps = useContextSelector(
|
||||||
|
@ -51,6 +53,7 @@ const AppCard = ({ app, onRefresh }: AppCardProps) => {
|
||||||
if (onRefresh)
|
if (onRefresh)
|
||||||
onRefresh()
|
onRefresh()
|
||||||
mutateApps()
|
mutateApps()
|
||||||
|
onPlanInfoChanged()
|
||||||
}
|
}
|
||||||
catch (e: any) {
|
catch (e: any) {
|
||||||
notify({
|
notify({
|
||||||
|
|
|
@ -5,6 +5,7 @@ import classNames from 'classnames'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import style from '../list.module.css'
|
import style from '../list.module.css'
|
||||||
import NewAppDialog from './NewAppDialog'
|
import NewAppDialog from './NewAppDialog'
|
||||||
|
import { useProviderContext } from '@/context/provider-context'
|
||||||
|
|
||||||
export type CreateAppCardProps = {
|
export type CreateAppCardProps = {
|
||||||
onSuccess?: () => void
|
onSuccess?: () => void
|
||||||
|
@ -12,6 +13,8 @@ export type CreateAppCardProps = {
|
||||||
|
|
||||||
const CreateAppCard = forwardRef<HTMLAnchorElement, CreateAppCardProps>(({ onSuccess }, ref) => {
|
const CreateAppCard = forwardRef<HTMLAnchorElement, CreateAppCardProps>(({ onSuccess }, ref) => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
|
const { onPlanInfoChanged } = useProviderContext()
|
||||||
|
|
||||||
const [showNewAppDialog, setShowNewAppDialog] = useState(false)
|
const [showNewAppDialog, setShowNewAppDialog] = useState(false)
|
||||||
return (
|
return (
|
||||||
<a ref={ref} className={classNames(style.listItem, style.newItemCard)} onClick={() => setShowNewAppDialog(true)}>
|
<a ref={ref} className={classNames(style.listItem, style.newItemCard)} onClick={() => setShowNewAppDialog(true)}>
|
||||||
|
@ -24,7 +27,12 @@ const CreateAppCard = forwardRef<HTMLAnchorElement, CreateAppCardProps>(({ onSuc
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/* <div className='text-xs text-gray-500'>{t('app.createFromConfigFile')}</div> */}
|
{/* <div className='text-xs text-gray-500'>{t('app.createFromConfigFile')}</div> */}
|
||||||
<NewAppDialog show={showNewAppDialog} onSuccess={onSuccess} onClose={() => setShowNewAppDialog(false)} />
|
<NewAppDialog show={showNewAppDialog} onSuccess={
|
||||||
|
() => {
|
||||||
|
onPlanInfoChanged()
|
||||||
|
if (onSuccess)
|
||||||
|
onSuccess()
|
||||||
|
}} onClose={() => setShowNewAppDialog(false)} />
|
||||||
</a>
|
</a>
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
|
@ -34,32 +34,34 @@ const ProviderContext = createContext<{
|
||||||
}
|
}
|
||||||
isFetchedPlan: boolean
|
isFetchedPlan: boolean
|
||||||
enableBilling: boolean
|
enableBilling: boolean
|
||||||
|
onPlanInfoChanged: () => void
|
||||||
enableReplaceWebAppLogo: boolean
|
enableReplaceWebAppLogo: boolean
|
||||||
}>({
|
}>({
|
||||||
modelProviders: [],
|
modelProviders: [],
|
||||||
textGenerationModelList: [],
|
textGenerationModelList: [],
|
||||||
agentThoughtModelList: [],
|
agentThoughtModelList: [],
|
||||||
supportRetrievalMethods: [],
|
supportRetrievalMethods: [],
|
||||||
hasSettedApiKey: true,
|
hasSettedApiKey: true,
|
||||||
plan: {
|
plan: {
|
||||||
type: Plan.sandbox,
|
type: Plan.sandbox,
|
||||||
usage: {
|
usage: {
|
||||||
vectorSpace: 32,
|
vectorSpace: 32,
|
||||||
buildApps: 12,
|
buildApps: 12,
|
||||||
teamMembers: 1,
|
teamMembers: 1,
|
||||||
annotatedResponse: 1,
|
annotatedResponse: 1,
|
||||||
},
|
},
|
||||||
total: {
|
total: {
|
||||||
vectorSpace: 200,
|
vectorSpace: 200,
|
||||||
buildApps: 50,
|
buildApps: 50,
|
||||||
teamMembers: 1,
|
teamMembers: 1,
|
||||||
annotatedResponse: 10,
|
annotatedResponse: 10,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
isFetchedPlan: false,
|
isFetchedPlan: false,
|
||||||
enableBilling: false,
|
enableBilling: false,
|
||||||
enableReplaceWebAppLogo: false,
|
onPlanInfoChanged: () => { },
|
||||||
})
|
enableReplaceWebAppLogo: false,
|
||||||
|
})
|
||||||
|
|
||||||
export const useProviderContext = () => useContext(ProviderContext)
|
export const useProviderContext = () => useContext(ProviderContext)
|
||||||
|
|
||||||
|
@ -98,7 +100,6 @@ export const ProviderContextProvider = ({
|
||||||
const [isFetchedPlan, setIsFetchedPlan] = useState(false)
|
const [isFetchedPlan, setIsFetchedPlan] = useState(false)
|
||||||
const [enableBilling, setEnableBilling] = useState(true)
|
const [enableBilling, setEnableBilling] = useState(true)
|
||||||
const [enableReplaceWebAppLogo, setEnableReplaceWebAppLogo] = useState(false)
|
const [enableReplaceWebAppLogo, setEnableReplaceWebAppLogo] = useState(false)
|
||||||
|
|
||||||
const handleOperateUtm = () => {
|
const handleOperateUtm = () => {
|
||||||
let utm
|
let utm
|
||||||
try {
|
try {
|
||||||
|
@ -116,18 +117,19 @@ export const ProviderContextProvider = ({
|
||||||
if (utm.utm_source || utm.utm_medium || utm.utm_campaign || utm.utm_content || utm.utm_term)
|
if (utm.utm_source || utm.utm_medium || utm.utm_campaign || utm.utm_content || utm.utm_term)
|
||||||
operationUtm({ url: '/operation/utm', body: utm })
|
operationUtm({ url: '/operation/utm', body: utm })
|
||||||
}
|
}
|
||||||
|
const fetchPlan = async () => {
|
||||||
|
const data = await fetchCurrentPlanInfo()
|
||||||
|
const enabled = data.billing.enabled
|
||||||
|
setEnableBilling(enabled)
|
||||||
|
setEnableReplaceWebAppLogo(data.can_replace_logo)
|
||||||
|
if (enabled) {
|
||||||
|
setPlan(parseCurrentPlan(data))
|
||||||
|
handleOperateUtm()
|
||||||
|
setIsFetchedPlan(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
(async () => {
|
fetchPlan()
|
||||||
const data = await fetchCurrentPlanInfo()
|
|
||||||
const enabled = data.billing.enabled
|
|
||||||
setEnableBilling(enabled)
|
|
||||||
setEnableReplaceWebAppLogo(data.can_replace_logo)
|
|
||||||
if (enabled) {
|
|
||||||
setPlan(parseCurrentPlan(data))
|
|
||||||
handleOperateUtm()
|
|
||||||
setIsFetchedPlan(true)
|
|
||||||
}
|
|
||||||
})()
|
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -140,6 +142,7 @@ export const ProviderContextProvider = ({
|
||||||
plan,
|
plan,
|
||||||
isFetchedPlan,
|
isFetchedPlan,
|
||||||
enableBilling,
|
enableBilling,
|
||||||
|
onPlanInfoChanged: fetchPlan,
|
||||||
enableReplaceWebAppLogo,
|
enableReplaceWebAppLogo,
|
||||||
}}>
|
}}>
|
||||||
{children}
|
{children}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user