fix: opening LBRY hyperlinks broken on Linux (https://github.com/lbryio/lbry-app/issues/1120)

This fixes https://github.com/lbryio/lbry-app/issues/1120
This commit is contained in:
Igor Gassmann 2018-03-19 19:03:14 -04:00
parent e6e8218095
commit 5579a12cf3
3 changed files with 27 additions and 11 deletions

View file

@ -46,7 +46,8 @@
"target": "deb", "target": "deb",
"category": "AudioVideo;Video", "category": "AudioVideo;Video",
"desktop": { "desktop": {
"MimeType": "x-scheme-handler/lbry;" "MimeType": "x-scheme-handler/lbry",
"Exec": "/opt/LBRY/lbry %U"
} }
}, },
"deb": { "deb": {

View file

@ -33,8 +33,11 @@ export default appState => {
window.loadURL(rendererURL); window.loadURL(rendererURL);
let deepLinkingURI; let deepLinkingURI;
// Protocol handler for win32 if (
if (process.platform === 'win32' && String(process.argv[1]).startsWith('lbry')) { (process.platform === 'win32' || process.platform === 'linux') &&
String(process.argv[1]).startsWith('lbry')
) {
[, deepLinkingURI] = process.argv;
// Keep only command line / deep linked arguments // Keep only command line / deep linked arguments
// Windows normalizes URIs when they're passed in from other apps. On Windows, this tries to // Windows normalizes URIs when they're passed in from other apps. On Windows, this tries to
// restore the original URI that was typed. // restore the original URI that was typed.
@ -42,8 +45,10 @@ export default appState => {
// path, so we just strip it off. // path, so we just strip it off.
// - In a URI with a claim ID, like lbry://channel#claimid, Windows interprets the hash mark as // - In a URI with a claim ID, like lbry://channel#claimid, Windows interprets the hash mark as
// an anchor and converts it to lbry://channel/#claimid. We remove the slash here as well. // an anchor and converts it to lbry://channel/#claimid. We remove the slash here as well.
deepLinkingURI = process.argv[1].replace(/\/$/, '').replace('/#', '#'); if (process.platform === 'win32') {
} else if (process.platform === 'darwin') { deepLinkingURI = deepLinkingURI.replace(/\/$/, '').replace('/#', '#');
}
} else {
deepLinkingURI = appState.macDeepLinkingURI; deepLinkingURI = appState.macDeepLinkingURI;
} }

View file

@ -218,16 +218,26 @@ process.on('uncaughtException', error => {
// Force single instance application // Force single instance application
const isSecondInstance = app.makeSingleInstance(argv => { const isSecondInstance = app.makeSingleInstance(argv => {
// Protocol handler for win32 if (
// argv: An array of the second instances (command line / deep linked) arguments (process.platform === 'win32' || process.platform === 'linux') &&
String(argv[1]).startsWith('lbry')
) {
let URI = argv[1];
let URI;
if (process.platform === 'win32' && String(argv[1]).startsWith('lbry')) {
// Keep only command line / deep linked arguments // Keep only command line / deep linked arguments
URI = argv[1].replace(/\/$/, '').replace('/#', '#'); // Windows normalizes URIs when they're passed in from other apps. On Windows, this tries to
// restore the original URI that was typed.
// - If the URI has no path, Windows adds a trailing slash. LBRY URIs can't have a slash with no
// path, so we just strip it off.
// - In a URI with a claim ID, like lbry://channel#claimid, Windows interprets the hash mark as
// an anchor and converts it to lbry://channel/#claimid. We remove the slash here as well.
if (process.platform === 'win32') {
URI = URI.replace(/\/$/, '').replace('/#', '#');
}
rendererWindow.webContents.send('open-uri-requested', URI);
} }
rendererWindow.webContents.send('open-uri-requested', URI);
rendererWindow.show(); rendererWindow.show();
}); });