Skip to content

Commit 01bccd7

Browse files
committed
refactor: extract defaults
Signed-off-by: Adam Setch <[email protected]>
1 parent 5405124 commit 01bccd7

File tree

7 files changed

+83
-75
lines changed

7 files changed

+83
-75
lines changed

src/renderer/components/settings/SystemSettings.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ import {
1212

1313
import { APPLICATION } from '../../../shared/constants';
1414
import { isLinux, isMacOS } from '../../../shared/platform';
15-
import { AppContext, defaultSettings } from '../../context/App';
15+
import { AppContext } from '../../context/App';
16+
import { defaultSettings } from '../../context/defaults';
1617
import { OpenPreference } from '../../types';
1718
import { Constants } from '../../utils/constants';
1819
import { Checkbox } from '../fields/Checkbox';

src/renderer/context/App.test.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ import * as comms from '../utils/comms';
1010
import { Constants } from '../utils/constants';
1111
import * as notifications from '../utils/notifications/notifications';
1212
import * as storage from '../utils/storage';
13-
import { AppContext, AppProvider, defaultSettings } from './App';
13+
import { AppContext, AppProvider } from './App';
14+
import { defaultSettings } from './defaults';
1415

1516
jest.mock('../hooks/useNotifications');
1617

src/renderer/context/App.tsx

Lines changed: 12 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,17 @@ import { useTheme } from '@primer/react';
1414
import { namespacedEvent } from '../../shared/events';
1515
import { useInterval } from '../hooks/useInterval';
1616
import { useNotifications } from '../hooks/useNotifications';
17-
import {
18-
type Account,
19-
type AccountNotifications,
20-
type AppearanceSettingsState,
21-
type AuthState,
22-
type FilterSettingsState,
23-
type FilterValue,
24-
type GitifyError,
25-
GroupBy,
26-
type NotificationSettingsState,
27-
OpenPreference,
28-
type SettingsState,
29-
type SettingsValue,
30-
type Status,
31-
type SystemSettingsState,
32-
Theme,
33-
type Token,
17+
import type {
18+
Account,
19+
AccountNotifications,
20+
AuthState,
21+
FilterSettingsState,
22+
FilterValue,
23+
GitifyError,
24+
SettingsState,
25+
SettingsValue,
26+
Status,
27+
Token,
3428
} from '../types';
3529
import type { Notification } from '../typesGitHub';
3630
import { headNotifications } from '../utils/api/client';
@@ -64,59 +58,7 @@ import {
6458
mapThemeModeToColorScheme,
6559
} from '../utils/theme';
6660
import { zoomPercentageToLevel } from '../utils/zoom';
67-
68-
export const defaultAuth: AuthState = {
69-
accounts: [],
70-
};
71-
72-
const defaultAppearanceSettings: AppearanceSettingsState = {
73-
theme: Theme.SYSTEM,
74-
increaseContrast: false,
75-
zoomPercentage: 100,
76-
showAccountHeader: false,
77-
wrapNotificationTitle: false,
78-
};
79-
80-
const defaultNotificationSettings: NotificationSettingsState = {
81-
groupBy: GroupBy.REPOSITORY,
82-
fetchAllNotifications: true,
83-
detailedNotifications: true,
84-
showPills: true,
85-
showNumber: true,
86-
participating: false,
87-
markAsDoneOnOpen: false,
88-
markAsDoneOnUnsubscribe: false,
89-
delayNotificationState: false,
90-
};
91-
92-
const defaultSystemSettings: SystemSettingsState = {
93-
openLinks: OpenPreference.FOREGROUND,
94-
keyboardShortcut: true,
95-
showNotificationsCountInTray: true,
96-
showNotifications: true,
97-
playSound: true,
98-
notificationVolume: 20,
99-
useAlternateIdleIcon: false,
100-
openAtStartup: false,
101-
};
102-
103-
export const defaultFilters: FilterSettingsState = {
104-
filterUserTypes: [],
105-
filterIncludeHandles: [],
106-
filterExcludeHandles: [],
107-
filterIncludeOrganizations: [],
108-
filterExcludeOrganizations: [],
109-
filterSubjectTypes: [],
110-
filterStates: [],
111-
filterReasons: [],
112-
};
113-
114-
export const defaultSettings: SettingsState = {
115-
...defaultAppearanceSettings,
116-
...defaultNotificationSettings,
117-
...defaultSystemSettings,
118-
...defaultFilters,
119-
};
61+
import { defaultAuth, defaultFilters, defaultSettings } from './defaults';
12062

12163
interface AppContextState {
12264
auth: AuthState;

src/renderer/context/defaults.ts

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import {
2+
type AppearanceSettingsState,
3+
type AuthState,
4+
type FilterSettingsState,
5+
GroupBy,
6+
type NotificationSettingsState,
7+
OpenPreference,
8+
type SettingsState,
9+
type SystemSettingsState,
10+
Theme,
11+
} from '../types';
12+
13+
export const defaultAuth: AuthState = {
14+
accounts: [],
15+
};
16+
17+
const defaultAppearanceSettings: AppearanceSettingsState = {
18+
theme: Theme.SYSTEM,
19+
increaseContrast: false,
20+
zoomPercentage: 100,
21+
showAccountHeader: false,
22+
wrapNotificationTitle: false,
23+
};
24+
25+
const defaultNotificationSettings: NotificationSettingsState = {
26+
groupBy: GroupBy.REPOSITORY,
27+
fetchAllNotifications: true,
28+
detailedNotifications: true,
29+
showPills: true,
30+
showNumber: true,
31+
participating: false,
32+
markAsDoneOnOpen: false,
33+
markAsDoneOnUnsubscribe: false,
34+
delayNotificationState: false,
35+
};
36+
37+
const defaultSystemSettings: SystemSettingsState = {
38+
openLinks: OpenPreference.FOREGROUND,
39+
keyboardShortcut: true,
40+
showNotificationsCountInTray: true,
41+
showNotifications: true,
42+
playSound: true,
43+
notificationVolume: 20,
44+
useAlternateIdleIcon: false,
45+
openAtStartup: false,
46+
};
47+
48+
export const defaultFilters: FilterSettingsState = {
49+
filterUserTypes: [],
50+
filterIncludeHandles: [],
51+
filterExcludeHandles: [],
52+
filterIncludeOrganizations: [],
53+
filterExcludeOrganizations: [],
54+
filterSubjectTypes: [],
55+
filterStates: [],
56+
filterReasons: [],
57+
};
58+
59+
export const defaultSettings: SettingsState = {
60+
...defaultAppearanceSettings,
61+
...defaultNotificationSettings,
62+
...defaultSystemSettings,
63+
...defaultFilters,
64+
};

src/renderer/utils/comms.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ipcRenderer, shell } from 'electron';
22

33
import { namespacedEvent } from '../../shared/events';
4-
import { defaultSettings } from '../context/App';
4+
import { defaultSettings } from '../context/defaults';
55
import { type Link, OpenPreference } from '../types';
66
import { Constants } from './constants';
77
import { loadState } from './storage';

src/renderer/utils/notifications/filters/filter.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { partialMockNotification } from '../../../__mocks__/partial-mocks';
22
import { mockSettings } from '../../../__mocks__/state-mocks';
3-
import { defaultSettings } from '../../../context/App';
3+
import { defaultSettings } from '../../../context/defaults';
44
import type { Link, SettingsState } from '../../../types';
55
import {
66
filterBaseNotifications,

src/renderer/utils/notifications/native.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {
33
mockSingleAccountNotifications,
44
} from '../../__mocks__/notifications-mocks';
55
import { mockAuth } from '../../__mocks__/state-mocks';
6-
import { defaultSettings } from '../../context/App';
6+
import { defaultSettings } from '../../context/defaults';
77
import type { SettingsState } from '../../types';
88
import { mockGitHubNotifications } from '../api/__mocks__/response-mocks';
99
import * as comms from '../comms';

0 commit comments

Comments
 (0)