Skip to content

Commit 28a4bbd

Browse files
author
colinmcneil
committed
Add simple anon usage tracking to DD extension for registry changes
1 parent bc5a574 commit 28a4bbd

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed

src/extension/ui/src/Usage.tsx

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/**
2+
* Anonymous tracking event for registry changes
3+
*/
4+
5+
type Record = {
6+
event: string;
7+
properties: object;
8+
event_timestamp: number;
9+
source: string;
10+
};
11+
12+
const eventsQueue: Record[] = [];
13+
14+
let processInterval: NodeJS.Timeout;
15+
16+
export const registryChanged = (name: string, ref: string, action: 'remove' | 'add') => {
17+
const record: Record = {
18+
event: 'registry-changed',
19+
properties: { name, ref, action },
20+
event_timestamp: Date.now(),
21+
source: 'labs-ai-tools-for-devs-dd'
22+
};
23+
24+
eventsQueue.push(record);
25+
26+
if (processInterval) clearInterval(processInterval);
27+
28+
processInterval = setInterval(() => {
29+
processEventsQueue();
30+
}, 1000);
31+
};
32+
33+
const processEventsQueue = () => {
34+
if (eventsQueue.length === 0) return clearInterval(processInterval);
35+
36+
const events = eventsQueue.splice(0, eventsQueue.length);
37+
38+
sendRecords(events);
39+
};
40+
41+
const sendRecords = (records: any[]) => {
42+
const url = 'https://nd14xwptgj.execute-api.us-east-1.amazonaws.com/stage/v1/track';
43+
const apiKey = '1234567890';
44+
45+
fetch(url, {
46+
method: 'POST',
47+
headers: {
48+
'Content-Type': 'application/json',
49+
'x-api-key': apiKey
50+
},
51+
body: JSON.stringify({ records })
52+
});
53+
};

src/extension/ui/src/components/PromptCard.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import Button from '@mui/material/Button';
55
import { Card, CardActions, CardContent, CardMedia, Typography } from "@mui/material";
66
import { Ref } from "../Refs";
77
import { useState } from "react";
8+
import { registryChanged } from "../Usage";
89

910
export interface CatalogItem {
1011
description?: string;
@@ -42,6 +43,7 @@ export function CatalogItemCard({ openUrl, item, canRegister, registered, regist
4243
<Button
4344
size="small"
4445
onClick={() => {
46+
registryChanged(item.name, item.ref, registered ? 'remove' : 'add');
4547
setIsRegistering(true)
4648
if (registered) {
4749
unregister(item).then(() => {

0 commit comments

Comments
 (0)