zepio/config/handle-deeplink.js

49 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);
}
}
};