Move Soulseek settings to Download Source section & conditional source visibility
This commit is contained in:
parent
70c32aa640
commit
0d547255d9
2 changed files with 56 additions and 38 deletions
|
|
@ -3273,36 +3273,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Soulseek Settings -->
|
|
||||||
<div class="api-service-frame">
|
|
||||||
<h4 class="service-title soulseek-title">Soulseek</h4>
|
|
||||||
<div class="form-group">
|
|
||||||
<label>slskd URL:</label>
|
|
||||||
<div class="path-input-group">
|
|
||||||
<input type="url" id="soulseek-url" placeholder="http://localhost:5030">
|
|
||||||
<button class="detect-button"
|
|
||||||
onclick="autoDetectSlskd()">Auto-detect</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label>API Key:</label>
|
|
||||||
<input type="password" id="soulseek-api-key" placeholder="Slskd API Key">
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label>Search Timeout (seconds):</label>
|
|
||||||
<input type="number" id="soulseek-search-timeout" placeholder="60" min="15"
|
|
||||||
max="300" value="60">
|
|
||||||
<small style="color: #888; display: block; margin-top: 5px;">How long to search
|
|
||||||
for tracks (15-300 seconds)</small>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label>Search Timeout Buffer (seconds):</label>
|
|
||||||
<input type="number" id="soulseek-search-timeout-buffer" placeholder="15"
|
|
||||||
min="5" max="60" value="15">
|
|
||||||
<small style="color: #888; display: block; margin-top: 5px;">Extra time to wait
|
|
||||||
for late results (5-60 seconds)</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- ListenBrainz Settings -->
|
<!-- ListenBrainz Settings -->
|
||||||
<div class="api-service-frame">
|
<div class="api-service-frame">
|
||||||
|
|
@ -3422,8 +3392,6 @@
|
||||||
<button class="test-button" onclick="testConnection('spotify')">Test
|
<button class="test-button" onclick="testConnection('spotify')">Test
|
||||||
Spotify</button>
|
Spotify</button>
|
||||||
<button class="test-button" onclick="testConnection('tidal')">Test Tidal</button>
|
<button class="test-button" onclick="testConnection('tidal')">Test Tidal</button>
|
||||||
<button class="test-button" onclick="testConnection('soulseek')">Test
|
|
||||||
Soulseek</button>
|
|
||||||
<button class="test-button" onclick="testConnection('listenbrainz')">Test
|
<button class="test-button" onclick="testConnection('listenbrainz')">Test
|
||||||
ListenBrainz</button>
|
ListenBrainz</button>
|
||||||
<button class="test-button" onclick="testConnection('acoustid')">Test
|
<button class="test-button" onclick="testConnection('acoustid')">Test
|
||||||
|
|
@ -3667,7 +3635,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Fallback Source:</label>
|
<label>Fallback Source:</label>
|
||||||
<select id="hybrid-secondary-source" class="form-select">
|
<select id="hybrid-secondary-source" class="form-select" onchange="updateDownloadSourceUI()">
|
||||||
<option value="soulseek">Soulseek</option>
|
<option value="soulseek">Soulseek</option>
|
||||||
<option value="youtube">YouTube</option>
|
<option value="youtube">YouTube</option>
|
||||||
<option value="tidal">Tidal</option>
|
<option value="tidal">Tidal</option>
|
||||||
|
|
@ -3680,6 +3648,39 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Soulseek Settings (shown when soulseek is active source) -->
|
||||||
|
<div id="soulseek-settings-container" style="display: none;">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>slskd URL:</label>
|
||||||
|
<div class="path-input-group">
|
||||||
|
<input type="url" id="soulseek-url" placeholder="http://localhost:5030">
|
||||||
|
<button class="detect-button"
|
||||||
|
onclick="autoDetectSlskd()">Auto-detect</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label>API Key:</label>
|
||||||
|
<input type="password" id="soulseek-api-key" placeholder="Slskd API Key">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Search Timeout (seconds):</label>
|
||||||
|
<input type="number" id="soulseek-search-timeout" placeholder="60" min="15"
|
||||||
|
max="300" value="60">
|
||||||
|
<small style="color: #888; display: block; margin-top: 5px;">How long to search
|
||||||
|
for tracks (15-300 seconds)</small>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Search Timeout Buffer (seconds):</label>
|
||||||
|
<input type="number" id="soulseek-search-timeout-buffer" placeholder="15"
|
||||||
|
min="5" max="60" value="15">
|
||||||
|
<small style="color: #888; display: block; margin-top: 5px;">Extra time to wait
|
||||||
|
for late results (5-60 seconds)</small>
|
||||||
|
</div>
|
||||||
|
<div class="form-actions" style="margin-top: 8px;">
|
||||||
|
<button class="test-button" onclick="testConnection('soulseek')">Test Soulseek Connection</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Tidal Download Settings (shown only when tidal mode is selected) -->
|
<!-- Tidal Download Settings (shown only when tidal mode is selected) -->
|
||||||
<div id="tidal-download-settings-container" style="display: none;">
|
<div id="tidal-download-settings-container" style="display: none;">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
|
|
|
||||||
|
|
@ -4738,19 +4738,33 @@ function toggleServer(serverType) {
|
||||||
function updateDownloadSourceUI() {
|
function updateDownloadSourceUI() {
|
||||||
const mode = document.getElementById('download-source-mode').value;
|
const mode = document.getElementById('download-source-mode').value;
|
||||||
const hybridContainer = document.getElementById('hybrid-settings-container');
|
const hybridContainer = document.getElementById('hybrid-settings-container');
|
||||||
|
const soulseekContainer = document.getElementById('soulseek-settings-container');
|
||||||
const tidalContainer = document.getElementById('tidal-download-settings-container');
|
const tidalContainer = document.getElementById('tidal-download-settings-container');
|
||||||
const qobuzContainer = document.getElementById('qobuz-settings-container');
|
const qobuzContainer = document.getElementById('qobuz-settings-container');
|
||||||
const youtubeContainer = document.getElementById('youtube-settings-container');
|
const youtubeContainer = document.getElementById('youtube-settings-container');
|
||||||
|
|
||||||
hybridContainer.style.display = mode === 'hybrid' ? 'block' : 'none';
|
hybridContainer.style.display = mode === 'hybrid' ? 'block' : 'none';
|
||||||
tidalContainer.style.display = (mode === 'tidal' || mode === 'hybrid') ? 'block' : 'none';
|
|
||||||
qobuzContainer.style.display = (mode === 'qobuz' || mode === 'hybrid') ? 'block' : 'none';
|
|
||||||
youtubeContainer.style.display = (mode === 'youtube' || mode === 'hybrid') ? 'block' : 'none';
|
|
||||||
|
|
||||||
if (mode === 'tidal' || mode === 'hybrid') {
|
// Determine which sources are active
|
||||||
|
let activeSources = new Set();
|
||||||
|
if (mode === 'hybrid') {
|
||||||
|
const primary = document.getElementById('hybrid-primary-source').value;
|
||||||
|
const secondary = document.getElementById('hybrid-secondary-source').value;
|
||||||
|
activeSources.add(primary);
|
||||||
|
activeSources.add(secondary);
|
||||||
|
} else {
|
||||||
|
activeSources.add(mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
soulseekContainer.style.display = activeSources.has('soulseek') ? 'block' : 'none';
|
||||||
|
tidalContainer.style.display = activeSources.has('tidal') ? 'block' : 'none';
|
||||||
|
qobuzContainer.style.display = activeSources.has('qobuz') ? 'block' : 'none';
|
||||||
|
youtubeContainer.style.display = activeSources.has('youtube') ? 'block' : 'none';
|
||||||
|
|
||||||
|
if (activeSources.has('tidal')) {
|
||||||
checkTidalDownloadAuthStatus();
|
checkTidalDownloadAuthStatus();
|
||||||
}
|
}
|
||||||
if (mode === 'qobuz' || mode === 'hybrid') {
|
if (activeSources.has('qobuz')) {
|
||||||
checkQobuzAuthStatus();
|
checkQobuzAuthStatus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -4779,6 +4793,9 @@ function updateHybridSecondaryOptions() {
|
||||||
if (currentValue !== primary) {
|
if (currentValue !== primary) {
|
||||||
secondary.value = currentValue;
|
secondary.value = currentValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Refresh source-specific settings visibility based on new primary/secondary
|
||||||
|
updateDownloadSourceUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ===============================
|
// ===============================
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue