diff --git a/src/core/WakaTimeCore.ts b/src/core/WakaTimeCore.ts index 64e0681..e85d70b 100644 --- a/src/core/WakaTimeCore.ts +++ b/src/core/WakaTimeCore.ts @@ -12,7 +12,12 @@ import { getSettings, Settings } from '../utils/settings'; import { getApiUrl } from '../utils/user'; import config, { ExtensionStatus } from '../config/config'; -import { EntityType, Heartbeat, HeartbeatsBulkResponse } from '../types/heartbeats'; +import { + EntityType, + Heartbeat, + HeartbeatsBulkResponse, + HeartbeatThirdParty, +} from '../types/heartbeats'; class WakaTimeCore { tabsWithDevtoolsOpen: Tabs.Tab[]; @@ -179,11 +184,25 @@ class WakaTimeCore { if (heartbeats.length === 0) return; const userAgent = await this.getUserAgent(); + const apiUrl = await getApiUrl(); try { const request: RequestInit = { body: JSON.stringify( heartbeats.map((heartbeat) => { + if (!apiUrl.includes('wakatime.com')) { + const hb = { + branch: heartbeat.branch, + category: heartbeat.category, + entity: heartbeat.entity, + language: heartbeat.language, + plugin: heartbeat.plugin, + project: heartbeat.project, + time: parseFloat(heartbeat.time), + type: heartbeat.type, + } as HeartbeatThirdParty; + return { ...hb, userAgent }; + } return { ...heartbeat, userAgent }; }), ), @@ -196,7 +215,6 @@ class WakaTimeCore { }; } - const apiUrl = await getApiUrl(); const url = `${apiUrl}${settings.heartbeatApiEndPoint}?api_key=${settings.apiKey}`; const response = await fetch(url, request); if (response.status === 401) { diff --git a/src/types/heartbeats.ts b/src/types/heartbeats.ts index c409e78..eb774bf 100644 --- a/src/types/heartbeats.ts +++ b/src/types/heartbeats.ts @@ -10,6 +10,10 @@ export interface Heartbeat { type: EntityType; } +export interface HeartbeatThirdParty extends Omit { + time: number; +} + export enum Category { browsing = 'browsing', code_reviewing = 'code reviewing',