Compare commits
2 Commits
feat/uniqu
...
derek/sett
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0939cab8f5 | ||
| f77f663fe7 |
@@ -9,6 +9,7 @@ import onUpdate from './events/onUpdate';
|
||||
import browserActionHandler from './handler/browserActionHandler';
|
||||
import calendarBackgroundHandler from './handler/calendarBackgroundHandler';
|
||||
import CESHandler from './handler/CESHandler';
|
||||
import gitHubStatsHandler from './handler/gitHubStatsHandler';
|
||||
import tabManagementHandler from './handler/tabManagementHandler';
|
||||
import userScheduleHandler from './handler/userScheduleHandler';
|
||||
|
||||
@@ -52,6 +53,7 @@ const messageListener = new MessageListener<BACKGROUND_MESSAGES>({
|
||||
...userScheduleHandler,
|
||||
...CESHandler,
|
||||
...calendarBackgroundHandler,
|
||||
...gitHubStatsHandler,
|
||||
});
|
||||
|
||||
messageListener.listen();
|
||||
|
||||
31
src/pages/background/handler/gitHubStatsHandler.ts
Normal file
31
src/pages/background/handler/gitHubStatsHandler.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import type GitHubStatsMessages from '@shared/messages/GitHubStatsMessages';
|
||||
import { GitHubStatsService } from '@views/lib/getGitHubStats';
|
||||
import type { MessageHandler } from 'chrome-extension-toolkit';
|
||||
|
||||
const gitHubStatsService = new GitHubStatsService();
|
||||
|
||||
/**
|
||||
* Handler for GitHub stats related messages
|
||||
*/
|
||||
const gitHubStatsHandler: MessageHandler<GitHubStatsMessages> = {
|
||||
async fetchGitHubStats({ data, sendResponse }) {
|
||||
try {
|
||||
const includeMergedPRs = data ?? false;
|
||||
const stats = await gitHubStatsService.fetchGitHubStats({ includeMergedPRs });
|
||||
sendResponse(stats);
|
||||
} catch (error) {
|
||||
console.error('Error fetching GitHub stats in background:', error);
|
||||
sendResponse({
|
||||
adminGitHubStats: {},
|
||||
userGitHubStats: {},
|
||||
contributors: [],
|
||||
names: {},
|
||||
dataFetched: new Date(),
|
||||
lastUpdated: new Date(),
|
||||
isCached: false,
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
export default gitHubStatsHandler;
|
||||
14
src/shared/messages/GitHubStatsMessages.ts
Normal file
14
src/shared/messages/GitHubStatsMessages.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import type { GitHubStatsService } from '@views/lib/getGitHubStats';
|
||||
|
||||
/* eslint-disable jsdoc/require-jsdoc */
|
||||
|
||||
export type GitHubStatsResult = Awaited<ReturnType<GitHubStatsService['fetchGitHubStats']>>;
|
||||
|
||||
export default interface GitHubStatsMessages {
|
||||
/**
|
||||
* Fetch GitHub statistics for all contributors
|
||||
* @param includeMergedPRs - Whether to include merged PR counts (optional, default: false)
|
||||
* @returns GitHub stats including commits, lines added/deleted, and optionally merged PRs
|
||||
*/
|
||||
fetchGitHubStats: (includeMergedPRs?: boolean) => GitHubStatsResult;
|
||||
}
|
||||
@@ -3,6 +3,7 @@ import { createMessenger } from 'chrome-extension-toolkit';
|
||||
import type BrowserActionMessages from './BrowserActionMessages';
|
||||
import type { CalendarBackgroundMessages, CalendarTabMessages } from './CalendarMessages';
|
||||
import type CESMessage from './CESMessage';
|
||||
import type GitHubStatsMessages from './GitHubStatsMessages';
|
||||
import type TabInfoMessages from './TabInfoMessages';
|
||||
import type TabManagementMessages from './TabManagementMessages';
|
||||
import type { UserScheduleMessages } from './UserScheduleMessages';
|
||||
@@ -14,7 +15,8 @@ export type BACKGROUND_MESSAGES = BrowserActionMessages &
|
||||
TabManagementMessages &
|
||||
UserScheduleMessages &
|
||||
CESMessage &
|
||||
CalendarBackgroundMessages;
|
||||
CalendarBackgroundMessages &
|
||||
GitHubStatsMessages;
|
||||
|
||||
/**
|
||||
* This is a type with all the message definitions that can be sent TO specific tabs
|
||||
|
||||
Reference in New Issue
Block a user