refactor webhookAnalytics call and enrich analytics module (#8253)
**TLDR** Refactor WebhoonAnalytics Graph to a more abstract version AnalyticsGraph (in analytics module). Thus enabling the components to be used on different instances (ex: new endpoint, new kind of graph). **In order to test:** 1. Set ANALYTICS_ENABLED to true 2. Set TINYBIRD_JWT_TOKEN to the ADMIN token from the workspace twenty_analytics_playground 3. Set TINYBIRD_JWT_TOKEN to the datasource or your admin token from the workspace twenty_analytics_playground 4. Create a Webhook in twenty and set wich events it needs to track 5. Run twenty-worker in order to make the webhooks work. 6. Do your tasks in order to populate the data 7. Enter to settings> webhook>your webhook and the statistics section should be displayed. --------- Co-authored-by: Félix Malfait <felix@twenty.com>
This commit is contained in:
committed by
GitHub
parent
f9c076df31
commit
f06cdbdfc6
@ -0,0 +1,38 @@
|
||||
import { ANALYTICS_ENDPOINT_TYPE_MAP } from '@/analytics/constants/AnalyticsEndpointTypeMap';
|
||||
import { ANALYTICS_GRAPH_OPTION_MAP } from '@/analytics/constants/AnalyticsGraphOptionMap';
|
||||
import { AnalyticsComponentProps } from '@/analytics/types/AnalyticsComponentProps';
|
||||
import { computeStartEndDate } from '@/analytics/utils/computeStartEndDate';
|
||||
|
||||
type fetchGraphDataOrThrowProps = AnalyticsComponentProps & {
|
||||
windowLength: '7D' | '1D' | '12H' | '4H';
|
||||
tinybirdJwt: string;
|
||||
};
|
||||
|
||||
export const fetchGraphDataOrThrow = async ({
|
||||
recordId,
|
||||
windowLength,
|
||||
tinybirdJwt,
|
||||
endpointName,
|
||||
}: fetchGraphDataOrThrowProps) => {
|
||||
const recordType = ANALYTICS_ENDPOINT_TYPE_MAP[endpointName];
|
||||
const queryString = new URLSearchParams({
|
||||
...ANALYTICS_GRAPH_OPTION_MAP[windowLength],
|
||||
...computeStartEndDate(windowLength),
|
||||
...{ [`${recordType}Id`]: recordId },
|
||||
}).toString();
|
||||
|
||||
const response = await fetch(
|
||||
`https://api.eu-central-1.aws.tinybird.co/v0/pipes/${endpointName}.json?${queryString}`,
|
||||
{
|
||||
headers: {
|
||||
Authorization: 'Bearer ' + tinybirdJwt,
|
||||
},
|
||||
},
|
||||
);
|
||||
const result = await response.json();
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(result.error);
|
||||
}
|
||||
return result.data;
|
||||
};
|
||||
Reference in New Issue
Block a user