refactored github handler, expanded scrtipable ui, expanded ui resposibillity on github api

This commit is contained in:
BuildTools 2023-02-06 18:12:49 +01:00
parent 3dbc1d7fa5
commit 15867de64d
5 changed files with 71 additions and 34 deletions

View File

@ -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}

View File

@ -11,10 +11,10 @@
<body>
<div class="titlebar">NCOS Companion</div>
<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="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>
</div>
<div class="col-7" id="download-section">

View File

@ -1,14 +1,9 @@
// Modules to control application life and create native browser window
const { app, BrowserWindow, webContents, ipcRenderer } = require('electron')
const { Octokit, App } = require("octokit");
const path = require('path')
const {token} = require("./config/gittoken.json");
// Create a personal access token at https://github.com/settings/tokens/new?scopes=repo
const octokit = new Octokit({auth: token});
const {initGithub, fetchLatest} = require("./github")
var mainWindow;
const createWindow = () => {
// Create the browser window.
mainWindow = new BrowserWindow({
@ -32,26 +27,15 @@ const createWindow = () => {
mainWindow.loadFile('index.html')
mainWindow.on("ready-to-show", async () => {
initGithub()
})
initGithub(mainWindow);
fetchLatest(mainWindow, {
owner: "Vortex-Dynamics",
repo: "NervUpdaterClient"
});
});
// Open the DevTools.
// 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");
mainWindow.webContents.openDevTools()
}
// This method will be called when Electron has finished

View File

@ -4,8 +4,9 @@ const { contextBridge, ipcRenderer } = require('electron')
contextBridge.exposeInMainWorld('electronAPI', {
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', () => {
const replaceText = (selector, text) => {
@ -16,4 +17,4 @@ window.addEventListener('DOMContentLoaded', () => {
for (const dependency of ['chrome', 'node', 'electron']) {
replaceText(`${dependency}-version`, process.versions[dependency])
}
})
});

View File

@ -1,8 +1,11 @@
window.electronAPI.updateProgress((_event, value) => {
console.log(_event)
console.log(value)
updateProgressStep(value);
})
});
window.electronAPI.updateFound((_event, value) => {
toggleDownloadButton(true);
updateLatestHeader(value.tag);
});
window.electronAPI.handleError((_event, value) => {
let error = `
@ -20,7 +23,15 @@ window.electronAPI.handleError((_event, value) => {
`;
document.querySelector("body").innerHTML = error;
})
});
function updateLatestHeader(version) {
document.getElementById("latest").innerHTML = version;
}
function updateCurrentHeader(version) {
document.getElementById("installed").innerHTML = version;
}
function updateProgressBar(progress){
document.getElementById("progress-bar").style.width = progress + "%";