Skip to content

Commit

Permalink
fix: default stickiness
Browse files Browse the repository at this point in the history
  • Loading branch information
kwasniew committed Jul 25, 2023
1 parent f4f06d5 commit dfd44b9
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 24 deletions.
Expand Up @@ -10,11 +10,11 @@ import { useNavigate } from 'react-router-dom';
import useToast from 'hooks/useToast';
import { IFeatureStrategy, IFeatureStrategyPayload } from 'interfaces/strategy';
import {
createStrategyPayload,
featureStrategyDocsLink,
featureStrategyDocsLinkLabel,
featureStrategyHelp,
formatFeaturePath,
createStrategyPayload,
featureStrategyDocsLinkLabel,
} from '../FeatureStrategyEdit/FeatureStrategyEdit';
import { CREATE_FEATURE_STRATEGY } from 'component/providers/AccessProvider/permissions';
import { ISegment } from 'interfaces/segment';
Expand All @@ -31,23 +31,19 @@ import { useChangeRequestsEnabled } from 'hooks/useChangeRequestsEnabled';
import { usePendingChangeRequests } from 'hooks/api/getters/usePendingChangeRequests/usePendingChangeRequests';
import { usePlausibleTracker } from 'hooks/usePlausibleTracker';
import useQueryParams from 'hooks/useQueryParams';
import useProject from 'hooks/api/getters/useProject/useProject';
import { useSegments } from 'hooks/api/getters/useSegments/useSegments';
import { DEFAULT_STRATEGY } from 'component/project/Project/ProjectSettings/ProjectDefaultStrategySettings/ProjectEnvironment/ProjectEnvironmentDefaultStrategy/EditDefaultStrategy';
import { useDefaultStrategy } from '../../../project/Project/ProjectSettings/ProjectDefaultStrategySettings/ProjectEnvironment/ProjectEnvironmentDefaultStrategy/EditDefaultStrategy';

export const FeatureStrategyCreate = () => {
const projectId = useRequiredPathParam('projectId');
const featureId = useRequiredPathParam('featureId');
const environmentId = useRequiredQueryParam('environmentId');
const strategyName = useRequiredQueryParam('strategyName');
const { strategy: defaultStrategy, defaultStrategyFallback } =
useDefaultStrategy(projectId, environmentId);
const shouldUseDefaultStrategy: boolean = JSON.parse(
useQueryParams().get('defaultStrategy') || 'false'
);
const { project } = useProject(projectId);

const defaultStrategy = project.environments.find(
env => env.environment === environmentId
)?.defaultStrategy;

const { segments: allSegments } = useSegments();
const strategySegments = (allSegments || []).filter(segment => {
Expand Down Expand Up @@ -101,7 +97,7 @@ export const FeatureStrategyCreate = () => {

useEffect(() => {
if (shouldUseDefaultStrategy) {
const strategyTemplate = defaultStrategy || DEFAULT_STRATEGY;
const strategyTemplate = defaultStrategy || defaultStrategyFallback;
if (strategyTemplate.parameters?.groupId === '' && featureId) {
setStrategy({
...strategyTemplate,
Expand Down
Expand Up @@ -20,28 +20,42 @@ import { ProjectDefaultStrategyForm } from './ProjectDefaultStrategyForm';
import { CreateFeatureStrategySchema } from 'openapi';
import useProject from 'hooks/api/getters/useProject/useProject';

export const DEFAULT_STRATEGY = {
name: 'flexibleRollout',
constraints: [],
parameters: {
rollout: '100',
stickiness: 'default',
groupId: '',
},
export const useDefaultStrategy = (
projectId: string,
environmentId: string
) => {
const { project, refetch } = useProject(projectId);

const defaultStrategyFallback = {
name: 'flexibleRollout',
constraints: [],
parameters: {
rollout: '100',
stickiness: project.defaultStickiness,
groupId: '',
},
};

const strategy = project.environments.find(
env => env.environment === environmentId
)?.defaultStrategy;

return { defaultStrategyFallback, strategy, refetch };
};

const EditDefaultStrategy = () => {
const projectId = useRequiredPathParam('projectId');
const environmentId = useRequiredQueryParam('environmentId');

const { project, refetch: refetchProject } = useProject(projectId);

const strategy = project.environments.find(
env => env.environment === environmentId
)?.defaultStrategy;
const {
defaultStrategyFallback,
strategy,
refetch: refetchProject,
} = useDefaultStrategy(projectId, environmentId);

const [defaultStrategy, setDefaultStrategy] = useState<
CreateFeatureStrategySchema | undefined
>(strategy || DEFAULT_STRATEGY);
>(strategy || defaultStrategyFallback);

const [segments, setSegments] = useState<ISegment[]>([]);
const { updateDefaultStrategy, loading } = useProjectApi();
Expand Down

0 comments on commit dfd44b9

Please sign in to comment.