Files: f50400a95d8c5a977f0f39ee8b857c5ee9cdd630 / lib / depject / app / sync / external-handler / git.js
1064 bytesRaw
1 | const nest = require('depnest') |
2 | const { shell } = require('electron') |
3 | const net = require('net') |
4 | |
5 | exports.gives = nest('app.sync.externalHandler') |
6 | |
7 | const externalViewer = 'https://git.scuttlebot.io' |
8 | const localViewer = 'http://localhost:7718' |
9 | |
10 | const gitMessageTypes = [ |
11 | 'git-repo', |
12 | 'git-update', |
13 | 'issue', |
14 | 'issue-edit', |
15 | 'pull-request' |
16 | ] |
17 | |
18 | exports.create = () => { |
19 | return nest('app.sync.externalHandler', function (msg) { |
20 | if (!gitMessageTypes.includes(msg.value.content.type)) return |
21 | return function gitHandler (id) { |
22 | portInUse(7718, (useLocal) => { |
23 | shell.openExternal(`${useLocal ? localViewer : externalViewer}/${encodeURIComponent(id)}`) |
24 | }) |
25 | } |
26 | }) |
27 | } |
28 | |
29 | function portInUse (port, cb) { |
30 | // super hacky check! |
31 | const server = net.createServer(function () {}) |
32 | server.listen(port, '127.0.0.1') |
33 | server.on('error', function () { |
34 | cb(true) // eslint-disable-line node/no-callback-literal |
35 | }) |
36 | server.on('listening', function () { |
37 | server.close() |
38 | cb(false) // eslint-disable-line node/no-callback-literal |
39 | }) |
40 | } |
41 |
Built with git-ssb-web