forked from github/plane
feat: added tracker for views (#675)
This commit is contained in:
parent
0cf498651c
commit
353197f583
@ -14,6 +14,7 @@ import type {
|
|||||||
IPageBlock,
|
IPageBlock,
|
||||||
IProject,
|
IProject,
|
||||||
IState,
|
IState,
|
||||||
|
IView,
|
||||||
IWorkspace,
|
IWorkspace,
|
||||||
} from "types";
|
} from "types";
|
||||||
|
|
||||||
@ -37,6 +38,8 @@ type ModuleEventType = "MODULE_CREATE" | "MODULE_UPDATE" | "MODULE_DELETE";
|
|||||||
|
|
||||||
type PagesEventType = "PAGE_CREATE" | "PAGE_UPDATE" | "PAGE_DELETE";
|
type PagesEventType = "PAGE_CREATE" | "PAGE_UPDATE" | "PAGE_DELETE";
|
||||||
|
|
||||||
|
type ViewEventType = "VIEW_CREATE" | "VIEW_UPDATE" | "VIEW_DELETE";
|
||||||
|
|
||||||
type PageBlocksEventType =
|
type PageBlocksEventType =
|
||||||
| "PAGE_BLOCK_CREATE"
|
| "PAGE_BLOCK_CREATE"
|
||||||
| "PAGE_BLOCK_UPDATE"
|
| "PAGE_BLOCK_UPDATE"
|
||||||
@ -365,6 +368,30 @@ class TrackEventServices extends APIService {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async trackViewEvent(data: IView, eventName: ViewEventType): Promise<any> {
|
||||||
|
let payload: any;
|
||||||
|
if (eventName === "VIEW_DELETE") payload = data;
|
||||||
|
else
|
||||||
|
payload = {
|
||||||
|
labels: Boolean(data.query_data.labels),
|
||||||
|
assignees: Boolean(data.query_data.assignees),
|
||||||
|
priority: Boolean(data.query_data.priority),
|
||||||
|
state: Boolean(data.query_data.state),
|
||||||
|
created_by: Boolean(data.query_data.created_by),
|
||||||
|
};
|
||||||
|
|
||||||
|
return this.request({
|
||||||
|
url: "/api/track-event",
|
||||||
|
method: "POST",
|
||||||
|
data: {
|
||||||
|
eventName,
|
||||||
|
extra: {
|
||||||
|
...payload,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const trackEventServices = new TrackEventServices();
|
const trackEventServices = new TrackEventServices();
|
||||||
|
@ -1,10 +1,15 @@
|
|||||||
// services
|
// services
|
||||||
import APIService from "services/api.service";
|
import APIService from "services/api.service";
|
||||||
|
import trackEventServices from "services/track-event.service";
|
||||||
|
|
||||||
// types
|
// types
|
||||||
import { IView } from "types/views";
|
import { IView } from "types/views";
|
||||||
|
|
||||||
const { NEXT_PUBLIC_API_BASE_URL } = process.env;
|
const { NEXT_PUBLIC_API_BASE_URL } = process.env;
|
||||||
|
|
||||||
|
const trackEvent =
|
||||||
|
process.env.NEXT_PUBLIC_TRACK_EVENTS === "true" || process.env.NEXT_PUBLIC_TRACK_EVENTS === "1";
|
||||||
|
|
||||||
class ViewServices extends APIService {
|
class ViewServices extends APIService {
|
||||||
constructor() {
|
constructor() {
|
||||||
super(NEXT_PUBLIC_API_BASE_URL || "http://localhost:8000");
|
super(NEXT_PUBLIC_API_BASE_URL || "http://localhost:8000");
|
||||||
@ -12,7 +17,10 @@ class ViewServices extends APIService {
|
|||||||
|
|
||||||
async createView(workspaceSlug: string, projectId: string, data: IView): Promise<any> {
|
async createView(workspaceSlug: string, projectId: string, data: IView): Promise<any> {
|
||||||
return this.post(`/api/workspaces/${workspaceSlug}/projects/${projectId}/views/`, data)
|
return this.post(`/api/workspaces/${workspaceSlug}/projects/${projectId}/views/`, data)
|
||||||
.then((response) => response?.data)
|
.then((response) => {
|
||||||
|
if (trackEvent) trackEventServices.trackViewEvent(response?.data, "VIEW_CREATE");
|
||||||
|
return response?.data;
|
||||||
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
throw error?.response?.data;
|
throw error?.response?.data;
|
||||||
});
|
});
|
||||||
@ -25,7 +33,10 @@ class ViewServices extends APIService {
|
|||||||
data: IView
|
data: IView
|
||||||
): Promise<any> {
|
): Promise<any> {
|
||||||
return this.put(`/api/workspaces/${workspaceSlug}/projects/${projectId}/views/${viewId}/`, data)
|
return this.put(`/api/workspaces/${workspaceSlug}/projects/${projectId}/views/${viewId}/`, data)
|
||||||
.then((response) => response?.data)
|
.then((response) => {
|
||||||
|
if (trackEvent) trackEventServices.trackViewEvent(response?.data, "VIEW_UPDATE");
|
||||||
|
return response?.data;
|
||||||
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
throw error?.response?.data;
|
throw error?.response?.data;
|
||||||
});
|
});
|
||||||
@ -41,7 +52,10 @@ class ViewServices extends APIService {
|
|||||||
`/api/workspaces/${workspaceSlug}/projects/${projectId}/views/${viewId}/`,
|
`/api/workspaces/${workspaceSlug}/projects/${projectId}/views/${viewId}/`,
|
||||||
data
|
data
|
||||||
)
|
)
|
||||||
.then((response) => response?.data)
|
.then((response) => {
|
||||||
|
if (trackEvent) trackEventServices.trackViewEvent(response?.data, "VIEW_UPDATE");
|
||||||
|
return response?.data;
|
||||||
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
throw error?.response?.data;
|
throw error?.response?.data;
|
||||||
});
|
});
|
||||||
@ -49,7 +63,10 @@ class ViewServices extends APIService {
|
|||||||
|
|
||||||
async deleteView(workspaceSlug: string, projectId: string, viewId: string): Promise<any> {
|
async deleteView(workspaceSlug: string, projectId: string, viewId: string): Promise<any> {
|
||||||
return this.delete(`/api/workspaces/${workspaceSlug}/projects/${projectId}/views/${viewId}/`)
|
return this.delete(`/api/workspaces/${workspaceSlug}/projects/${projectId}/views/${viewId}/`)
|
||||||
.then((response) => response?.data)
|
.then((response) => {
|
||||||
|
if (trackEvent) trackEventServices.trackViewEvent(response?.data, "VIEW_DELETE");
|
||||||
|
return response?.data;
|
||||||
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
throw error?.response?.data;
|
throw error?.response?.data;
|
||||||
});
|
});
|
||||||
@ -111,7 +128,6 @@ class ViewServices extends APIService {
|
|||||||
throw error?.response?.data;
|
throw error?.response?.data;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default new ViewServices();
|
export default new ViewServices();
|
||||||
|
Loading…
Reference in New Issue
Block a user