Skip to content

Commit c993d32

Browse files
authored
v0.5.2 : Torrents module : Deluge and qBittorrent integrations ! 🥳
v0.5.2 adds a bunch of QOL changes and the long awaited Deluge and qBittorrent integrations. More feature to come with the torrent module soon.
2 parents 0a476f6 + 1f66d64 commit c993d32

File tree

26 files changed

+640
-145
lines changed

26 files changed

+640
-145
lines changed

README.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,14 @@ _Requirements_:
9999
- [Docker](https://docs.docker.com/get-docker/)
100100

101101
**Standard Docker Install**
102-
```sh
103-
docker run --name homarr --restart unless-stopped -p 7575:7575 -v /data/docker/homarr:/app/data/configs -d ghcr.io/ajnart/homarr:latest
102+
```bash
103+
docker run \
104+
--name homarr \
105+
--restart unless-stopped \
106+
-p 7575:7575 \
107+
-v ./homarr/configs:/app/data/configs \
108+
-v ./homarr/icons:/app/public/icons \
109+
-d ghcr.io/ajnart/homarr:latest
104110
```
105111

106112
**Docker Compose**
@@ -116,7 +122,8 @@ services:
116122
image: ghcr.io/ajnart/homarr:latest
117123
restart: unless-stopped
118124
volumes:
119-
- /data/docker/homarr:/app/data/configs
125+
- ./homarr/configs:/app/data/configs
126+
- ./homarr/icons:/app/public/icons
120127
ports:
121128
- '7575:7575'
122129
```

crowdin.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
files:
2+
- source: /public/locales/en/*.json
3+
translation: /public/locales/%two_letters_code%/%original_file_name%.json

data/configs/default.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,14 @@
1010
}
1111
],
1212
"settings": {
13-
"searchUrl": "https://bing.com/search?q="
13+
"searchUrl": "https://google.com/search?q="
14+
},
15+
"modules": {
16+
"Search Bar": {
17+
"enabled": true
18+
},
19+
"Date": {
20+
"enabled": false
21+
}
1422
}
1523
}

data/constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
export const REPO_URL = 'ajnart/homarr';
2-
export const CURRENT_VERSION = 'v0.5.1';
2+
export const CURRENT_VERSION = 'v0.5.2';

package.json

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "homarr",
3-
"version": "0.5.1",
3+
"version": "0.5.2",
44
"private": "false",
55
"description": "Homarr - A homepage for your server.",
66
"repository": {
@@ -25,8 +25,10 @@
2525
"ci": "yarn test && yarn lint --fix && yarn typecheck && yarn prettier:write"
2626
},
2727
"dependencies": {
28-
"@dnd-kit/core": "^6.0.1",
29-
"@dnd-kit/sortable": "^7.0.0",
28+
"@ctrl/deluge": "^4.0.0",
29+
"@ctrl/qbittorrent": "^4.0.0",
30+
"@dnd-kit/core": "^6.0.1",
31+
"@dnd-kit/sortable": "^7.0.0",
3032
"@mantine/core": "^4.2.6",
3133
"@mantine/dates": "^4.2.6",
3234
"@mantine/dropzone": "^4.2.6",

src/components/AppShelf/AddAppShelfItem.tsx

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ export function AddAppShelfItemForm(props: { setOpened: (b: boolean) => void } &
7474
icon: props.icon ?? '/favicon.svg',
7575
url: props.url ?? '',
7676
apiKey: props.apiKey ?? (undefined as unknown as string),
77+
username: props.username ?? (undefined as unknown as string),
78+
password: props.password ?? (undefined as unknown as string),
7779
},
7880
validate: {
7981
apiKey: () => null,
@@ -188,6 +190,44 @@ export function AddAppShelfItemForm(props: { setOpened: (b: boolean) => void } &
188190
error={form.errors.apiKey && 'Invalid API key'}
189191
/>
190192
)}
193+
{form.values.type === 'qBittorrent' && (
194+
<>
195+
<TextInput
196+
required
197+
label="Username"
198+
placeholder="admin"
199+
value={form.values.username}
200+
onChange={(event) => {
201+
form.setFieldValue('username', event.currentTarget.value);
202+
}}
203+
error={form.errors.username && 'Invalid username'}
204+
/>
205+
<TextInput
206+
required
207+
label="Password"
208+
placeholder="adminadmin"
209+
value={form.values.password}
210+
onChange={(event) => {
211+
form.setFieldValue('password', event.currentTarget.value);
212+
}}
213+
error={form.errors.password && 'Invalid password'}
214+
/>
215+
</>
216+
)}
217+
{form.values.type === 'Deluge' && (
218+
<>
219+
<TextInput
220+
required
221+
label="Password"
222+
placeholder="deluge"
223+
value={form.values.password}
224+
onChange={(event) => {
225+
form.setFieldValue('password', event.currentTarget.value);
226+
}}
227+
error={form.errors.password && 'Invalid password'}
228+
/>
229+
</>
230+
)}
191231
</Group>
192232

193233
<Group grow position="center" mt="xl">

src/components/AppShelf/AppShelfMenu.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ import { showNotification } from '@mantine/notifications';
33
import { useState } from 'react';
44
import { Check, Edit, Trash } from 'tabler-icons-react';
55
import { useConfig } from '../../tools/state';
6+
import { serviceItem } from '../../tools/types';
67
import { AddAppShelfItemForm } from './AddAppShelfItem';
78

89
export default function AppShelfMenu(props: any) {
9-
const { service } = props;
10+
const { service }: { service: serviceItem } = props;
1011
const { config, setConfig } = useConfig();
1112
const theme = useMantineTheme();
1213
const [opened, setOpened] = useState(false);
@@ -27,6 +28,8 @@ export default function AppShelfMenu(props: any) {
2728
url={service.url}
2829
icon={service.icon}
2930
apiKey={service.apiKey}
31+
username={service.username}
32+
password={service.password}
3033
message="Save service"
3134
/>
3235
</Modal>

src/components/Config/ConfigChanger.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export default function ConfigChanger() {
99
useEffect(() => {
1010
getConfigs().then((configs) => setConfigList(configs));
1111
// setConfig(initialConfig);
12-
}, [config.name]);
12+
}, [config]);
1313
// If configlist is empty, return a loading indicator
1414
if (configList.length === 0) {
1515
return (

src/components/Config/SaveConfig.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ export default function SaveConfigComponent(props: any) {
4444
>
4545
<TextInput
4646
required
47-
defaultValue={config.name}
4847
label="Config name"
4948
placeholder="Your new config name"
5049
{...form.getInputProps('configName')}

src/components/Config/SelectConfig.tsx

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)