Skip to content

Commit

Permalink
feat: add plausible change-requests-conflicts (#6024)
Browse files Browse the repository at this point in the history
  • Loading branch information
sjaanus committed Jan 24, 2024
1 parent 936fa44 commit b0ecfd4
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 32 deletions.
Expand Up @@ -35,6 +35,7 @@ import {
} from './ChangeRequestScheduledDialogs/changeRequestScheduledDialogs';
import { ScheduleChangeRequestDialog } from './ChangeRequestScheduledDialogs/ScheduleChangeRequestDialog';
import { usePlausibleTracker } from 'hooks/usePlausibleTracker';
import { PlausibleChangeRequestState } from '../changeRequest.types';

const StyledAsideBox = styled(Box)(({ theme }) => ({
width: '30%',
Expand Down Expand Up @@ -114,13 +115,18 @@ export const ChangeRequestOverview: FC = () => {
changeRequest.environment,
);

const hasSchedule = Boolean(
'schedule' in changeRequest && changeRequest.schedule?.scheduledAt,
);
const getCurrentState = (): PlausibleChangeRequestState => {
switch (changeRequest.state) {
case 'Scheduled':
return `${changeRequest.state} ${changeRequest.schedule.status}`;
default:
return changeRequest.state;
}
};

const onApplyChanges = async () => {
try {
await changeState(projectId, Number(id), {
await changeState(projectId, Number(id), getCurrentState(), {
state: 'Applied',
});
setShowApplyScheduledDialog(false);
Expand All @@ -131,24 +137,14 @@ export const ChangeRequestOverview: FC = () => {
title: 'Success',
text: 'Changes applied',
});
if (hasSchedule) {
trackEvent('scheduled-configuration-changes', {
props: {
action: 'scheduled-applied',
},
});
}
} catch (error: unknown) {
setToastApiError(formatUnknownError(error));
}
};

const onScheduleChangeRequest = async (scheduledDate: Date) => {
const plausibleAction = hasSchedule
? 'scheduled-updated'
: 'scheduled-created';
try {
await changeState(projectId, Number(id), {
await changeState(projectId, Number(id), getCurrentState(), {
state: 'Scheduled',
scheduledAt: scheduledDate.toISOString(),
});
Expand All @@ -160,11 +156,6 @@ export const ChangeRequestOverview: FC = () => {
title: 'Success',
text: 'Changes scheduled',
});
trackEvent('scheduled-configuration-changes', {
props: {
action: plausibleAction,
},
});
} catch (error: unknown) {
setToastApiError(formatUnknownError(error));
}
Expand All @@ -187,7 +178,7 @@ export const ChangeRequestOverview: FC = () => {

const onCancelChanges = async () => {
try {
await changeState(projectId, Number(id), {
await changeState(projectId, Number(id), getCurrentState(), {
state: 'Cancelled',
});
setShowCancelDialog(false);
Expand All @@ -205,7 +196,7 @@ export const ChangeRequestOverview: FC = () => {

const onReject = async (comment?: string) => {
try {
await changeState(projectId, Number(id), {
await changeState(projectId, Number(id), getCurrentState(), {
state: 'Rejected',
comment,
});
Expand All @@ -217,21 +208,14 @@ export const ChangeRequestOverview: FC = () => {
});
refetchChangeRequest();
refetchChangeRequestOpen();
if (hasSchedule) {
trackEvent('scheduled-configuration-changes', {
props: {
action: 'scheduled-rejected',
},
});
}
} catch (error: unknown) {
setToastApiError(formatUnknownError(error));
}
};

const onApprove = async () => {
try {
await changeState(projectId, Number(id), {
await changeState(projectId, Number(id), getCurrentState(), {
state: 'Approved',
});
refetchChangeRequest();
Expand Down
Expand Up @@ -81,7 +81,7 @@ export const ChangeRequestSidebar: VFC<IChangeRequestSidebarProps> = ({

const onReview = async (draftId: number, comment?: string) => {
try {
await changeState(project, draftId, {
await changeState(project, draftId, 'Draft', {
state: 'In review',
comment,
});
Expand Down
6 changes: 6 additions & 0 deletions frontend/src/component/changeRequest/changeRequest.types.ts
Expand Up @@ -100,6 +100,12 @@ export interface IChangeRequestChangeBase {
};
}

export type PlausibleChangeRequestState =
| Exclude<ChangeRequestState, 'Scheduled'>
| 'Scheduled pending'
| 'Scheduled failed'
| 'Scheduled suspended';

export type ChangeRequestState =
| 'Draft'
| 'Approved'
Expand Down
@@ -1,5 +1,6 @@
import useAPI from '../useApi/useApi';
import { usePlausibleTracker } from '../../../usePlausibleTracker';
import { PlausibleChangeRequestState } from 'component/changeRequest/changeRequest.types';

export interface IChangeSchema {
feature: string | null;
Expand Down Expand Up @@ -54,6 +55,7 @@ export const useChangeRequestApi = () => {
const changeState = async (
project: string,
changeRequestId: number,
previousState: PlausibleChangeRequestState,
payload: {
state:
| 'Approved'
Expand All @@ -69,6 +71,7 @@ export const useChangeRequestApi = () => {
trackEvent('change_request', {
props: {
eventType: payload.state,
previousState,
},
});

Expand Down
1 change: 0 additions & 1 deletion frontend/src/hooks/usePlausibleTracker.ts
Expand Up @@ -52,7 +52,6 @@ export type CustomEvents =
| 'dependent_features'
| 'playground_token_input_used'
| 'search-filter'
| 'scheduled-configuration-changes'
| 'search-feature-buttons'
| 'new-strategy-form'
| 'feedback'
Expand Down

0 comments on commit b0ecfd4

Please sign in to comment.