diff --git a/biome.json b/biome.json index 4663b8ca1..6c5a29bc3 100644 --- a/biome.json +++ b/biome.json @@ -17,10 +17,13 @@ ":BLANK_LINE:", ":PACKAGE:", ":BLANK_LINE:", + "**/shared/**", + ":BLANK_LINE:", "**" ] } - } + }, + "useSortedAttributes": "on" } } }, @@ -41,7 +44,12 @@ "useExhaustiveDependencies": { "level": "warn", "options": { - "hooks": [{ "name": "useNavigate", "stableResult": true }] + "hooks": [ + { + "name": "useNavigate", + "stableResult": true + } + ] } }, "useUniqueElementIds": "warn" diff --git a/src/main/index.ts b/src/main/index.ts index f8f73d5a0..265b5f060 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -6,6 +6,7 @@ import { APPLICATION } from '../shared/constants'; import { namespacedEvent } from '../shared/events'; import { logInfo, logWarn } from '../shared/logger'; import { isLinux, isWindows } from '../shared/platform'; + import { onFirstRunMaybe } from './first-run'; import { TrayIcons } from './icons'; import MenuBuilder from './menu'; diff --git a/src/main/menu.ts b/src/main/menu.ts index 7465977e9..e4be9c4c6 100644 --- a/src/main/menu.ts +++ b/src/main/menu.ts @@ -4,6 +4,7 @@ import type { Menubar } from 'menubar'; import { APPLICATION } from '../shared/constants'; import { isMacOS, isWindows } from '../shared/platform'; + import { openLogsDirectory, resetApp, takeScreenshot } from './utils'; export default class MenuBuilder { diff --git a/src/main/updater.ts b/src/main/updater.ts index c1f5202a8..60dac989a 100644 --- a/src/main/updater.ts +++ b/src/main/updater.ts @@ -5,6 +5,7 @@ import type { Menubar } from 'menubar'; import { APPLICATION } from '../shared/constants'; import { logError, logInfo } from '../shared/logger'; + import type MenuBuilder from './menu'; /** diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index 9f7f3694c..adf1f35b4 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -28,7 +28,7 @@ function RequireAuth({ children }) { return isLoggedIn ? ( children ) : ( - + ); } @@ -41,45 +41,45 @@ export const App = () => { } + path="/" /> } + path="/filters" /> } + path="/settings" /> } + path="/accounts" /> - } /> + } path="/login" /> } + path="/login-personal-access-token" /> } + path="/login-oauth-app" /> diff --git a/src/renderer/components/AllRead.tsx b/src/renderer/components/AllRead.tsx index 4109d4d33..5dca686a7 100644 --- a/src/renderer/components/AllRead.tsx +++ b/src/renderer/components/AllRead.tsx @@ -25,6 +25,6 @@ export const AllRead: FC = ({ fullHeight = true }: IAllRead) => { const heading = `No new ${hasFilters ? 'filtered ' : ''} notifications`; return ( - + ); }; diff --git a/src/renderer/components/Oops.tsx b/src/renderer/components/Oops.tsx index c6352b3da..38beccb1c 100644 --- a/src/renderer/components/Oops.tsx +++ b/src/renderer/components/Oops.tsx @@ -20,9 +20,9 @@ export const Oops: FC = ({ error, fullHeight = true }: IOops) => { return ( ); }; diff --git a/src/renderer/components/Sidebar.tsx b/src/renderer/components/Sidebar.tsx index 49c511401..c01c15c23 100644 --- a/src/renderer/components/Sidebar.tsx +++ b/src/renderer/components/Sidebar.tsx @@ -13,6 +13,7 @@ import { import { IconButton, Stack } from '@primer/react'; import { APPLICATION } from '../../shared/constants'; + import { AppContext } from '../context/App'; import { quitApp } from '../utils/comms'; import { Constants } from '../utils/constants'; @@ -72,129 +73,129 @@ export const Sidebar: FC = () => { return ( navigate('/', { replace: true })} size="small" - variant="invisible" tooltipDirection="e" - onClick={() => navigate('/', { replace: true })} - data-testid="sidebar-home" + unsafeDisableTooltip={false} + variant="invisible" /> 0 ? 'primary' : 'invisible'} - tooltipDirection="e" + icon={BellIcon} onClick={() => openGitHubNotifications(primaryAccountHostname)} - data-testid="sidebar-notifications" + size="small" sx={sidebarButtonStyle} + tooltipDirection="e" + unsafeDisableTooltip={false} + variant={notificationsCount > 0 ? 'primary' : 'invisible'} /> {isLoggedIn && ( toggleFilters()} - data-testid="sidebar-filter-notifications" + size="small" sx={sidebarButtonStyle} + tooltipDirection="e" + unsafeDisableTooltip={false} + variant={hasAnyFiltersSet(settings) ? 'primary' : 'invisible'} /> )} openGitHubIssues(primaryAccountHostname)} data-testid="sidebar-my-issues" + icon={IssueOpenedIcon} + onClick={() => openGitHubIssues(primaryAccountHostname)} + size="small" sx={sidebarButtonStyle} + tooltipDirection="e" + unsafeDisableTooltip={false} + variant="invisible" /> openGitHubPulls(primaryAccountHostname)} data-testid="sidebar-my-pull-requests" + icon={GitPullRequestIcon} + onClick={() => openGitHubPulls(primaryAccountHostname)} + size="small" sx={sidebarButtonStyle} + tooltipDirection="e" + unsafeDisableTooltip={false} + variant="invisible" /> {isLoggedIn && ( <> refreshNotifications()} - data-testid="sidebar-refresh" + size="small" sx={sidebarButtonStyle} + tooltipDirection="e" + unsafeDisableTooltip={false} + variant="invisible" /> toggleSettings()} data-testid="sidebar-settings" + icon={GearIcon} + onClick={() => toggleSettings()} + size="small" sx={sidebarButtonStyle} + tooltipDirection="e" + unsafeDisableTooltip={false} + variant="invisible" /> )} {!isLoggedIn && ( quitApp()} data-testid="sidebar-quit" + icon={XCircleIcon} + onClick={() => quitApp()} + size="small" sx={sidebarButtonStyle} + tooltipDirection="e" + unsafeDisableTooltip={false} + variant="invisible" /> )} diff --git a/src/renderer/components/avatars/AvatarWithFallback.tsx b/src/renderer/components/avatars/AvatarWithFallback.tsx index fc6607372..2f1116af1 100644 --- a/src/renderer/components/avatars/AvatarWithFallback.tsx +++ b/src/renderer/components/avatars/AvatarWithFallback.tsx @@ -31,24 +31,24 @@ export const AvatarWithFallback: React.FC = ({ // TODO explore using AnchoredOverlay component (https://primer.style/components/anchored-overlay/react/alpha) to render Avatar Card on hover return ( {!src || isBroken ? ( ) : ( setIsBroken(true)} size={size} square={isNonHuman} - onError={() => setIsBroken(true)} + src={src} /> )} {name && ( - + {name} )} diff --git a/src/renderer/components/fields/Checkbox.test.tsx b/src/renderer/components/fields/Checkbox.test.tsx index 623a59d91..7d004caf7 100644 --- a/src/renderer/components/fields/Checkbox.test.tsx +++ b/src/renderer/components/fields/Checkbox.test.tsx @@ -33,12 +33,12 @@ describe('renderer/components/fields/Checkbox.tsx', () => { }); it('should render - positive counter unselected', () => { - const tree = render(); + const tree = render(); expect(tree).toMatchSnapshot(); }); it('should render - positive counter selected', () => { - const tree = render(); + const tree = render(); expect(tree).toMatchSnapshot(); }); diff --git a/src/renderer/components/fields/Checkbox.tsx b/src/renderer/components/fields/Checkbox.tsx index 4a7e77c55..f78e54c32 100644 --- a/src/renderer/components/fields/Checkbox.tsx +++ b/src/renderer/components/fields/Checkbox.tsx @@ -26,27 +26,27 @@ export const Checkbox: FC = ({ return ( visible && ( diff --git a/src/renderer/components/fields/FieldLabel.tsx b/src/renderer/components/fields/FieldLabel.tsx index 633d1225d..471dc0b7f 100644 --- a/src/renderer/components/fields/FieldLabel.tsx +++ b/src/renderer/components/fields/FieldLabel.tsx @@ -7,7 +7,7 @@ export interface IFieldLabel { export const FieldLabel: FC = (props: IFieldLabel) => { return ( -