Merge pull request #263 from wakatime/fix-187

Detect code review category based on GitHub url
This commit is contained in:
Alan Hamlett
2024-08-20 09:18:10 +02:00
committed by GitHub
2 changed files with 19 additions and 2 deletions

View File

@@ -8,7 +8,7 @@ import config from '../config/config';
import { SendHeartbeat } from '../types/heartbeats'; import { SendHeartbeat } from '../types/heartbeats';
import { GrandTotal, SummariesPayload } from '../types/summaries'; import { GrandTotal, SummariesPayload } from '../types/summaries';
import { ApiKeyPayload, AxiosUserResponse, User } from '../types/user'; import { ApiKeyPayload, AxiosUserResponse, User } from '../types/user';
import { IS_EDGE, IS_FIREFOX, generateProjectFromDevSites } from '../utils'; import { IS_EDGE, IS_FIREFOX, generateProjectFromDevSites, isCodeReviewing } from '../utils';
import { getApiKey } from '../utils/apiKey'; import { getApiKey } from '../utils/apiKey';
import changeExtensionState from '../utils/changeExtensionState'; import changeExtensionState from '../utils/changeExtensionState';
import contains from '../utils/contains'; import contains from '../utils/contains';
@@ -112,7 +112,7 @@ class WakaTimeCore {
* Depending on various factors detects the current active tab URL or domain, * Depending on various factors detects the current active tab URL or domain,
* and sends it to WakaTime for logging. * and sends it to WakaTime for logging.
*/ */
async recordHeartbeat(payload = {}): Promise<void> { async recordHeartbeat(payload: Record<string, unknown> = {}): Promise<void> {
const apiKey = await getApiKey(); const apiKey = await getApiKey();
if (!apiKey) { if (!apiKey) {
return changeExtensionState('notLogging'); return changeExtensionState('notLogging');
@@ -166,6 +166,12 @@ class WakaTimeCore {
// Checks dev websites // Checks dev websites
const project = generateProjectFromDevSites(url); const project = generateProjectFromDevSites(url);
// Check if code reviewing
const codeReviewing = isCodeReviewing(url);
if (codeReviewing) {
payload.category = 'code reviewing';
}
if (items.loggingStyle == 'blacklist') { if (items.loggingStyle == 'blacklist') {
if (!contains(url, items.blacklist as string)) { if (!contains(url, items.blacklist as string)) {
await this.sendHeartbeat( await this.sendHeartbeat(

View File

@@ -29,3 +29,14 @@ export const generateProjectFromDevSites = (url: string): string | null => {
return match?.[0] ?? null; return match?.[0] ?? null;
}; };
const CODE_REVIEW_URL_REG_LIST = [/github.com\/[^/]+\/[^/]+\/pull\/\d+\/files/];
export const isCodeReviewing = (url: string): boolean => {
for (const reg of CODE_REVIEW_URL_REG_LIST) {
if (url.match(reg)) {
return true;
}
}
return false;
};