Skip to content

Commit a0b4000

Browse files
authored
Merge pull request #8 from hackmdio/copy-url-menu
Copy url menu
2 parents 24c529a + 9dfce7a commit a0b4000

File tree

4 files changed

+51
-20
lines changed

4 files changed

+51
-20
lines changed

ipc/consumer.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ module.exports = function (commandId, args = {}) {
4040
})
4141
}
4242
}).catch(err => console.log(err))
43+
case 'copyUrl':
44+
BrowserWindow.getFocusedWindow().webContents.send('copy-url')
45+
break
4346
default:
4447
break
4548
}

ipc/exec.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
const { ipcMain, ipcRenderer } = require('electron')
2+
3+
const consumer = require('./consumer')
4+
5+
const isMainProcess = typeof ipcMain !== 'undefined'
6+
7+
const exec = (commandId, args = {}) => {
8+
if (isMainProcess) {
9+
consumer(commandId, args)
10+
} else {
11+
ipcRenderer.send('main:command', { commandId, args })
12+
}
13+
}
14+
15+
module.exports = exec

menu.js

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,12 @@
1-
const { ipcMain, ipcRenderer } = require('electron')
21
const path = require('path')
32
const url = require('url')
43
const os = require('os')
54

65
const Menu = require('electron').Menu || require('electron').remote.Menu
76
const app = require('electron').app || require('electron').remote.app
87

9-
const consumer = require('./ipc/consumer')
108
const { getServerUrl } = require('./utils')
11-
12-
const isMainProcess = typeof ipcMain !== 'undefined'
13-
14-
function exec (commandId, args = {}) {
15-
if (isMainProcess) {
16-
consumer(commandId, args)
17-
} else {
18-
ipcRenderer.send('main:command', { commandId, args })
19-
}
20-
}
9+
const exec = require('./ipc/exec')
2110

2211
const template = [
2312
{
@@ -57,6 +46,12 @@ const template = [
5746
{
5847
role: 'copy'
5948
},
49+
{
50+
label: 'Copy URL',
51+
click () {
52+
exec('copyUrl')
53+
}
54+
},
6055
{
6156
role: 'paste'
6257
},

renderer.js

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const { ipcRenderer, remote, clipboard } = require('electron')
2-
const { BrowserWindow } = remote
2+
const { BrowserWindow, Menu } = remote
33

44
const os = remote.require('os')
55
const path = remote.require('path')
@@ -22,7 +22,9 @@ window.onload = () => {
2222
if (isMac) {
2323
document.querySelector('navbar').style.paddingLeft = '75px'
2424
document.querySelector('#navbar-container .control-buttons:nth-child(3)').style.display = 'none'
25-
document.querySelector('#navbar-container .more-menu').style.display = 'none'
25+
if (process.env.NODE_ENV !== 'development') {
26+
document.querySelector('#navbar-container .more-menu').style.display = 'none'
27+
}
2628
}
2729

2830
let targetURL
@@ -36,6 +38,18 @@ window.onload = () => {
3638

3739
const webview = document.getElementById('main-window')
3840

41+
function copyUrl () {
42+
clipboard.writeText(webview.getURL())
43+
new Notification('URL copied', { title: 'URL copied', body: webview.getURL() }) // eslint-disable-line no-new
44+
}
45+
46+
const navbarMenu = Menu.buildFromTemplate([{
47+
label: 'Copy URL',
48+
click () {
49+
copyUrl()
50+
}
51+
}])
52+
3953
webview.addEventListener('dom-ready', function () {
4054
// set webview title
4155
document.querySelector('#navbar-container .title').innerHTML = webview.getTitle()
@@ -69,13 +83,8 @@ window.onload = () => {
6983
webview.loadURL(webview.getURL())
7084
}
7185

72-
document.querySelector('#navbar-container .title').onclick = () => {
73-
clipboard.writeText(webview.getURL())
74-
Notification('URL copied', { title: 'URL copied', body: webview.getURL() })
75-
}
76-
7786
document.querySelector('#navbar-container .more-menu').onclick = () => {
78-
menu.popup(require('electron').remote.getCurrentWindow())
87+
menu.popup(remote.getCurrentWindow())
7988
}
8089

8190
document.querySelector('#navbar-container .minimize-window').onclick = () => {
@@ -97,6 +106,10 @@ window.onload = () => {
97106
win.close()
98107
}
99108

109+
document.querySelector('#navbar-container').addEventListener('contextmenu', () => {
110+
navbarMenu.popup(remote.getCurrentWindow())
111+
})
112+
100113
if (process.env.NODE_ENV === 'development') {
101114
webview.openDevTools()
102115
}
@@ -141,6 +154,11 @@ window.onload = () => {
141154
ipcRenderer.on('supported-version', () => {
142155
$('navbar').removeClass('unsupported')
143156
})
157+
158+
ipcRenderer.on('copy-url', () => {
159+
copyUrl()
160+
})
161+
144162
$('#serverurl-config-modal.modal #submit-serverurl').click(function () {
145163
let serverurl = $('#serverurl-config-modal.modal input[type="text"]').val()
146164

0 commit comments

Comments
 (0)