fix: settings page lag (#736)
* feat: made a handler for github stats messages same way as the rest * fix: remove settingsPageLag through incremental rendering and efficient update of local storage * refactor: passed eslint * chore: added GitHubStats types * feat: added contributor card skeletons * refactor: pass eslint * feat: removed trickle rendering and added locking to setCachedData --------- Co-authored-by: Derek <derex1987@gmail.com> Co-authored-by: Diego Perez <52579214+doprz@users.noreply.github.com>
This commit is contained in:
12
src/shared/messages/GitHubStatsMessages.ts
Normal file
12
src/shared/messages/GitHubStatsMessages.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import type { GitHubStatsResult } from '@shared/types/GitHubStats';
|
||||
|
||||
/* eslint-disable jsdoc/require-jsdoc */
|
||||
|
||||
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
|
||||
|
||||
40
src/shared/types/GitHubStats.ts
Normal file
40
src/shared/types/GitHubStats.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
/* eslint-disable jsdoc/require-jsdoc */
|
||||
export type TeamMember = {
|
||||
name: string;
|
||||
role: string[];
|
||||
githubUsername: string;
|
||||
};
|
||||
|
||||
export type GitHubStats = {
|
||||
commits: number;
|
||||
linesAdded: number;
|
||||
linesDeleted: number;
|
||||
mergedPRs?: number;
|
||||
};
|
||||
|
||||
export type GitHubStatsResult = {
|
||||
adminGitHubStats: Record<string, GitHubStats>;
|
||||
userGitHubStats: Record<string, GitHubStats>;
|
||||
contributors: string[];
|
||||
names: Record<string, string>;
|
||||
dataFetched: Date;
|
||||
lastUpdated: Date;
|
||||
isCached: boolean;
|
||||
};
|
||||
|
||||
export type ContributorStats = {
|
||||
total: number;
|
||||
weeks: { w: number; a: number; d: number; c: number }[];
|
||||
author: { login: string };
|
||||
};
|
||||
|
||||
export type ContributorUser = {
|
||||
name: string | undefined;
|
||||
};
|
||||
|
||||
export type FetchResult<T> = {
|
||||
data: T;
|
||||
dataFetched: Date;
|
||||
lastUpdated: Date;
|
||||
isCached: boolean;
|
||||
};
|
||||
Reference in New Issue
Block a user