1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-02-14 00:19:16 +01:00

feat: export/import plausible tracking (#3145)

This commit is contained in:
Jaanus Sellin 2023-02-17 16:02:07 +02:00 committed by GitHub
parent 9a43658710
commit f7cf334c80
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 36 additions and 4 deletions

View File

@ -12,6 +12,7 @@ import { ActionsContainer } from '../ActionsContainer';
import { IMPORT_CONFIGURATION_BUTTON } from 'utils/testIds';
import PermissionButton from 'component/common/PermissionButton/PermissionButton';
import { CREATE_FEATURE } from 'component/providers/AccessProvider/permissions';
import { usePlausibleTracker } from 'hooks/usePlausibleTracker';
const ImportInfoContainer = styled(Box)(({ theme }) => ({
backgroundColor: theme.palette.secondaryContainer,
@ -93,14 +94,32 @@ export const ValidationStage: FC<{
}> = ({ environment, project, payload, onClose, onBack, onSubmit }) => {
const { validateImport } = useValidateImportApi();
const { setToastData } = useToast();
const { trackEvent } = usePlausibleTracker();
const [validationResult, setValidationResult] = useState<IValidationSchema>(
{ errors: [], warnings: [], permissions: [] }
);
const [validJSON, setValidJSON] = useState(true);
const trackValidation = (result: IValidationSchema) => {
if (result.errors.length > 0 || result.permissions.length > 0) {
trackEvent('export_import', {
props: {
eventType: `validation fail`,
},
});
} else {
trackEvent('export_import', {
props: {
eventType: `validation success`,
},
});
}
setValidationResult(result);
};
useEffect(() => {
validateImport({ environment, project, data: JSON.parse(payload) })
.then(setValidationResult)
.then(trackValidation)
.catch(error => {
setValidJSON(false);
setToastData({

View File

@ -1,10 +1,12 @@
import { ExportQuerySchema } from 'openapi';
import useAPI from '../useApi/useApi';
import { usePlausibleTracker } from 'hooks/usePlausibleTracker';
export const useExportApi = () => {
const { makeRequest, createRequest, errors, loading } = useAPI({
propagateErrors: true,
});
const { trackEvent } = usePlausibleTracker();
const createExport = async (payload: ExportQuerySchema) => {
const path = `api/admin/features-batch/export`;
@ -15,7 +17,11 @@ export const useExportApi = () => {
try {
const res = await makeRequest(req.caller, req.id);
trackEvent('export_import', {
props: {
eventType: `features exported`,
},
});
return res;
} catch (e) {
throw e;

View File

@ -1,4 +1,5 @@
import useAPI from '../useApi/useApi';
import { usePlausibleTracker } from 'hooks/usePlausibleTracker';
export interface ImportQuerySchema {
project: string;
@ -10,6 +11,7 @@ export const useImportApi = () => {
const { makeRequest, createRequest, errors, loading } = useAPI({
propagateErrors: true,
});
const { trackEvent } = usePlausibleTracker();
const createImport = async (payload: ImportQuerySchema) => {
const path = `api/admin/features-batch/full-import`;
@ -20,7 +22,11 @@ export const useImportApi = () => {
try {
const res = await makeRequest(req.caller, req.id);
trackEvent('export_import', {
props: {
eventType: `features imported`,
},
});
return res;
} catch (e) {
throw e;

View File

@ -18,7 +18,8 @@ type CustomEvents =
| 'hidden_environment'
| 'project_overview'
| 'suggest_tags'
| 'unknown_ui_error';
| 'unknown_ui_error'
| 'export_import';
export const usePlausibleTracker = () => {
const plausible = useContext(PlausibleContext);