diff --git a/web/app/components/billing/type.ts b/web/app/components/billing/type.ts index 506ef46799..9090cec78a 100644 --- a/web/app/components/billing/type.ts +++ b/web/app/components/billing/type.ts @@ -99,7 +99,8 @@ export type CurrentPlanInfoBackend = { workspace_members: { size: number limit: number - } + }, + is_allow_transfer_workspace: boolean } export type SubscriptionItem = { diff --git a/web/app/components/header/account-setting/members-page/index.tsx b/web/app/components/header/account-setting/members-page/index.tsx index 7af23d56fc..ad04371d4a 100644 --- a/web/app/components/header/account-setting/members-page/index.tsx +++ b/web/app/components/header/account-setting/members-page/index.tsx @@ -54,7 +54,7 @@ const MembersPage = () => { const [invitationResults, setInvitationResults] = useState([]) const [invitedModalVisible, setInvitedModalVisible] = useState(false) const accounts = data?.accounts || [] - const { plan, enableBilling } = useProviderContext() + const { plan, enableBilling, isAllowTransferWorkspace } = useProviderContext() const isNotUnlimitedMemberPlan = enableBilling && plan.type !== Plan.team && plan.type !== Plan.enterprise const isMemberFull = enableBilling && isNotUnlimitedMemberPlan && accounts.length >= plan.total.teamMembers const [editWorkspaceModalVisible, setEditWorkspaceModalVisible] = useState(false) @@ -136,10 +136,10 @@ const MembersPage = () => {
{dayjs(Number((account.last_active_at || account.created_at)) * 1000).locale(locale === 'zh-Hans' ? 'zh-cn' : 'en').fromNow()}
- {isCurrentWorkspaceOwner && account.role === 'owner' && systemFeatures.is_allow_transfer_workspace && ( + {isCurrentWorkspaceOwner && account.role === 'owner' && isAllowTransferWorkspace && ( setShowTransferOwnershipModal(true)}> )} - {isCurrentWorkspaceOwner && account.role === 'owner' && !systemFeatures.is_allow_transfer_workspace && ( + {isCurrentWorkspaceOwner && account.role === 'owner' && !isAllowTransferWorkspace && (
{RoleMap[account.role] || RoleMap.normal}
)} {isCurrentWorkspaceOwner && account.role !== 'owner' && ( diff --git a/web/context/provider-context.tsx b/web/context/provider-context.tsx index aaec900fd8..70917f2cf6 100644 --- a/web/context/provider-context.tsx +++ b/web/context/provider-context.tsx @@ -56,6 +56,7 @@ type ProviderContextState = { } }, refreshLicenseLimit: () => void + isAllowTransferWorkspace: boolean } const ProviderContext = createContext({ modelProviders: [], @@ -97,6 +98,7 @@ const ProviderContext = createContext({ }, }, refreshLicenseLimit: noop, + isAllowTransferWorkspace: false, }) export const useProviderContext = () => useContext(ProviderContext) @@ -134,6 +136,7 @@ export const ProviderContextProvider = ({ const [enableEducationPlan, setEnableEducationPlan] = useState(false) const [isEducationWorkspace, setIsEducationWorkspace] = useState(false) const { data: isEducationAccount } = useEducationStatus(!enableEducationPlan) + const [isAllowTransferWorkspace, setIsAllowTransferWorkspace] = useState(false) const fetchPlan = async () => { try { @@ -162,6 +165,8 @@ export const ProviderContextProvider = ({ setWebappCopyrightEnabled(true) if (data.workspace_members) setLicenseLimit({ workspace_members: data.workspace_members }) + if (data.is_allow_transfer_workspace) + setIsAllowTransferWorkspace(data.is_allow_transfer_workspace) } catch (error) { console.error('Failed to fetch plan info:', error) @@ -222,6 +227,7 @@ export const ProviderContextProvider = ({ webappCopyrightEnabled, licenseLimit, refreshLicenseLimit: fetchPlan, + isAllowTransferWorkspace, }}> {children} diff --git a/web/types/feature.ts b/web/types/feature.ts index 9a6598cada..5787c2661f 100644 --- a/web/types/feature.ts +++ b/web/types/feature.ts @@ -39,7 +39,6 @@ export type SystemFeatures = { enable_email_password_login: boolean enable_social_oauth_login: boolean is_allow_create_workspace: boolean - is_allow_transfer_workspace: boolean is_allow_register: boolean is_email_setup: boolean license: License @@ -75,7 +74,6 @@ export const defaultSystemFeatures: SystemFeatures = { enable_email_password_login: false, enable_social_oauth_login: false, is_allow_create_workspace: false, - is_allow_transfer_workspace: false, is_allow_register: false, is_email_setup: false, license: {