mirror of https://github.com/langgenius/dify.git
fix: user can edit webapp copyright info only if webapp_copyright_enabled is true
This commit is contained in:
parent
1b1e96eff7
commit
c794ecf101
|
@ -30,7 +30,6 @@ import I18n from '@/context/i18n'
|
||||||
import cn from '@/utils/classnames'
|
import cn from '@/utils/classnames'
|
||||||
import { useGlobalPublicStore } from '@/context/global-public-context'
|
import { useGlobalPublicStore } from '@/context/global-public-context'
|
||||||
import { IS_CE_EDITION } from '@/config'
|
import { IS_CE_EDITION } from '@/config'
|
||||||
import { LicenseStatus } from '@/types/feature'
|
|
||||||
|
|
||||||
export type ISettingsModalProps = {
|
export type ISettingsModalProps = {
|
||||||
isChat: boolean
|
isChat: boolean
|
||||||
|
@ -113,7 +112,7 @@ const SettingsModal: FC<ISettingsModalProps> = ({
|
||||||
: { type: 'emoji', icon, background: icon_background! },
|
: { type: 'emoji', icon, background: icon_background! },
|
||||||
)
|
)
|
||||||
|
|
||||||
const { enableBilling, plan } = useProviderContext()
|
const { enableBilling, plan, webappCopyrightEnabled } = useProviderContext()
|
||||||
const { setShowPricingModal, setShowAccountSettingModal } = useModalContext()
|
const { setShowPricingModal, setShowAccountSettingModal } = useModalContext()
|
||||||
const isFreePlan = plan.type === 'sandbox'
|
const isFreePlan = plan.type === 'sandbox'
|
||||||
const handlePlanClick = useCallback(() => {
|
const handlePlanClick = useCallback(() => {
|
||||||
|
@ -383,14 +382,14 @@ const SettingsModal: FC<ISettingsModalProps> = ({
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
<Tooltip
|
<Tooltip
|
||||||
disabled={systemFeatures.license.status !== LicenseStatus.NONE}
|
disabled={webappCopyrightEnabled}
|
||||||
popupContent={
|
popupContent={
|
||||||
<div className='w-[260px]'>{t(`${prefixSettings}.more.copyrightTooltip`)}</div>
|
<div className='w-[180px]'>{t(`${prefixSettings}.more.copyrightTooltip`)}</div>
|
||||||
}
|
}
|
||||||
asChild={false}
|
asChild={false}
|
||||||
>
|
>
|
||||||
<Switch
|
<Switch
|
||||||
disabled={IS_CE_EDITION}
|
disabled={!webappCopyrightEnabled}
|
||||||
defaultValue={inputInfo.copyrightSwitchValue}
|
defaultValue={inputInfo.copyrightSwitchValue}
|
||||||
onChange={v => setInputInfo({ ...inputInfo, copyrightSwitchValue: v })}
|
onChange={v => setInputInfo({ ...inputInfo, copyrightSwitchValue: v })}
|
||||||
/>
|
/>
|
||||||
|
@ -442,20 +441,22 @@ const SettingsModal: FC<ISettingsModalProps> = ({
|
||||||
<Button variant='primary' onClick={onClickSave} loading={saveLoading}>{t('common.operation.save')}</Button>
|
<Button variant='primary' onClick={onClickSave} loading={saveLoading}>{t('common.operation.save')}</Button>
|
||||||
</div>
|
</div>
|
||||||
</Modal >
|
</Modal >
|
||||||
{showAppIconPicker && (
|
{
|
||||||
<AppIconPicker
|
showAppIconPicker && (
|
||||||
onSelect={(payload) => {
|
<AppIconPicker
|
||||||
setAppIcon(payload)
|
onSelect={(payload) => {
|
||||||
setShowAppIconPicker(false)
|
setAppIcon(payload)
|
||||||
}}
|
setShowAppIconPicker(false)
|
||||||
onClose={() => {
|
}}
|
||||||
setAppIcon(icon_type === 'image'
|
onClose={() => {
|
||||||
? { type: 'image', url: icon_url!, fileId: icon }
|
setAppIcon(icon_type === 'image'
|
||||||
: { type: 'emoji', icon, background: icon_background! })
|
? { type: 'image', url: icon_url!, fileId: icon }
|
||||||
setShowAppIconPicker(false)
|
: { type: 'emoji', icon, background: icon_background! })
|
||||||
}}
|
setShowAppIconPicker(false)
|
||||||
/>
|
}}
|
||||||
)}
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
</>
|
</>
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
|
@ -67,6 +67,7 @@ export type CurrentPlanInfoBackend = {
|
||||||
can_replace_logo: boolean
|
can_replace_logo: boolean
|
||||||
model_load_balancing_enabled: boolean
|
model_load_balancing_enabled: boolean
|
||||||
dataset_operator_enabled: boolean
|
dataset_operator_enabled: boolean
|
||||||
|
webapp_copyright_enabled: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export type SubscriptionItem = {
|
export type SubscriptionItem = {
|
||||||
|
|
|
@ -35,6 +35,7 @@ type ProviderContextState = {
|
||||||
enableReplaceWebAppLogo: boolean
|
enableReplaceWebAppLogo: boolean
|
||||||
modelLoadBalancingEnabled: boolean
|
modelLoadBalancingEnabled: boolean
|
||||||
datasetOperatorEnabled: boolean
|
datasetOperatorEnabled: boolean
|
||||||
|
webappCopyrightEnabled: boolean
|
||||||
}
|
}
|
||||||
const ProviderContext = createContext<ProviderContextState>({
|
const ProviderContext = createContext<ProviderContextState>({
|
||||||
modelProviders: [],
|
modelProviders: [],
|
||||||
|
@ -64,6 +65,7 @@ const ProviderContext = createContext<ProviderContextState>({
|
||||||
enableReplaceWebAppLogo: false,
|
enableReplaceWebAppLogo: false,
|
||||||
modelLoadBalancingEnabled: false,
|
modelLoadBalancingEnabled: false,
|
||||||
datasetOperatorEnabled: false,
|
datasetOperatorEnabled: false,
|
||||||
|
webappCopyrightEnabled: false,
|
||||||
})
|
})
|
||||||
|
|
||||||
export const useProviderContext = () => useContext(ProviderContext)
|
export const useProviderContext = () => useContext(ProviderContext)
|
||||||
|
@ -91,6 +93,7 @@ export const ProviderContextProvider = ({
|
||||||
const [enableReplaceWebAppLogo, setEnableReplaceWebAppLogo] = useState(false)
|
const [enableReplaceWebAppLogo, setEnableReplaceWebAppLogo] = useState(false)
|
||||||
const [modelLoadBalancingEnabled, setModelLoadBalancingEnabled] = useState(false)
|
const [modelLoadBalancingEnabled, setModelLoadBalancingEnabled] = useState(false)
|
||||||
const [datasetOperatorEnabled, setDatasetOperatorEnabled] = useState(false)
|
const [datasetOperatorEnabled, setDatasetOperatorEnabled] = useState(false)
|
||||||
|
const [webappCopyrightEnabled, setWebappCopyrightEnabled] = useState(false)
|
||||||
|
|
||||||
const fetchPlan = async () => {
|
const fetchPlan = async () => {
|
||||||
const data = await fetchCurrentPlanInfo()
|
const data = await fetchCurrentPlanInfo()
|
||||||
|
@ -105,6 +108,8 @@ export const ProviderContextProvider = ({
|
||||||
setModelLoadBalancingEnabled(true)
|
setModelLoadBalancingEnabled(true)
|
||||||
if (data.dataset_operator_enabled)
|
if (data.dataset_operator_enabled)
|
||||||
setDatasetOperatorEnabled(true)
|
setDatasetOperatorEnabled(true)
|
||||||
|
if (data.webapp_copyright_enabled)
|
||||||
|
setWebappCopyrightEnabled(true)
|
||||||
}
|
}
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
fetchPlan()
|
fetchPlan()
|
||||||
|
@ -123,6 +128,7 @@ export const ProviderContextProvider = ({
|
||||||
enableReplaceWebAppLogo,
|
enableReplaceWebAppLogo,
|
||||||
modelLoadBalancingEnabled,
|
modelLoadBalancingEnabled,
|
||||||
datasetOperatorEnabled,
|
datasetOperatorEnabled,
|
||||||
|
webappCopyrightEnabled,
|
||||||
}}>
|
}}>
|
||||||
{children}
|
{children}
|
||||||
</ProviderContext.Provider>
|
</ProviderContext.Provider>
|
||||||
|
|
Loading…
Reference in New Issue