mirror of
https://github.com/yuzu-emu/liftinstall.git
synced 2025-03-05 04:29:57 +00:00
* platform: fix build on Linux and update web-view * deps: replace xz-decom with xz2 and update deps * platform: fix regression... ... that prevents the build on Windows * linux: implement platform-dependent functions * travis: add macos and windows CI * travis: use official Rust Docker image * Update Cargo.lock for new version * Break apart REST into separate services This cleans up locking, ensures consistent futures for all endpoints and enhances code re-use. * Clean up codebase, fixing minor errors * Update packages, use async client for downloading config While this has a hell of a lot more boilerplate, this is quite a bit cleaner. * Add explicit 'dyn's as per Rust nightly requirements * Migrate self updating functions to own module * Migrate assets to server module * Use patched web-view to fix dialogs, remove nfd * Implement basic dark mode * Revert window.close usage * ui: split files and use Webpack * frontend: ui: include prebuilt assets... ... and update rust side stuff * build: integrate webpack building into build.rs * Polish Vue UI split * Add instructions for node + yarn * native: fix uninstall self-destruction behavior...... by not showing the command prompt window and fork-spawning the cmd * native: deal with Unicode issues in native APIs * native: further improve Unicode support on Windows * travis: add cache and fix issues * ui: use Buefy components to... ... beautify the UI * ui: makes error message selectable * Make launcher mode behaviour more robust * Fix error display on launcher pages * Correctly handle exit on error * Bump installer version
145 lines
3.6 KiB
JavaScript
145 lines
3.6 KiB
JavaScript
/**
|
|
* helpers.js
|
|
*
|
|
* Additional state-less helper methods.
|
|
*/
|
|
|
|
var request_id = 0
|
|
|
|
/**
|
|
* Makes a AJAX request.
|
|
*
|
|
* @param path The path to connect to.
|
|
* @param successCallback A callback with a JSON payload.
|
|
* @param failCallback A fail callback. Optional.
|
|
* @param data POST data. Optional.
|
|
*/
|
|
export function ajax (path, successCallback, failCallback, data) {
|
|
if (failCallback === undefined) {
|
|
failCallback = defaultFailHandler
|
|
}
|
|
|
|
console.log('Making HTTP request to ' + path)
|
|
|
|
var req = new XMLHttpRequest()
|
|
|
|
req.addEventListener('load', function () {
|
|
// The server can sometimes return a string error. Make sure we handle this.
|
|
if (this.status === 200 && this.getResponseHeader('Content-Type').indexOf('application/json') !== -1) {
|
|
successCallback(JSON.parse(this.responseText))
|
|
} else {
|
|
failCallback(this.responseText)
|
|
}
|
|
})
|
|
req.addEventListener('error', failCallback)
|
|
|
|
req.open(data == null ? 'GET' : 'POST', path + '?nocache=' + request_id++, true)
|
|
// Rocket only currently supports URL encoded forms.
|
|
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
|
|
|
|
if (data != null) {
|
|
var form = ''
|
|
|
|
for (var key in data) {
|
|
if (!data.hasOwnProperty(key)) {
|
|
continue
|
|
}
|
|
|
|
if (form !== '') {
|
|
form += '&'
|
|
}
|
|
|
|
form += encodeURIComponent(key) + '=' + encodeURIComponent(data[key])
|
|
}
|
|
|
|
req.send(form)
|
|
} else {
|
|
req.send()
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Makes a AJAX request, streaming each line as it arrives. Type should be text/plain,
|
|
* each line will be interpreted as JSON separately.
|
|
*
|
|
* @param path The path to connect to.
|
|
* @param callback A callback with a JSON payload. Called for every line as it comes.
|
|
* @param successCallback A callback with a raw text payload.
|
|
* @param failCallback A fail callback. Optional.
|
|
* @param data POST data. Optional.
|
|
*/
|
|
export function stream_ajax (path, callback, successCallback, failCallback, data) {
|
|
var req = new XMLHttpRequest()
|
|
|
|
console.log('Making streaming HTTP request to ' + path)
|
|
|
|
req.addEventListener('load', function () {
|
|
// The server can sometimes return a string error. Make sure we handle this.
|
|
if (this.status === 200) {
|
|
successCallback(this.responseText)
|
|
} else {
|
|
failCallback(this.responseText)
|
|
}
|
|
})
|
|
|
|
var buffer = ''
|
|
var seenBytes = 0
|
|
|
|
req.onreadystatechange = function () {
|
|
if (req.readyState > 2) {
|
|
buffer += req.responseText.substr(seenBytes)
|
|
|
|
var pointer
|
|
while ((pointer = buffer.indexOf('\n')) >= 0) {
|
|
var line = buffer.substring(0, pointer).trim()
|
|
buffer = buffer.substring(pointer + 1)
|
|
|
|
if (line.length === 0) {
|
|
continue
|
|
}
|
|
|
|
var contents = JSON.parse(line)
|
|
callback(contents)
|
|
}
|
|
|
|
seenBytes = req.responseText.length
|
|
}
|
|
}
|
|
|
|
req.addEventListener('error', failCallback)
|
|
|
|
req.open(data == null ? 'GET' : 'POST', path + '?nocache=' + request_id++, true)
|
|
// Rocket only currently supports URL encoded forms.
|
|
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
|
|
|
|
if (data != null) {
|
|
var form = ''
|
|
|
|
for (var key in data) {
|
|
if (!data.hasOwnProperty(key)) {
|
|
continue
|
|
}
|
|
|
|
if (form !== '') {
|
|
form += '&'
|
|
}
|
|
|
|
form += encodeURIComponent(key) + '=' + encodeURIComponent(data[key])
|
|
}
|
|
|
|
req.send(form)
|
|
} else {
|
|
req.send()
|
|
}
|
|
}
|
|
|
|
/**
|
|
* The default handler if a AJAX request fails. Not to be used directly.
|
|
*
|
|
* @param e The XMLHttpRequest that failed.
|
|
*/
|
|
function defaultFailHandler (e) {
|
|
console.error('A AJAX request failed, and was not caught:')
|
|
console.error(e)
|
|
}
|