Skip to content

Commit

Permalink
Add option to sort last save dirs alphabetically
Browse files Browse the repository at this point in the history
Also minor bug fixes in how and when the list is displayed

Issue #200
  • Loading branch information
qu1ck committed May 12, 2024
1 parent ba63c3a commit d2fd0e4
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 8 deletions.
24 changes: 16 additions & 8 deletions src/components/modals/common.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,17 @@ export function useTorrentLocation(): LocationData {
const serverConfig = useContext(ServerConfigContext);
const [lastPaths, setLastPaths] = useState([] as string[]);

const updateLastPaths = useCallback(() => {
const paths = [...serverConfig.lastSaveDirs];
if (config.values.interface.sortLastSaveDirs) {
paths.sort();
}
setLastPaths(paths);
}, [config, serverConfig]);

useEffect(() => {
setLastPaths(serverConfig.lastSaveDirs);
}, [serverConfig]);
updateLastPaths();
}, [updateLastPaths]);

const [path, setPath] = useState<string>("");

Expand Down Expand Up @@ -148,13 +156,13 @@ export function useTorrentLocation(): LocationData {

const addPath = useCallback((dir: string) => {
config.addSaveDir(serverConfig.name, dir);
setLastPaths([...serverConfig.lastSaveDirs]);
}, [config, serverConfig]);
updateLastPaths();
}, [config, serverConfig, updateLastPaths]);

const removePath = useCallback((dir: string) => {
config.removeSaveDir(serverConfig.name, dir);
setLastPaths([...serverConfig.lastSaveDirs]);
}, [config, serverConfig]);
updateLastPaths();
}, [config, serverConfig, updateLastPaths]);

return { path, setPath, lastPaths, addPath, removePath, browseHandler };
}
Expand All @@ -173,7 +181,7 @@ export function TorrentLocation(props: LocationData) {
<Menu position="left-start" withinPortal
middlewares={{ shift: true, flip: false }} offset={{ mainAxis: -20, crossAxis: 30 }}>
<Menu.Target>
<ActionIcon py="md" disabled={props.disabled}>
<ActionIcon py="md" disabled={props.disabled === true || props.lastPaths.length === 0}>
<Icon.ClockHistory size="16" />
</ActionIcon>
</Menu.Target>
Expand All @@ -200,7 +208,7 @@ export function TorrentLocation(props: LocationData) {
<Icon.Trash size="12" />
</ActionIcon>}
>
{path}
{path.length > 0 ? path : "<empty>"}
</Menu.Item>
))}
</ScrollArea.Autosize>
Expand Down
5 changes: 5 additions & 0 deletions src/components/modals/interfacepanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ export interface InterfaceFormValues {
deleteTorrentData: DeleteTorrentDataOption,
progressbarStyle: ProgressbarStyleOption,
numLastSaveDirs: number,
sortLastSaveDirs: boolean,
preconfiguredLabels: string[],
defaultTrackers: string[],
},
Expand Down Expand Up @@ -141,6 +142,10 @@ export function InterfaceSettigsPanel<V extends InterfaceFormValues>(props: { fo
max={100}
{...props.form.getInputProps("interface.numLastSaveDirs")} />
</Grid.Col>
<Grid.Col span={6}>
<Checkbox label="Sort download directories list"
{...props.form.getInputProps("interface.sortLastSaveDirs", { type: "checkbox" })} />
</Grid.Col>
<Grid.Col span={3}>Progressbars</Grid.Col>
<Grid.Col span={3}>
<NativeSelect data={ProgressbarStyleOptions as unknown as string[]}
Expand Down
2 changes: 2 additions & 0 deletions src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ interface Settings {
deleteTorrentData: DeleteTorrentDataOption,
deleteTorrentDataSelection: boolean,
numLastSaveDirs: number,
sortLastSaveDirs: boolean,
preconfiguredLabels: string[],
defaultTrackers: string[],
styleOverrides: StyleOverrides,
Expand Down Expand Up @@ -276,6 +277,7 @@ const DefaultSettings: Settings = {
deleteTorrentData: "default off",
deleteTorrentDataSelection: false,
numLastSaveDirs: 20,
sortLastSaveDirs: false,
preconfiguredLabels: [],
defaultTrackers: [...DefaultTrackerList],
styleOverrides: {
Expand Down

0 comments on commit d2fd0e4

Please sign in to comment.