fix(core): workspace feature should be workspace specific (#5677)

fix TOV-429
This commit is contained in:
Peng Xiao
2024-01-24 03:07:50 +00:00
parent 994ab96688
commit a687e7c0ed
7 changed files with 43 additions and 30 deletions
@@ -240,7 +240,7 @@ const WorkspaceListItem = ({
const isCurrent = currentWorkspace.id === meta.id;
const t = useAFFiNEI18N();
const isOwner = useIsWorkspaceOwner(meta);
const availableFeatures = useWorkspaceAvailableFeatures();
const availableFeatures = useWorkspaceAvailableFeatures(meta);
const onClickPreference = useCallback(() => {
onClick('preference');
@@ -8,6 +8,7 @@ import {
} from '@affine/core/hooks/use-workspace-features';
import { FeatureType } from '@affine/graphql';
import { useAFFiNEI18N } from '@affine/i18n/hooks';
import type { WorkspaceMetadata } from '@affine/workspace/metadata';
import { useAtom } from 'jotai';
import { atomWithStorage } from 'jotai/utils';
import { Suspense, useCallback, useState } from 'react';
@@ -74,16 +75,18 @@ const ExperimentalFeaturesPrompt = ({
interface ExperimentalFeaturesItemProps {
feature: FeatureType;
title: React.ReactNode;
workspaceMetadata: WorkspaceMetadata;
}
const ExperimentalFeaturesItem = ({
feature,
title,
workspaceMetadata,
}: ExperimentalFeaturesItemProps) => {
const enabledFeatures = useWorkspaceEnabledFeatures();
const enabledFeatures = useWorkspaceEnabledFeatures(workspaceMetadata);
const enabled = enabledFeatures.includes(feature);
const [localEnabled, setLocalEnabled] = useState(enabled);
const { trigger, isMutating } = useSetWorkspaceFeature();
const { trigger, isMutating } = useSetWorkspaceFeature(workspaceMetadata);
const onChange = useCallback(
(checked: boolean) => {
setLocalEnabled(checked);
@@ -104,9 +107,13 @@ const ExperimentalFeaturesItem = ({
);
};
const ExperimentalFeaturesMain = () => {
const ExperimentalFeaturesMain = ({
workspaceMetadata,
}: {
workspaceMetadata: WorkspaceMetadata;
}) => {
const t = useAFFiNEI18N();
const features = useWorkspaceAvailableFeatures();
const features = useWorkspaceAvailableFeatures(workspaceMetadata);
return (
<>
@@ -119,6 +126,7 @@ const ExperimentalFeaturesMain = () => {
{features.includes(FeatureType.Copilot) ? (
<ExperimentalFeaturesItem
title="AI POC"
workspaceMetadata={workspaceMetadata}
feature={FeatureType.Copilot}
/>
) : null}
@@ -132,7 +140,11 @@ const experimentalFeaturesDisclaimerAtom = atomWithStorage(
false
);
export const ExperimentalFeatures = () => {
export const ExperimentalFeatures = ({
workspaceMetadata,
}: {
workspaceMetadata: WorkspaceMetadata;
}) => {
const [enabled, setEnabled] = useAtom(experimentalFeaturesDisclaimerAtom);
const handleConfirm = useAsyncCallback(async () => {
setEnabled(true);
@@ -142,7 +154,7 @@ export const ExperimentalFeatures = () => {
} else {
return (
<Suspense fallback={<Loading />}>
<ExperimentalFeaturesMain />
<ExperimentalFeaturesMain workspaceMetadata={workspaceMetadata} />
</Suspense>
);
}
@@ -22,6 +22,6 @@ export const WorkspaceSetting = ({
/>
);
case 'experimental-features':
return <ExperimentalFeatures />;
return <ExperimentalFeatures workspaceMetadata={workspaceMetadata} />;
}
};