Skip to content

Commit 941aff4

Browse files
committed
Merge branch 'main' of https://github.com/gitify-app/gitify
2 parents e5ed5c8 + 27371cc commit 941aff4

File tree

8 files changed

+168
-156
lines changed

8 files changed

+168
-156
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
"@testing-library/user-event": "14.6.1",
9090
"@types/jest": "30.0.0",
9191
"@types/node": "24.10.1",
92-
"@types/react": "19.2.5",
92+
"@types/react": "19.2.6",
9393
"@types/react-dom": "19.2.3",
9494
"@types/react-router-dom": "5.3.3",
9595
"@types/semver": "7.7.1",

pnpm-lock.yaml

Lines changed: 25 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/renderer/components/settings/AppearanceSettings.test.tsx

Lines changed: 15 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import { act, fireEvent, screen } from '@testing-library/react';
1+
import { act, screen } from '@testing-library/react';
22
import userEvent from '@testing-library/user-event';
33

44
import { renderWithAppContext } from '../../__helpers__/test-utils';
55
import { mockGitHubAppAccount } from '../../__mocks__/account-mocks';
6+
import * as zoom from '../../utils/zoom';
67
import { AppearanceSettings } from './AppearanceSettings';
78

89
describe('renderer/components/settings/AppearanceSettings.tsx', () => {
910
const updateSettingMock = jest.fn();
10-
const zoomTimeout = () => new Promise((r) => setTimeout(r, 300));
1111

1212
afterEach(() => {
1313
jest.clearAllMocks();
@@ -45,28 +45,12 @@ describe('renderer/components/settings/AppearanceSettings.tsx', () => {
4545
expect(updateSettingMock).toHaveBeenCalledWith('increaseContrast', true);
4646
});
4747

48-
it('should update the zoom value when using CMD + and CMD -', async () => {
49-
window.gitify.zoom.getLevel = jest.fn().mockReturnValue(-1);
50-
51-
await act(async () => {
52-
renderWithAppContext(<AppearanceSettings />, {
53-
updateSetting: updateSettingMock,
54-
});
55-
});
56-
57-
fireEvent(window, new Event('resize'));
58-
await zoomTimeout();
59-
60-
expect(updateSettingMock).toHaveBeenCalledTimes(1);
61-
expect(updateSettingMock).toHaveBeenCalledWith('zoomPercentage', 50);
62-
});
63-
6448
it('should update the zoom values when using the zoom buttons', async () => {
65-
window.gitify.zoom.getLevel = jest.fn().mockReturnValue(0);
66-
window.gitify.zoom.setLevel = jest.fn().mockImplementation((level) => {
67-
window.gitify.zoom.getLevel = jest.fn().mockReturnValue(level);
68-
fireEvent(window, new Event('resize'));
69-
});
49+
const zoomOutSpy = jest.spyOn(zoom, 'decreaseZoom').mockImplementation();
50+
const zoomInSpy = jest.spyOn(zoom, 'increaseZoom').mockImplementation();
51+
const zoomResetSpy = jest
52+
.spyOn(zoom, 'resetZoomLevel')
53+
.mockImplementation();
7054

7155
await act(async () => {
7256
renderWithAppContext(<AppearanceSettings />, {
@@ -75,55 +59,19 @@ describe('renderer/components/settings/AppearanceSettings.tsx', () => {
7559
});
7660

7761
// Zoom Out
78-
await act(async () => {
79-
await userEvent.click(screen.getByTestId('settings-zoom-out'));
80-
await zoomTimeout();
81-
82-
expect(updateSettingMock).toHaveBeenCalledTimes(1);
83-
expect(updateSettingMock).toHaveBeenNthCalledWith(
84-
1,
85-
'zoomPercentage',
86-
90,
87-
);
88-
});
62+
await userEvent.click(screen.getByTestId('settings-zoom-out'));
63+
expect(zoomOutSpy).toHaveBeenCalledTimes(1);
8964

90-
await act(async () => {
91-
await userEvent.click(screen.getByTestId('settings-zoom-out'));
92-
await zoomTimeout();
93-
94-
expect(updateSettingMock).toHaveBeenCalledTimes(2);
95-
expect(updateSettingMock).toHaveBeenNthCalledWith(
96-
2,
97-
'zoomPercentage',
98-
80,
99-
);
100-
});
65+
await userEvent.click(screen.getByTestId('settings-zoom-out'));
66+
expect(zoomOutSpy).toHaveBeenCalledTimes(2);
10167

10268
// Zoom In
103-
await act(async () => {
104-
await userEvent.click(screen.getByTestId('settings-zoom-in'));
105-
await zoomTimeout();
106-
107-
expect(updateSettingMock).toHaveBeenCalledTimes(3);
108-
expect(updateSettingMock).toHaveBeenNthCalledWith(
109-
3,
110-
'zoomPercentage',
111-
90,
112-
);
113-
});
69+
await userEvent.click(screen.getByTestId('settings-zoom-in'));
70+
expect(zoomInSpy).toHaveBeenCalledTimes(1);
11471

11572
// Zoom Reset
116-
await act(async () => {
117-
await userEvent.click(screen.getByTestId('settings-zoom-reset'));
118-
await zoomTimeout();
119-
120-
expect(updateSettingMock).toHaveBeenCalledTimes(4);
121-
expect(updateSettingMock).toHaveBeenNthCalledWith(
122-
4,
123-
'zoomPercentage',
124-
100,
125-
);
126-
});
73+
await userEvent.click(screen.getByTestId('settings-zoom-reset'));
74+
expect(zoomResetSpy).toHaveBeenCalledTimes(1);
12775
});
12876

12977
it('should toggle account header checkbox', async () => {

src/renderer/components/settings/AppearanceSettings.tsx

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { type FC, useContext, useState } from 'react';
1+
import { type FC, useContext } from 'react';
22

33
import {
44
PaintbrushIcon,
@@ -23,33 +23,16 @@ import {
2323
canIncreaseZoom,
2424
decreaseZoom,
2525
increaseZoom,
26+
resetZoomLevel,
2627
zoomLevelToPercentage,
2728
} from '../../utils/zoom';
2829
import { Checkbox } from '../fields/Checkbox';
2930
import { FieldLabel } from '../fields/FieldLabel';
3031
import { Title } from '../primitives/Title';
3132

32-
let timeout: NodeJS.Timeout;
33-
const DELAY = 200;
34-
3533
export const AppearanceSettings: FC = () => {
3634
const { auth, settings, updateSetting } = useContext(AppContext);
37-
const [zoomPercentage, setZoomPercentage] = useState(
38-
zoomLevelToPercentage(window.gitify.zoom.getLevel()),
39-
);
40-
41-
window.addEventListener('resize', () => {
42-
// clear the timeout
43-
clearTimeout(timeout);
44-
// start timing for event "completion"
45-
timeout = setTimeout(() => {
46-
const zoomPercentage = zoomLevelToPercentage(
47-
window.gitify.zoom.getLevel(),
48-
);
49-
setZoomPercentage(zoomPercentage);
50-
updateSetting('zoomPercentage', zoomPercentage);
51-
}, DELAY);
52-
});
35+
const zoomPercentage = zoomLevelToPercentage(window.gitify.zoom.getLevel());
5336

5437
return (
5538
<fieldset>
@@ -148,7 +131,7 @@ export const AppearanceSettings: FC = () => {
148131
aria-label="Reset zoom"
149132
data-testid="settings-zoom-reset"
150133
icon={SyncIcon}
151-
onClick={() => window.gitify.zoom.setLevel(0)}
134+
onClick={() => resetZoomLevel()}
152135
size="small"
153136
unsafeDisableTooltip={true}
154137
variant="danger"

src/renderer/context/App.test.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ describe('renderer/context/App.tsx', () => {
5555
const markNotificationsAsDoneMock = jest.fn();
5656
const unsubscribeNotificationMock = jest.fn();
5757

58+
// Removed unused zoomTimeout
59+
5860
const saveStateSpy = jest
5961
.spyOn(storage, 'saveState')
6062
.mockImplementation(jest.fn());

0 commit comments

Comments
 (0)