mirror of
https://github.com/nimbold/Firelink.git
synced 2026-08-10 03:27:05 +00:00
feat(torrents): add peer discovery controls
This commit is contained in:
@@ -21,6 +21,42 @@ describe('last used download directory preference', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('Torrent peer discovery preferences', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
useSettingsStore.setState({
|
||||
torrentEnableDht: true,
|
||||
torrentEnableDht6: false,
|
||||
torrentEnablePex: true,
|
||||
torrentEnableLpd: false
|
||||
});
|
||||
});
|
||||
|
||||
it('matches Aria2 defaults and persists explicit changes', async () => {
|
||||
expect(useSettingsStore.getState().torrentEnableDht).toBe(true);
|
||||
expect(useSettingsStore.getState().torrentEnableDht6).toBe(false);
|
||||
expect(useSettingsStore.getState().torrentEnablePex).toBe(true);
|
||||
expect(useSettingsStore.getState().torrentEnableLpd).toBe(false);
|
||||
|
||||
useSettingsStore.getState().setTorrentEnableDht(false);
|
||||
useSettingsStore.getState().setTorrentEnableDht6(true);
|
||||
useSettingsStore.getState().setTorrentEnablePex(false);
|
||||
useSettingsStore.getState().setTorrentEnableLpd(true);
|
||||
await vi.waitFor(() => {
|
||||
const save = vi.mocked(ipc.invokeCommand).mock.calls
|
||||
.filter(([command]) => command === 'db_save_settings')
|
||||
.slice(-1)[0];
|
||||
expect(save).toBeDefined();
|
||||
expect(JSON.parse((save?.[1] as { data: string }).data).state).toMatchObject({
|
||||
torrentEnableDht: false,
|
||||
torrentEnableDht6: true,
|
||||
torrentEnablePex: false,
|
||||
torrentEnableLpd: true
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('calendar preference', () => {
|
||||
it('keeps Gregorian as the default and persists explicit calendar choices', async () => {
|
||||
vi.clearAllMocks();
|
||||
|
||||
@@ -234,6 +234,10 @@ export interface SettingsState {
|
||||
proxyMode: ProxyMode;
|
||||
proxyHost: string;
|
||||
proxyPort: number;
|
||||
torrentEnableDht: boolean;
|
||||
torrentEnableDht6: boolean;
|
||||
torrentEnablePex: boolean;
|
||||
torrentEnableLpd: boolean;
|
||||
customUserAgent: string;
|
||||
askWhereToSaveEachFile: boolean;
|
||||
preventsSleepWhileDownloading: boolean;
|
||||
@@ -284,6 +288,10 @@ export interface SettingsState {
|
||||
setProxyMode: (mode: ProxyMode) => void;
|
||||
setProxyHost: (host: string) => void;
|
||||
setProxyPort: (port: number) => void;
|
||||
setTorrentEnableDht: (enabled: boolean) => void;
|
||||
setTorrentEnableDht6: (enabled: boolean) => void;
|
||||
setTorrentEnablePex: (enabled: boolean) => void;
|
||||
setTorrentEnableLpd: (enabled: boolean) => void;
|
||||
setCustomUserAgent: (userAgent: string) => void;
|
||||
setAskWhereToSaveEachFile: (ask: boolean) => void;
|
||||
setPreventsSleepWhileDownloading: (prevent: boolean) => void;
|
||||
@@ -360,6 +368,10 @@ export const useSettingsStore = create<SettingsState>()(
|
||||
proxyMode: 'none',
|
||||
proxyHost: '',
|
||||
proxyPort: 8080,
|
||||
torrentEnableDht: true,
|
||||
torrentEnableDht6: false,
|
||||
torrentEnablePex: true,
|
||||
torrentEnableLpd: false,
|
||||
customUserAgent: '',
|
||||
askWhereToSaveEachFile: false,
|
||||
preventsSleepWhileDownloading: true,
|
||||
@@ -454,6 +466,10 @@ export const useSettingsStore = create<SettingsState>()(
|
||||
? Math.min(65535, Math.max(1, Math.trunc(proxyPort)))
|
||||
: 8080
|
||||
}),
|
||||
setTorrentEnableDht: (torrentEnableDht) => set({ torrentEnableDht }),
|
||||
setTorrentEnableDht6: (torrentEnableDht6) => set({ torrentEnableDht6 }),
|
||||
setTorrentEnablePex: (torrentEnablePex) => set({ torrentEnablePex }),
|
||||
setTorrentEnableLpd: (torrentEnableLpd) => set({ torrentEnableLpd }),
|
||||
setCustomUserAgent: (customUserAgent) => set({ customUserAgent }),
|
||||
setAskWhereToSaveEachFile: (askWhereToSaveEachFile) => set({ askWhereToSaveEachFile }),
|
||||
setPreventsSleepWhileDownloading: (preventsSleepWhileDownloading) => {
|
||||
@@ -635,6 +651,10 @@ export const useSettingsStore = create<SettingsState>()(
|
||||
proxyMode: state.proxyMode,
|
||||
proxyHost: state.proxyHost,
|
||||
proxyPort: state.proxyPort,
|
||||
torrentEnableDht: state.torrentEnableDht,
|
||||
torrentEnableDht6: state.torrentEnableDht6,
|
||||
torrentEnablePex: state.torrentEnablePex,
|
||||
torrentEnableLpd: state.torrentEnableLpd,
|
||||
customUserAgent: state.customUserAgent,
|
||||
askWhereToSaveEachFile: state.askWhereToSaveEachFile,
|
||||
preventsSleepWhileDownloading: state.preventsSleepWhileDownloading,
|
||||
@@ -680,6 +700,10 @@ export const useSettingsStore = create<SettingsState>()(
|
||||
listRowDensity: isAllowedSetting(LIST_ROW_DENSITY_VALUES, persisted.listRowDensity)
|
||||
? persisted.listRowDensity
|
||||
: currentState.listRowDensity,
|
||||
torrentEnableDht: persistedBoolean(persisted.torrentEnableDht, currentState.torrentEnableDht),
|
||||
torrentEnableDht6: persistedBoolean(persisted.torrentEnableDht6, currentState.torrentEnableDht6),
|
||||
torrentEnablePex: persistedBoolean(persisted.torrentEnablePex, currentState.torrentEnablePex),
|
||||
torrentEnableLpd: persistedBoolean(persisted.torrentEnableLpd, currentState.torrentEnableLpd),
|
||||
sidebarPosition: isAllowedSetting(SIDEBAR_POSITION_VALUES, persisted.sidebarPosition)
|
||||
? persisted.sidebarPosition
|
||||
: currentState.sidebarPosition,
|
||||
|
||||
Reference in New Issue
Block a user