Magnet link handler (#15)

* feat: Magnet link handler registration on the config page
This commit is contained in:
Elias Benbourenane
2025-01-28 15:02:33 -05:00
committed by GitHub
parent d58b327957
commit d9b06fb518
2 changed files with 40 additions and 1 deletions

View File

@@ -21,6 +21,15 @@
</select>
</div>
</div>
<!-- Register Magnet Link Button -->
<div class="col-md-6">
<label>
<!-- Empty label to keep the button aligned -->
</label>
<div class="btn btn-primary w-100" onclick="registerMagnetLinkHandler()">
Open Magnet Links in DecyphArr
</div>
</div>
</div>
</div>
<!-- Debrid Configuration -->
@@ -75,7 +84,7 @@
</div>
<!-- Repair Configuration -->
<div class="section">
<div class="section mb-5">
<h5 class="border-bottom pb-2">Repair Configuration</h5>
<div class="row">
<div class="col-md-6 mb-3">
@@ -306,5 +315,22 @@
arrCount++;
}
});
// Register magnet link handler
function registerMagnetLinkHandler() {
if ('registerProtocolHandler' in navigator) {
try {
navigator.registerProtocolHandler(
'magnet',
`${window.location.origin}/download?magnet=%s`,
'DecyphArr'
);
console.log('Registered magnet link handler successfully.');
} catch (error) {
console.error('Failed to register magnet link handler:', error);
}
}
}
</script>
{{ end }}

View File

@@ -69,6 +69,19 @@
submitBtn.innerHTML = originalText;
}
});
// Read the URL parameters for a magnet link and add it to the download queue if found
const urlParams = new URLSearchParams(window.location.search);
const magnetURI = urlParams.get('magnet');
if (magnetURI) {
document.getElementById('magnetURI').value = magnetURI;
try {
document.getElementById('submitDownload').click();
history.replaceState({}, document.title, window.location.pathname);
} catch (error) {
console.error('Error adding download:', error);
}
}
});
</script>
{{ end }}