53 lines
1.4 KiB
TypeScript
53 lines
1.4 KiB
TypeScript
|
|
import {
|
||
|
|
ReduxActionTypes,
|
||
|
|
type ReduxActionType,
|
||
|
|
} from "@appsmith/constants/ReduxActionConstants";
|
||
|
|
import type { Action } from "entities/Action";
|
||
|
|
import AnalyticsUtil from "utils/AnalyticsUtil";
|
||
|
|
import {
|
||
|
|
RequestPayloadAnalyticsPath,
|
||
|
|
cleanValuesInObjectForHashing,
|
||
|
|
generateHashFromString,
|
||
|
|
} from "./helper";
|
||
|
|
import get from "lodash/get";
|
||
|
|
import log from "loglevel";
|
||
|
|
|
||
|
|
export function* sendAnalyticsEventSaga(
|
||
|
|
type: ReduxActionType,
|
||
|
|
payload: unknown,
|
||
|
|
) {
|
||
|
|
try {
|
||
|
|
switch (type) {
|
||
|
|
case ReduxActionTypes.UPDATE_ACTION_INIT:
|
||
|
|
const { action, pageName } = payload as {
|
||
|
|
action: Action;
|
||
|
|
pageName: string;
|
||
|
|
};
|
||
|
|
const cleanActionConfiguration = cleanValuesInObjectForHashing(
|
||
|
|
action.actionConfiguration,
|
||
|
|
);
|
||
|
|
const actionConfigurationHash: string = yield generateHashFromString(
|
||
|
|
JSON.stringify(cleanActionConfiguration),
|
||
|
|
);
|
||
|
|
|
||
|
|
const originalActionId = get(
|
||
|
|
action,
|
||
|
|
`${RequestPayloadAnalyticsPath}.originalActionId`,
|
||
|
|
action.id,
|
||
|
|
);
|
||
|
|
|
||
|
|
AnalyticsUtil.logEvent("SAVE_ACTION", {
|
||
|
|
actionName: action.name,
|
||
|
|
pageName: pageName,
|
||
|
|
originalActionId: originalActionId,
|
||
|
|
actionId: action.id,
|
||
|
|
hash: actionConfigurationHash,
|
||
|
|
actionType: action.pluginType,
|
||
|
|
actionPlugin: action.pluginId,
|
||
|
|
});
|
||
|
|
}
|
||
|
|
} catch (e) {
|
||
|
|
log.error("Failed to send analytics event");
|
||
|
|
}
|
||
|
|
}
|