Compare commits

...

1 Commits

Author SHA1 Message Date
orangecoding
248e4d2562 improve tracking 2026-02-04 14:41:55 +01:00
2 changed files with 57 additions and 62 deletions

View File

@@ -15,10 +15,39 @@ const deviceId = getUniqueId() || 'N/A';
const version = await getPackageVersion(); const version = await getPackageVersion();
const FREDY_TRACKING_URL = 'https://fredy.orange-coding.net/tracking'; const FREDY_TRACKING_URL = 'https://fredy.orange-coding.net/tracking';
export const trackMainEvent = async () => { const staticTrackingData = {
try { operatingSystem: os.platform(),
osVersion: os.release(),
arch: process.arch,
language: process.env.LANG || 'en',
nodeVersion: process.version || 'N/A',
deviceId,
version,
};
const shouldTrack = async () => {
const settings = await getSettings(); const settings = await getSettings();
if (settings.analyticsEnabled && !inDevMode()) { return settings.analyticsEnabled && !inDevMode();
};
const sendTrackingData = async (endpoint, payload) => {
try {
const response = await fetch(`${FREDY_TRACKING_URL}${endpoint}`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: payload ? JSON.stringify(payload) : undefined,
});
if (!response.ok) {
logger.warn(`Error sending tracking data to ${endpoint}. Status: ${response.status}`);
}
} catch (error) {
logger.warn(`Error sending tracking data to ${endpoint}`, error);
}
};
export const trackMainEvent = async () => {
if (!(await shouldTrack())) return;
const activeProvider = new Set(); const activeProvider = new Set();
const activeAdapter = new Set(); const activeAdapter = new Set();
@@ -30,40 +59,23 @@ export const trackMainEvent = async () => {
job.notificationAdapter.forEach((adapter) => activeAdapter.add(adapter.id)); job.notificationAdapter.forEach((adapter) => activeAdapter.add(adapter.id));
}); });
const trackingObj = enrichTrackingObject({ const trackingObj = await enrichTrackingObject({
adapter: Array.from(activeAdapter), adapter: Array.from(activeAdapter),
provider: Array.from(activeProvider), provider: Array.from(activeProvider),
}); });
await fetch(`${FREDY_TRACKING_URL}/main`, { await sendTrackingData('/main', trackingObj);
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(trackingObj),
});
}
}
} catch (error) {
logger.warn('Error sending tracking data', error);
} }
}; };
export const trackFeature = async (feature) => { export const trackFeature = async (feature) => {
try { if (!(await shouldTrack())) return;
const settings = await getSettings();
if (settings.analyticsEnabled && !inDevMode()) {
const trackingObj = await enrichTrackingObject({ const trackingObj = await enrichTrackingObject({
feature, feature,
}); });
await fetch(`${FREDY_TRACKING_URL}/feature`, { await sendTrackingData('/feature', trackingObj);
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(trackingObj),
});
}
} catch (error) {
logger.warn('Error tracking feature', error);
}
}; };
/** /**
@@ -72,34 +84,17 @@ export const trackFeature = async (feature) => {
export async function trackDemoAccessed() { export async function trackDemoAccessed() {
const settings = await getSettings(); const settings = await getSettings();
if (settings.analyticsEnabled && !inDevMode() && settings.demoMode) { if (settings.analyticsEnabled && !inDevMode() && settings.demoMode) {
try { const trackingObj = await enrichTrackingObject({});
await fetch(`${FREDY_TRACKING_URL}/demo/accessed`, { await sendTrackingData('/demo/accessed', trackingObj);
method: 'POST',
headers: { 'Content-Type': 'application/json' },
});
} catch (error) {
logger.warn('Error sending tracking data', error);
}
} }
} }
async function enrichTrackingObject(trackingObject) { async function enrichTrackingObject(trackingObject) {
const settings = await getSettings(); const settings = await getSettings();
const operatingSystem = os.platform();
const osVersion = os.release();
const arch = process.arch;
const language = process.env.LANG || 'en';
const nodeVersion = process.version || 'N/A';
return { return {
...trackingObject, ...trackingObject,
...staticTrackingData,
isDemo: settings.demoMode, isDemo: settings.demoMode,
operatingSystem,
osVersion,
arch,
nodeVersion,
language,
deviceId,
version,
}; };
} }

View File

@@ -1,6 +1,6 @@
{ {
"name": "fredy", "name": "fredy",
"version": "19.3.5", "version": "19.3.6",
"description": "[F]ind [R]eal [E]states [d]amn eas[y].", "description": "[F]ind [R]eal [E]states [d]amn eas[y].",
"scripts": { "scripts": {
"prepare": "husky", "prepare": "husky",