Display recently visited issues and merge requests
This commit is contained in:
parent
768f70fc36
commit
1eba506f99
Binary file not shown.
|
After Width: | Height: | Size: 436 B |
12
index.html
12
index.html
|
|
@ -2,16 +2,14 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
|
||||
<meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; script-src 'self'">
|
||||
<title>Hello World!</title>
|
||||
<link rel="stylesheet" href="style.css">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter&display=swap" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<h1>Hello World!</h1>
|
||||
We are using Node.js <span id="node-version"></span>,
|
||||
Chromium <span id="chrome-version"></span>,
|
||||
and Electron <span id="electron-version"></span>.
|
||||
|
||||
<img id="header-logo" src="https://about.gitlab.com/images/press/logo/svg/gitlab-icon-1-color-white-rgb.svg" /></br>
|
||||
<div id="test"></div>
|
||||
<script src="./renderer.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
121
myApp.js
121
myApp.js
|
|
@ -1,33 +1,108 @@
|
|||
const { menubar } = require('menubar')
|
||||
const { Menu, net } = require("electron")
|
||||
const { Menu } = require("electron")
|
||||
const fetch = require('node-fetch');
|
||||
const Store = require('electron-store');
|
||||
const store = new Store()
|
||||
const shell = require('electron').shell
|
||||
const BrowserHistory = require('node-browser-history');
|
||||
|
||||
let access_token = store.get('access_token')
|
||||
let user_id = store.get('user_id')
|
||||
let username = store.get('username')
|
||||
let recentlyVisitedString = ''
|
||||
let numberOfRecentlyVisited = 10
|
||||
|
||||
|
||||
const mb = menubar({
|
||||
showDockIcon: false,
|
||||
showOnAllWorkspaces: false,
|
||||
icon: __dirname + '/assets/gitlab.png',
|
||||
browserWindow: {
|
||||
width: 600,
|
||||
height: 600
|
||||
}
|
||||
});
|
||||
|
||||
mb.on('ready', () => {
|
||||
const contextMenu = Menu.buildFromTemplate([
|
||||
{ label: 'Quit', click: () => { mb.app.quit(); } }
|
||||
])
|
||||
mb.tray.on('right-click', () => {
|
||||
mb.tray.popUpContextMenu(contextMenu)
|
||||
})
|
||||
console.log(access_token)
|
||||
console.log(user_id)
|
||||
console.log(username)
|
||||
|
||||
const request = net.request(' https://gitlab.com/api/v4/users?username=mvanremmerden')
|
||||
request.on('response', (response) => {
|
||||
response.on('data', (chunk) => {
|
||||
console.log(JSON.parse(chunk)[0].id)
|
||||
})
|
||||
response.on('end', () => {
|
||||
console.log('No more data in response.')
|
||||
})
|
||||
})
|
||||
request.end()
|
||||
});
|
||||
if (access_token && user_id && username) {
|
||||
setupSecondaryMenu()
|
||||
mb.on('after-create-window', () => {
|
||||
//mb.window.webContents.openDevTools()
|
||||
getRecentlyVisited()
|
||||
|
||||
mb.window.webContents.setWindowOpenHandler(({ url }) => {
|
||||
shell.openExternal(url);
|
||||
return { action: 'deny' };
|
||||
});
|
||||
})
|
||||
} else {
|
||||
setupSecondaryMenu()
|
||||
mb.on('after-create-window', () => {
|
||||
mb.window.loadURL('https://gitlab.com/oauth/authorize?client_id=99c07cc5466cbc721ef2667acd38d3acf45edd2fc314a955861be783585f4be5&redirect_uri=https://gitlab.com&response_type=token&state=test&scope=api')
|
||||
mb.window.on('page-title-updated', handleLogin)
|
||||
})
|
||||
}
|
||||
|
||||
function setupSecondaryMenu() {
|
||||
mb.on('ready', () => {
|
||||
const contextMenu = Menu.buildFromTemplate([
|
||||
{ label: 'Quit', click: () => { mb.app.quit(); } }
|
||||
])
|
||||
mb.tray.on('right-click', () => {
|
||||
mb.tray.popUpContextMenu(contextMenu)
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
function handleLogin() {
|
||||
if (mb.window.webContents.getURL().indexOf('#access_token=') != '-1') {
|
||||
const code = mb.window.webContents.getURL().split('#access_token=')[1].replace('&token_type=Bearer&state=test', '')
|
||||
console.log('https://gitlab.com/api/v4/issues?assignee_id=813373&access_token=' + code)
|
||||
fetch('https://gitlab.com/api/v4/user?access_token=' + code).then(result => {
|
||||
return result.json()
|
||||
}).then(result => {
|
||||
console.log(code)
|
||||
console.log(result.id)
|
||||
console.log(result.username)
|
||||
store.set('access_token', code)
|
||||
store.set('user_id', result.id)
|
||||
store.set('username', result.username)
|
||||
mb.window.loadURL(`file://${__dirname}/index.html`)
|
||||
mb.window.removeListener('page-title-updated', handleLogin)
|
||||
})
|
||||
} else {
|
||||
console.log('not loaded')
|
||||
}
|
||||
}
|
||||
|
||||
function getRecentlyVisited() {
|
||||
BrowserHistory.getAllHistory(500).then(history => {
|
||||
history.forEach(item => {
|
||||
item = item.reverse()
|
||||
let i = 0
|
||||
for(let j = 0; j < item.length; j++) {
|
||||
if (item[j].url.indexOf('https://gitlab.com/') == 0 && (item[j].url.indexOf('/-/issues/') != -1 || item[j].url.indexOf('/-/merge-requests/') != -1)) {
|
||||
i++
|
||||
recentlyVisitedString += '<a href=\\"' + item[j].url + '\\" target=\\"_blank\\">' + escapeHtml(item[j].title.split('·')[0]) + '</a></br></br>'
|
||||
if(i == numberOfRecentlyVisited) {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
mb.window.webContents.executeJavaScript('document.getElementById("test").innerHTML = "' + recentlyVisitedString + '"')
|
||||
})
|
||||
}
|
||||
|
||||
function escapeHtml(unsafe) {
|
||||
return unsafe
|
||||
.replace(/&/g, "&")
|
||||
.replace(/</g, "<")
|
||||
.replace(/>/g, ">")
|
||||
.replace(/"/g, """)
|
||||
.replace(/'/g, "'");
|
||||
}
|
||||
|
||||
mb.on('after-create-window', () => {
|
||||
mb.app.dock.hide();
|
||||
mb.window.openDevTools()
|
||||
})
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -24,11 +24,14 @@
|
|||
"@electron-forge/maker-rpm": "^6.0.0-beta.57",
|
||||
"@electron-forge/maker-squirrel": "^6.0.0-beta.57",
|
||||
"@electron-forge/maker-zip": "^6.0.0-beta.57",
|
||||
"electron": "^13.1.1"
|
||||
"electron": "^13.1.1",
|
||||
"electron-store": "^8.0.0",
|
||||
"node-fetch": "^2.6.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"electron-squirrel-startup": "^1.0.0",
|
||||
"menubar": "^9.0.4"
|
||||
"menubar": "^9.0.4",
|
||||
"node-browser-history": "^2.4.5"
|
||||
},
|
||||
"config": {
|
||||
"forge": {
|
||||
|
|
|
|||
Loading…
Reference in New Issue