refactored github handler, expanded scrtipable ui, expanded ui resposibillity on github api
This commit is contained in:
parent
3dbc1d7fa5
commit
15867de64d
43
github.js
43
github.js
@ -1 +1,42 @@
|
|||||||
let fetchLatest = async () => {}
|
const { Octokit, App } = require("octokit");
|
||||||
|
const {token} = require("./config/gittoken.json");
|
||||||
|
|
||||||
|
// Create a personal access token at https://github.com/settings/tokens/new?scopes=repo
|
||||||
|
var octokit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* initializes githubs octokit to handle interactions with the github api
|
||||||
|
* @param {Electron.BrowserWindow} mainWindow the main window for error handling
|
||||||
|
*/
|
||||||
|
let initGithub = async (mainWindow) => {
|
||||||
|
|
||||||
|
octokit = new Octokit({auth: token});
|
||||||
|
|
||||||
|
mainWindow.webContents.send("github-lookup", "logging in...");
|
||||||
|
|
||||||
|
const { data: { login }, } = await octokit.rest.users.getAuthenticated().catch(async err => {
|
||||||
|
if (err) {
|
||||||
|
console.log(err);
|
||||||
|
mainWindow.webContents.send("error-message", {label: "authentication failed", err: err})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fetches the latest release on a set repository
|
||||||
|
* @param {Electron.BrowserWindow} mainWindow the main window for error handling
|
||||||
|
*/
|
||||||
|
let fetchLatest = async (mainWindow, repo) => {
|
||||||
|
let releases = await octokit.rest.repos.getLatestRelease(repo).catch(async err => {
|
||||||
|
mainWindow.webContents.send("github-lookup", "no releases found");
|
||||||
|
});
|
||||||
|
|
||||||
|
if (releases != undefined) {
|
||||||
|
console.log(releases.data.tag_name);
|
||||||
|
if (releases.data.tag_name != "0.0.0") {
|
||||||
|
mainWindow.webContents.send("github-update", {"tag": releases.data.tag_name});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {initGithub, fetchLatest}
|
@ -11,10 +11,10 @@
|
|||||||
<body>
|
<body>
|
||||||
<div class="titlebar">NCOS Companion</div>
|
<div class="titlebar">NCOS Companion</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<h1 class="centered">Latest Version: V<span id="latest">0.0.0</span></h1>
|
<h1 class="centered">Latest Version: <span id="latest">0.0.0</span></h1>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-5">
|
<div class="col-5">
|
||||||
<h4 class="centered">Installed: V<span id="installed">0.0.0</span></h4>
|
<h4 class="centered">Installed: <span id="installed">0.0.0</span></h4>
|
||||||
<button class="download" id="download">Update to V<span id="latest">0.0.0</span></button>
|
<button class="download" id="download">Update to V<span id="latest">0.0.0</span></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-7" id="download-section">
|
<div class="col-7" id="download-section">
|
||||||
|
32
index.js
32
index.js
@ -1,14 +1,9 @@
|
|||||||
// Modules to control application life and create native browser window
|
// Modules to control application life and create native browser window
|
||||||
const { app, BrowserWindow, webContents, ipcRenderer } = require('electron')
|
const { app, BrowserWindow, webContents, ipcRenderer } = require('electron')
|
||||||
const { Octokit, App } = require("octokit");
|
|
||||||
const path = require('path')
|
const path = require('path')
|
||||||
const {token} = require("./config/gittoken.json");
|
const {initGithub, fetchLatest} = require("./github")
|
||||||
|
|
||||||
// Create a personal access token at https://github.com/settings/tokens/new?scopes=repo
|
|
||||||
const octokit = new Octokit({auth: token});
|
|
||||||
|
|
||||||
var mainWindow;
|
var mainWindow;
|
||||||
|
|
||||||
const createWindow = () => {
|
const createWindow = () => {
|
||||||
// Create the browser window.
|
// Create the browser window.
|
||||||
mainWindow = new BrowserWindow({
|
mainWindow = new BrowserWindow({
|
||||||
@ -32,26 +27,15 @@ const createWindow = () => {
|
|||||||
mainWindow.loadFile('index.html')
|
mainWindow.loadFile('index.html')
|
||||||
|
|
||||||
mainWindow.on("ready-to-show", async () => {
|
mainWindow.on("ready-to-show", async () => {
|
||||||
initGithub()
|
initGithub(mainWindow);
|
||||||
})
|
fetchLatest(mainWindow, {
|
||||||
|
owner: "Vortex-Dynamics",
|
||||||
|
repo: "NervUpdaterClient"
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
// Open the DevTools.
|
// Open the DevTools.
|
||||||
// mainWindow.webContents.openDevTools()
|
mainWindow.webContents.openDevTools()
|
||||||
}
|
|
||||||
|
|
||||||
async function initGithub (){
|
|
||||||
console.log(`token: %s`, token)
|
|
||||||
mainWindow.webContents.send("github-lookup", "looking up releases");
|
|
||||||
// Compare: https://docs.github.com/en/rest/reference/users#get-the-authenticated-user
|
|
||||||
const { data: { login }, } = await octokit.rest.users.getAuthenticated().catch(async err => {
|
|
||||||
if (err) {
|
|
||||||
console.log(err);
|
|
||||||
mainWindow.webContents.send("error-message", {label: "authentication failed", err: err})
|
|
||||||
}
|
|
||||||
});
|
|
||||||
console.log("Hello, %s", login);
|
|
||||||
mainWindow.webContents.send("github-lookup", "no releases found");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// This method will be called when Electron has finished
|
// This method will be called when Electron has finished
|
||||||
|
@ -4,8 +4,9 @@ const { contextBridge, ipcRenderer } = require('electron')
|
|||||||
|
|
||||||
contextBridge.exposeInMainWorld('electronAPI', {
|
contextBridge.exposeInMainWorld('electronAPI', {
|
||||||
handleError: (callback) => ipcRenderer.on("error-message", callback),
|
handleError: (callback) => ipcRenderer.on("error-message", callback),
|
||||||
updateProgress: (callback) => ipcRenderer.on('github-lookup', callback)
|
updateProgress: (callback) => ipcRenderer.on('github-lookup', callback),
|
||||||
})
|
updateFound: (callback) => ipcRenderer.on('github-update', callback)
|
||||||
|
});
|
||||||
|
|
||||||
window.addEventListener('DOMContentLoaded', () => {
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
const replaceText = (selector, text) => {
|
const replaceText = (selector, text) => {
|
||||||
@ -16,4 +17,4 @@ window.addEventListener('DOMContentLoaded', () => {
|
|||||||
for (const dependency of ['chrome', 'node', 'electron']) {
|
for (const dependency of ['chrome', 'node', 'electron']) {
|
||||||
replaceText(`${dependency}-version`, process.versions[dependency])
|
replaceText(`${dependency}-version`, process.versions[dependency])
|
||||||
}
|
}
|
||||||
})
|
});
|
19
render.js
19
render.js
@ -1,8 +1,11 @@
|
|||||||
window.electronAPI.updateProgress((_event, value) => {
|
window.electronAPI.updateProgress((_event, value) => {
|
||||||
console.log(_event)
|
|
||||||
console.log(value)
|
|
||||||
updateProgressStep(value);
|
updateProgressStep(value);
|
||||||
})
|
});
|
||||||
|
|
||||||
|
window.electronAPI.updateFound((_event, value) => {
|
||||||
|
toggleDownloadButton(true);
|
||||||
|
updateLatestHeader(value.tag);
|
||||||
|
});
|
||||||
|
|
||||||
window.electronAPI.handleError((_event, value) => {
|
window.electronAPI.handleError((_event, value) => {
|
||||||
let error = `
|
let error = `
|
||||||
@ -20,7 +23,15 @@ window.electronAPI.handleError((_event, value) => {
|
|||||||
`;
|
`;
|
||||||
|
|
||||||
document.querySelector("body").innerHTML = error;
|
document.querySelector("body").innerHTML = error;
|
||||||
})
|
});
|
||||||
|
|
||||||
|
function updateLatestHeader(version) {
|
||||||
|
document.getElementById("latest").innerHTML = version;
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateCurrentHeader(version) {
|
||||||
|
document.getElementById("installed").innerHTML = version;
|
||||||
|
}
|
||||||
|
|
||||||
function updateProgressBar(progress){
|
function updateProgressBar(progress){
|
||||||
document.getElementById("progress-bar").style.width = progress + "%";
|
document.getElementById("progress-bar").style.width = progress + "%";
|
||||||
|
Reference in New Issue
Block a user