git ssb

1+

Daan Patchwork / patchwork



Tree: f50400a95d8c5a977f0f39ee8b857c5ee9cdd630

Files: f50400a95d8c5a977f0f39ee8b857c5ee9cdd630 / lib / depject / app / sync / external-handler / git.js

1064 bytesRaw
1const nest = require('depnest')
2const { shell } = require('electron')
3const net = require('net')
4
5exports.gives = nest('app.sync.externalHandler')
6
7const externalViewer = 'https://git.scuttlebot.io'
8const localViewer = 'http://localhost:7718'
9
10const gitMessageTypes = [
11 'git-repo',
12 'git-update',
13 'issue',
14 'issue-edit',
15 'pull-request'
16]
17
18exports.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
29function 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