mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-10-22 18:56:08 +03:00
Merge pull request #10552 from CoryG89/webui-magnet-handler
Register protocol handler in WebUI for magnet links
This commit is contained in:
commit
412b51fb3c
1 changed files with 41 additions and 0 deletions
|
@ -696,6 +696,7 @@ window.addEvent('load', function() {
|
||||||
loadMethod: 'xhr',
|
loadMethod: 'xhr',
|
||||||
contentURL: 'transferlist.html',
|
contentURL: 'transferlist.html',
|
||||||
onContentLoaded: function() {
|
onContentLoaded: function() {
|
||||||
|
handleDownloadParam();
|
||||||
updateMainData();
|
updateMainData();
|
||||||
},
|
},
|
||||||
column: 'mainColumn',
|
column: 'mainColumn',
|
||||||
|
@ -800,8 +801,48 @@ window.addEvent('load', function() {
|
||||||
addMainWindowTabsEventListener();
|
addMainWindowTabsEventListener();
|
||||||
addSearchPanel();
|
addSearchPanel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
registerMagnetHandler();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function registerMagnetHandler() {
|
||||||
|
if (typeof navigator.registerProtocolHandler !== 'function')
|
||||||
|
return;
|
||||||
|
|
||||||
|
const hashParams = getHashParamsFromUrl();
|
||||||
|
hashParams.download = '';
|
||||||
|
|
||||||
|
const templateHashString = Object.toQueryString(hashParams).replace('download=', 'download=%s');
|
||||||
|
|
||||||
|
const templateUrl = location.origin + location.pathname
|
||||||
|
+ location.search + '#' + templateHashString;
|
||||||
|
|
||||||
|
navigator.registerProtocolHandler('magnet', templateUrl,
|
||||||
|
'qBittorrent WebUI magnet handler');
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleDownloadParam() {
|
||||||
|
// Extract torrent URL from download param in WebUI URL hash
|
||||||
|
const hashParams = getHashParamsFromUrl();
|
||||||
|
const url = hashParams.download;
|
||||||
|
if (!url)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Remove the download param from WebUI URL hash
|
||||||
|
delete hashParams.download;
|
||||||
|
let newHash = Object.toQueryString(hashParams);
|
||||||
|
newHash = newHash ? ('#' + newHash) : '';
|
||||||
|
history.replaceState('', document.title,
|
||||||
|
(location.pathname + location.search + newHash));
|
||||||
|
|
||||||
|
showDownloadPage([url]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getHashParamsFromUrl() {
|
||||||
|
const hashString = location.hash ? location.hash.replace(/^#/, '') : '';
|
||||||
|
return (hashString.length > 0) ? String.parseQueryString(hashString) : {};
|
||||||
|
}
|
||||||
|
|
||||||
function closeWindows() {
|
function closeWindows() {
|
||||||
MochaUI.closeAll();
|
MochaUI.closeAll();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue