mirror of
https://github.com/bitwarden/browser.git
synced 2024-11-13 10:24:20 +01:00
62 lines
1.9 KiB
TypeScript
62 lines
1.9 KiB
TypeScript
|
/* tslint:disable:no-console */
|
||
|
import * as ipc from 'node-ipc';
|
||
|
import { spawn } from 'child_process';
|
||
|
|
||
|
const StartDesktopCooldown = 60 * 1000; // 1 minute delay between attempts to start desktop
|
||
|
|
||
|
ipc.config.id = 'proxy';
|
||
|
ipc.config.retry = 1500;
|
||
|
ipc.config.logger = console.warn; // Stdout is used for native messaging
|
||
|
|
||
|
export default class IPC {
|
||
|
private connected = false;
|
||
|
private lastStartedDesktop = 0;
|
||
|
|
||
|
connect() {
|
||
|
ipc.connectTo('bitwarden', () => {
|
||
|
ipc.of.bitwarden.on('connect', () => {
|
||
|
this.connected = true;
|
||
|
console.error(
|
||
|
'## connected to bitwarden desktop ##',
|
||
|
ipc.config.delay
|
||
|
);
|
||
|
ipc.of.bitwarden.emit('message', 'hello');
|
||
|
});
|
||
|
|
||
|
ipc.of.bitwarden.on('disconnect', () => {
|
||
|
this.connected = false;
|
||
|
console.error('disconnected from world');
|
||
|
});
|
||
|
|
||
|
ipc.of.bitwarden.on('message', (data: any) => {
|
||
|
console.error('got a message from world : ', data);
|
||
|
});
|
||
|
|
||
|
ipc.of.bitwarden.on('error', (err: any) => {
|
||
|
if (err.syscall === 'connect' && this.lastStartedDesktop + StartDesktopCooldown < Date.now()) {
|
||
|
this.lastStartedDesktop = Date.now();
|
||
|
console.error('Attempting to start Bitwarden desktop application');
|
||
|
this.startDesktop();
|
||
|
}
|
||
|
console.error('error', err);
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
isConnected() {
|
||
|
return this.connected;
|
||
|
}
|
||
|
|
||
|
send(json: object) {
|
||
|
ipc.of.bitwarden.emit('message', json);
|
||
|
}
|
||
|
|
||
|
// TODO: Do we want to start the desktop application? How do we get the install path?
|
||
|
private startDesktop() {
|
||
|
spawn(
|
||
|
'C:\\Users\\Oscar\\Documents\\Projects\\Bitwarden\\desktop\\dist\\Bitwarden-Portable-1.22.2.exe',
|
||
|
{ detached: true }
|
||
|
);
|
||
|
}
|
||
|
}
|