Open in desktop #6667
6 changed files with 55 additions and 7 deletions
|
@ -45,9 +45,15 @@ let daemon;
|
||||||
let lbryFirst;
|
let lbryFirst;
|
||||||
|
|
||||||
const appState = {};
|
const appState = {};
|
||||||
|
const PROTOCOL = 'lbry';
|
||||||
|
|
||||||
if (process.platform !== 'linux') {
|
if (isDev && process.platform === 'win32') {
|
||||||
app.setAsDefaultProtocolClient('lbry');
|
// Setting this is required to get this working in dev mode.
|
||||||
|
app.setAsDefaultProtocolClient(PROTOCOL, process.execPath, [
|
||||||
|
path.resolve(process.argv[1]),
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
app.setAsDefaultProtocolClient(PROTOCOL);
|
||||||
}
|
}
|
||||||
|
|
||||||
app.name = 'LBRY';
|
app.name = 'LBRY';
|
||||||
|
@ -149,9 +155,15 @@ if (!gotSingleInstanceLock) {
|
||||||
app.on('second-instance', (event, argv) => {
|
app.on('second-instance', (event, argv) => {
|
||||||
// Send the url to the app to navigate first, then focus
|
// Send the url to the app to navigate first, then focus
|
||||||
if (rendererWindow) {
|
if (rendererWindow) {
|
||||||
if ((process.platform === 'win32' || process.platform === 'linux') && String(argv[1]).startsWith('lbry')) {
|
// External uri (last item on argv):
|
||||||
let URI = argv[1];
|
const EXTERNAL_URI = (argv.length) ? argv[argv.length - 1] : '';
|
||||||
|
// Handle protocol requests for windows and linux
|
||||||
|
const platforms = (process.platform === 'win32' || process.platform === 'linux');
|
||||||
|
// Is LBRY protocol
|
||||||
|
const isProtocolURI = String(EXTERNAL_URI).startsWith(PROTOCOL + '://');
|
||||||
|
// External protocol requested:
|
||||||
|
if (platforms && isProtocolURI) {
|
||||||
|
let URI = EXTERNAL_URI;
|
||||||
// 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.
|
||||||
|
|
|
@ -2058,14 +2058,15 @@
|
||||||
"Only select creators can receive tips at this time": "Only select creators can receive tips at this time",
|
"Only select creators can receive tips at this time": "Only select creators can receive tips at this time",
|
||||||
"The payment will be made from your saved card": "The payment will be made from your saved card",
|
"The payment will be made from your saved card": "The payment will be made from your saved card",
|
||||||
"Commenting...": "Commenting...",
|
"Commenting...": "Commenting...",
|
||||||
"Show %count% replies": "Show %count% replies",
|
|
||||||
"Show reply": "Show reply",
|
|
||||||
"added to": "added to",
|
"added to": "added to",
|
||||||
"removed from": "removed from",
|
"removed from": "removed from",
|
||||||
"Skip Navigation": "Skip Navigation",
|
"Skip Navigation": "Skip Navigation",
|
||||||
"Reset": "Reset",
|
"Reset": "Reset",
|
||||||
"Reset to original (previous) publish date": "Reset to original (previous) publish date",
|
"Reset to original (previous) publish date": "Reset to original (previous) publish date",
|
||||||
"Search for something...": "Search for something...",
|
"Search for something...": "Search for something...",
|
||||||
|
"Open in Desktop": "Open in Desktop",
|
||||||
|
"Show %count% replies": "Show %count% replies",
|
||||||
|
"Show reply": "Show reply",
|
||||||
"Confirm Comment Deletion": "Confirm Comment Deletion",
|
"Confirm Comment Deletion": "Confirm Comment Deletion",
|
||||||
"Remove Comment": "Remove Comment",
|
"Remove Comment": "Remove Comment",
|
||||||
"Are you sure you want to remove this comment?": "Are you sure you want to remove this comment?",
|
"Are you sure you want to remove this comment?": "Are you sure you want to remove this comment?",
|
||||||
|
|
|
@ -9,6 +9,7 @@ import { Menu, MenuButton, MenuList, MenuItem } from '@reach/menu-button';
|
||||||
import Icon from 'component/common/icon';
|
import Icon from 'component/common/icon';
|
||||||
import { generateShareUrl, generateRssUrl, generateLbryContentUrl } from 'util/url';
|
import { generateShareUrl, generateRssUrl, generateLbryContentUrl } from 'util/url';
|
||||||
import { useHistory } from 'react-router';
|
import { useHistory } from 'react-router';
|
||||||
|
import { useIsMobile } from 'effects/use-screensize';
|
||||||
import { buildURI, parseURI, COLLECTIONS_CONSTS } from 'lbry-redux';
|
import { buildURI, parseURI, COLLECTIONS_CONSTS } from 'lbry-redux';
|
||||||
|
|
||||||
const SHARE_DOMAIN = SHARE_DOMAIN_URL || URL;
|
const SHARE_DOMAIN = SHARE_DOMAIN_URL || URL;
|
||||||
|
@ -94,6 +95,7 @@ function ClaimMenuList(props: Props) {
|
||||||
editedCollection,
|
editedCollection,
|
||||||
isAuthenticated,
|
isAuthenticated,
|
||||||
} = props;
|
} = props;
|
||||||
|
const isMobile = useIsMobile();
|
||||||
const incognitoClaim = contentChannelUri && !contentChannelUri.includes('@');
|
const incognitoClaim = contentChannelUri && !contentChannelUri.includes('@');
|
||||||
const isChannel = !incognitoClaim && !contentSigningChannel;
|
const isChannel = !incognitoClaim && !contentSigningChannel;
|
||||||
const { channelName } = parseURI(contentChannelUri);
|
const { channelName } = parseURI(contentChannelUri);
|
||||||
|
@ -229,6 +231,10 @@ function ClaimMenuList(props: Props) {
|
||||||
push(`/$/${PAGES.REPORT_CONTENT}?claimId=${contentClaim && contentClaim.claim_id}`);
|
push(`/$/${PAGES.REPORT_CONTENT}?claimId=${contentClaim && contentClaim.claim_id}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleOpenInDesktop() {
|
||||||
|
window.open(claim.permanent_url, '_top');
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Menu>
|
<Menu>
|
||||||
<MenuButton
|
<MenuButton
|
||||||
|
@ -410,6 +416,15 @@ function ClaimMenuList(props: Props) {
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{IS_WEB && !isMobile && (
|
||||||
|
<MenuItem className="comment__menu-option" onSelect={handleOpenInDesktop}>
|
||||||
|
<div className="menu__link">
|
||||||
|
<Icon aria-hidden icon={ICONS.DESKTOP} />
|
||||||
|
{__('Open in Desktop')}
|
||||||
|
</div>
|
||||||
|
</MenuItem>
|
||||||
|
)}
|
||||||
|
|
||||||
{!claimIsMine && !isMyCollection && (
|
{!claimIsMine && !isMyCollection && (
|
||||||
<MenuItem className="comment__menu-option" onSelect={handleReportContent}>
|
<MenuItem className="comment__menu-option" onSelect={handleReportContent}>
|
||||||
<div className="menu__link">
|
<div className="menu__link">
|
||||||
|
|
|
@ -2331,4 +2331,11 @@ export const icons = {
|
||||||
<path d="M4.954 14.753l3.535 3.535-1.768 1.768-3.535-3.535z" />
|
<path d="M4.954 14.753l3.535 3.535-1.768 1.768-3.535-3.535z" />
|
||||||
</g>
|
</g>
|
||||||
),
|
),
|
||||||
|
[ICONS.DESKTOP]: buildIcon(
|
||||||
|
<g>
|
||||||
|
<rect x="2" y="3" width="20" height="14" rx="2" ry="2" />
|
||||||
|
<line x1="8" y1="21" x2="16" y2="21" />
|
||||||
|
<line x1="12" y1="17" x2="12" y2="21" />
|
||||||
|
</g>
|
||||||
|
),
|
||||||
};
|
};
|
||||||
|
|
|
@ -113,6 +113,10 @@ function FileActions(props: Props) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleOpenInDesktop() {
|
||||||
|
window.open(claim.permanent_url, '_top');
|
||||||
|
}
|
||||||
|
|
||||||
const lhsSection = (
|
const lhsSection = (
|
||||||
<>
|
<>
|
||||||
{ENABLE_FILE_REACTIONS && !reactionsDisabled && <FileReactions uri={uri} livestream={isLivestreamClaim} />}
|
{ENABLE_FILE_REACTIONS && !reactionsDisabled && <FileReactions uri={uri} livestream={isLivestreamClaim} />}
|
||||||
|
@ -188,6 +192,14 @@ function FileActions(props: Props) {
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
)}
|
)}
|
||||||
{/* @endif */}
|
{/* @endif */}
|
||||||
|
{IS_WEB && !isMobile && (
|
||||||
|
<MenuItem className="comment__menu-option" onSelect={handleOpenInDesktop}>
|
||||||
|
<div className="menu__link">
|
||||||
|
<Icon aria-hidden icon={ICONS.DESKTOP} />
|
||||||
|
{__('Open in Desktop')}
|
||||||
|
</div>
|
||||||
|
</MenuItem>
|
||||||
|
)}
|
||||||
{!claimIsMine && (
|
{!claimIsMine && (
|
||||||
<MenuItem
|
<MenuItem
|
||||||
className="comment__menu-option"
|
className="comment__menu-option"
|
||||||
|
|
|
@ -165,3 +165,4 @@ export const GLOBE = 'globe';
|
||||||
export const RSS = 'rss';
|
export const RSS = 'rss';
|
||||||
export const STAR = 'star';
|
export const STAR = 'star';
|
||||||
export const MUSIC = 'MusicCategory';
|
export const MUSIC = 'MusicCategory';
|
||||||
|
export const DESKTOP = 'desktop';
|
||||||
|
|
Loading…
Reference in a new issue