fix: remove and create app not reload plan (#2220)

This commit is contained in:
Joel 2024-01-26 11:16:50 +08:00 committed by GitHub
parent 8be7d8a635
commit d4262ecceb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 51 additions and 37 deletions

View File

@ -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({

View File

@ -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>
) )
}) })

View File

@ -34,6 +34,7 @@ const ProviderContext = createContext<{
} }
isFetchedPlan: boolean isFetchedPlan: boolean
enableBilling: boolean enableBilling: boolean
onPlanInfoChanged: () => void
enableReplaceWebAppLogo: boolean enableReplaceWebAppLogo: boolean
}>({ }>({
modelProviders: [], modelProviders: [],
@ -58,8 +59,9 @@ const ProviderContext = createContext<{
}, },
isFetchedPlan: false, isFetchedPlan: false,
enableBilling: false, enableBilling: false,
onPlanInfoChanged: () => { },
enableReplaceWebAppLogo: false, 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,8 +117,7 @@ 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 })
} }
useEffect(() => { const fetchPlan = async () => {
(async () => {
const data = await fetchCurrentPlanInfo() const data = await fetchCurrentPlanInfo()
const enabled = data.billing.enabled const enabled = data.billing.enabled
setEnableBilling(enabled) setEnableBilling(enabled)
@ -127,7 +127,9 @@ export const ProviderContextProvider = ({
handleOperateUtm() handleOperateUtm()
setIsFetchedPlan(true) setIsFetchedPlan(true)
} }
})() }
useEffect(() => {
fetchPlan()
}, []) }, [])
return ( return (
@ -140,6 +142,7 @@ export const ProviderContextProvider = ({
plan, plan,
isFetchedPlan, isFetchedPlan,
enableBilling, enableBilling,
onPlanInfoChanged: fetchPlan,
enableReplaceWebAppLogo, enableReplaceWebAppLogo,
}}> }}>
{children} {children}