48 lines
1.2 KiB
JavaScript
48 lines
1.2 KiB
JavaScript
// @flow
|
|
import { typeof app as ElectronApp, type electron$BrowserWindow, remote } from 'electron'; // eslint-disable-line
|
|
import store from './electron-store';
|
|
|
|
const sendMessage = (mainWindow, url) => {
|
|
if (mainWindow) {
|
|
if (mainWindow.isVisible()) {
|
|
mainWindow.webContents.send('on-deep-link', url);
|
|
} else {
|
|
mainWindow.on('show', () => mainWindow.webContents.send('on-deep-link', url));
|
|
}
|
|
}
|
|
};
|
|
|
|
export const searchUriInArgv = (argv: string[]): ?string => {
|
|
const argIndex = argv.findIndex(item => /zcash:(\/\/)?/.test(item));
|
|
return argv[argIndex];
|
|
};
|
|
|
|
export const handleDeeplink = ({
|
|
app,
|
|
mainWindow,
|
|
argv = process.argv,
|
|
listenOpenUrl = true,
|
|
}: {
|
|
app: ElectronApp,
|
|
mainWindow: electron$BrowserWindow,
|
|
argv?: string[],
|
|
listenOpenUrl?: boolean,
|
|
}) => {
|
|
if (listenOpenUrl) {
|
|
app.on('open-url', (event: Object, url: string) => {
|
|
event.preventDefault();
|
|
// Save the url on electron-store, so we can get the value on withDeeplink HOC
|
|
store.set('OSX_DEEPLINK_URL', url);
|
|
sendMessage(mainWindow, url);
|
|
});
|
|
}
|
|
|
|
if (process.platform === 'win32' || process.platform === 'linux') {
|
|
const arg = searchUriInArgv(argv);
|
|
|
|
if (arg) {
|
|
sendMessage(mainWindow, arg);
|
|
}
|
|
}
|
|
};
|