mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-09-02 06:39:46 +08:00
feat(core): add globalcontext info to mixpanel track (#7681)
This commit is contained in:
@@ -6,6 +6,11 @@ import type { GeneralMixpanelEvent, MixpanelEvents } from './events';
|
||||
|
||||
const logger = new DebugLogger('mixpanel');
|
||||
|
||||
type Middleware = (
|
||||
name: string,
|
||||
properties?: Record<string, unknown>
|
||||
) => Record<string, unknown>;
|
||||
|
||||
function createMixpanel() {
|
||||
let mixpanel;
|
||||
if (process.env.MIXPANEL_TOKEN) {
|
||||
@@ -22,6 +27,8 @@ function createMixpanel() {
|
||||
);
|
||||
}
|
||||
|
||||
const middlewares = new Set<Middleware>();
|
||||
|
||||
const wrapped = {
|
||||
reset() {
|
||||
mixpanel.reset();
|
||||
@@ -40,8 +47,21 @@ function createMixpanel() {
|
||||
: Record<string, unknown>) &
|
||||
GeneralMixpanelEvent,
|
||||
>(event_name: T, properties?: P) {
|
||||
logger.debug('track', event_name, properties);
|
||||
mixpanel.track(event_name, properties);
|
||||
const middlewareProperties = Array.from(middlewares).reduce(
|
||||
(acc, middleware) => {
|
||||
return middleware(event_name, acc);
|
||||
},
|
||||
properties as Record<string, unknown>
|
||||
);
|
||||
logger.debug('track', event_name, middlewareProperties);
|
||||
|
||||
mixpanel.track(event_name as string, middlewareProperties);
|
||||
},
|
||||
middleware(cb: Middleware): () => void {
|
||||
middlewares.add(cb);
|
||||
return () => {
|
||||
middlewares.delete(cb);
|
||||
};
|
||||
},
|
||||
opt_out_tracking() {
|
||||
mixpanel.opt_out_tracking();
|
||||
|
||||
Reference in New Issue
Block a user