mirror of
https://github.com/kikootwo/ReadMeABook.git
synced 2026-06-03 12:50:09 +00:00
Add Transmission/NZBGet and per-client paths and much more
Extend multi-download-client support to include Transmission and NZBGet and introduce per-client custom download paths. Adds protocol mapping and new client types, Transmission/NZBGet integration services, API CRUD and validation changes, UI components/modal updates and live path previews, and manager routing by protocol. Includes DB migrations (download_path on download_history, interactive_search_access on users), schema updates, and related processor/service fixes and tests to ensure backward compatibility and proper path resolution.
This commit is contained in:
@@ -495,6 +495,7 @@ export default function SetupWizard() {
|
||||
return (
|
||||
<DownloadClientStep
|
||||
downloadClients={state.downloadClients}
|
||||
downloadDir={state.downloadDir}
|
||||
onUpdate={updateField}
|
||||
onNext={() => goToStep(currentStepNumber + 1)}
|
||||
onBack={() => goToStep(currentStepNumber - 1)}
|
||||
|
||||
@@ -8,10 +8,11 @@
|
||||
import { useState, useEffect } from 'react';
|
||||
import { Button } from '@/components/ui/Button';
|
||||
import { DownloadClientManagement } from '@/components/admin/download-clients/DownloadClientManagement';
|
||||
import { DownloadClientType } from '@/lib/interfaces/download-client.interface';
|
||||
|
||||
interface DownloadClient {
|
||||
id: string;
|
||||
type: 'qbittorrent' | 'sabnzbd';
|
||||
type: DownloadClientType;
|
||||
name: string;
|
||||
enabled: boolean;
|
||||
url: string;
|
||||
@@ -22,10 +23,12 @@ interface DownloadClient {
|
||||
remotePath?: string;
|
||||
localPath?: string;
|
||||
category?: string;
|
||||
customPath?: string;
|
||||
}
|
||||
|
||||
interface DownloadClientStepProps {
|
||||
downloadClients: DownloadClient[];
|
||||
downloadDir?: string;
|
||||
onUpdate: (field: string, value: any) => void;
|
||||
onNext: () => void;
|
||||
onBack: () => void;
|
||||
@@ -33,6 +36,7 @@ interface DownloadClientStepProps {
|
||||
|
||||
export function DownloadClientStep({
|
||||
downloadClients,
|
||||
downloadDir,
|
||||
onUpdate,
|
||||
onNext,
|
||||
onBack,
|
||||
@@ -66,7 +70,7 @@ export function DownloadClientStep({
|
||||
Configure Download Clients
|
||||
</h2>
|
||||
<p className="text-gray-600 dark:text-gray-400">
|
||||
Add at least one download client. You can configure both qBittorrent (torrents) and SABnzbd (Usenet) to search across all indexer types.
|
||||
Add at least one download client. You can configure a torrent client (qBittorrent or Transmission) and/or a usenet client (SABnzbd or NZBGet) to search across all indexer types.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -80,6 +84,7 @@ export function DownloadClientStep({
|
||||
mode="wizard"
|
||||
initialClients={clients}
|
||||
onClientsChange={handleClientsChange}
|
||||
downloadDir={downloadDir}
|
||||
/>
|
||||
|
||||
<div className="flex justify-between pt-6 border-t border-gray-200 dark:border-gray-700">
|
||||
|
||||
@@ -17,13 +17,13 @@ export function WelcomeStep({ onNext }: WelcomeStepProps) {
|
||||
<div className="text-center space-y-4">
|
||||
<div className="flex justify-center">
|
||||
<div
|
||||
className="w-20 h-20 rounded-full flex items-center justify-center p-4"
|
||||
className="w-20 h-20 rounded-full flex items-center justify-center p-2 overflow-hidden"
|
||||
style={{ backgroundColor: '#f7f4f3' }}
|
||||
>
|
||||
<img
|
||||
src="/rmab_32x32.png"
|
||||
src="/RMAB_1024x1024_ICON.png"
|
||||
alt="ReadMeABook Logo"
|
||||
className="w-full h-full object-contain"
|
||||
className="w-full h-full object-contain relative top-[3px]"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -57,9 +57,9 @@ export function WelcomeStep({ onNext }: WelcomeStepProps) {
|
||||
/>
|
||||
</svg>
|
||||
<div>
|
||||
<strong className="text-gray-900 dark:text-gray-100">Plex Media Server</strong>
|
||||
<strong className="text-gray-900 dark:text-gray-100">Plex or Audiobookshelf</strong>
|
||||
<p className="text-sm text-gray-600 dark:text-gray-400">
|
||||
Your Plex server URL and authentication token
|
||||
Your media server URL and authentication credentials
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
@@ -79,7 +79,7 @@ export function WelcomeStep({ onNext }: WelcomeStepProps) {
|
||||
<div>
|
||||
<strong className="text-gray-900 dark:text-gray-100">Prowlarr</strong>
|
||||
<p className="text-sm text-gray-600 dark:text-gray-400">
|
||||
Indexer aggregator for searching torrents (URL and API key)
|
||||
Indexer aggregator for searching torrents and usenet (URL and API key)
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
@@ -98,10 +98,10 @@ export function WelcomeStep({ onNext }: WelcomeStepProps) {
|
||||
</svg>
|
||||
<div>
|
||||
<strong className="text-gray-900 dark:text-gray-100">
|
||||
qBittorrent or SABnzbd
|
||||
Download Client
|
||||
</strong>
|
||||
<p className="text-sm text-gray-600 dark:text-gray-400">
|
||||
Download client for torrents (qBittorrent) or Usenet/NZB (SABnzbd)
|
||||
qBittorrent, Transmission, SABnzbd, or NZBGet
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
Reference in New Issue
Block a user