Improve immutability and snapshots, blend-settings; Revamp blend
This commit is contained in:
parent
9f7dee08a8
commit
de7e60e65e
13 changed files with 288 additions and 247 deletions
|
@ -1,135 +1,136 @@
|
|||
function rollback() {
|
||||
let rollback_worker = new Worker(
|
||||
`data:text/javascript,
|
||||
let s = require('child_process').spawnSync('pkexec', ['blend-system', 'rollback']).status
|
||||
if (s === 0) {
|
||||
postMessage('success')
|
||||
} else {
|
||||
postMessage('failure')
|
||||
}
|
||||
`
|
||||
)
|
||||
rollback_worker.onmessage = e => {
|
||||
if (e.data == 'success') {
|
||||
document.getElementById('rollback-btn').outerHTML =
|
||||
'<button type="button" class="btn btn-danger" onclick="undo_rollback()" id="rollback-btn">Cancel rollback</button>'
|
||||
} else {
|
||||
document.getElementById('rollback-btn').outerHTML =
|
||||
'<button type="button" class="btn btn-danger" id="rollback-btn" disabled>Failed</button>'
|
||||
setTimeout(() => document.getElementById('rollback-btn').outerHTML =
|
||||
'<button type="button" class="btn btn-danger" onclick="rollback()" id="rollback-btn">Rollback</button>', 2000)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function undo_rollback() {
|
||||
let undo_rollback_worker = new Worker(
|
||||
`data:text/javascript,
|
||||
let s = require('child_process').spawnSync('pkexec', ['rm', '-f', '/blend/states/.load_prev_state']).status
|
||||
if (s === 0) {
|
||||
postMessage('success')
|
||||
} else {
|
||||
postMessage('failure')
|
||||
}
|
||||
`
|
||||
)
|
||||
undo_rollback_worker.onmessage = e => {
|
||||
if (e.data == 'success') {
|
||||
document.getElementById('rollback-btn').outerHTML =
|
||||
'<button type="button" class="btn btn-danger" onclick="rollback()" id="rollback-btn">Rollback</button>'
|
||||
} else {
|
||||
document.getElementById('rollback-btn').outerHTML =
|
||||
'<button type="button" class="btn btn-danger" id="rollback-btn" disabled>Failed</button>'
|
||||
setTimeout(() => document.getElementById('rollback-btn').outerHTML =
|
||||
'<button type="button" class="btn btn-danger" onclick="undo_rollback()" id="rollback-btn">Cancel rollback</button>', 2000)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function init_waydroid() {
|
||||
document.getElementById('initialize-btn').outerHTML =
|
||||
'<button type="button" id="initialize-btn" onclick="init_waydroid()" class="btn btn-primary" disabled>Initializing...</button>'
|
||||
let init_worker = new Worker(
|
||||
`data:text/javascript,
|
||||
require('child_process').spawnSync('pkexec', ['waydroid', 'init'])
|
||||
require('child_process').spawnSync('pkexec', ['systemctl', 'enable', '--now', 'waydroid-container'])
|
||||
require('child_process').spawn('sh', ['-c', 'waydroid session start & disown'])
|
||||
setTimeout(() => {
|
||||
require('child_process').spawnSync('pkexec', ['waydroid', 'shell', 'pm', 'disable', 'com.android.inputmethod.latin'])
|
||||
require('child_process').spawnSync('waydroid', ['prop', 'set', 'persist.waydroid.multi_windows', 'true'])
|
||||
postMessage('success')
|
||||
if (require('child_process').spawnSync('sh', ['-c', 'LC_ALL=C glxinfo | grep "^OpenGL renderer string: "']).stdout.includes('NVIDIA')) {
|
||||
require('child_process').spawnSync('sh', ['-c', 'echo "ro.hardware.gralloc=default" | pkexec tee -a /var/lib/waydroid/waydroid.cfg'])
|
||||
require('child_process').spawnSync('sh', ['-c', 'echo "ro.hardware.egl=swiftshader" | pkexec tee -a /var/lib/waydroid/waydroid.cfg'])
|
||||
}
|
||||
require('child_process').spawn('sh', ['-c', 'pkexec waydroid upgrade -o; waydroid session stop; waydroid session start'])
|
||||
setTimeout(() => { postMessage('success') }, 1000)
|
||||
}, 2000)
|
||||
`
|
||||
)
|
||||
init_worker.onmessage = e => {
|
||||
if (e.data == 'success') {
|
||||
document.getElementById('init-waydroid').classList.add('d-none')
|
||||
document.getElementById('waydroid-initialize-settings').classList.add('d-none')
|
||||
document.getElementById('waydroid-initialized-settings').classList.remove('d-none')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function enable_multi_window() {
|
||||
document.getElementById('multiwindow-btn').outerHTML =
|
||||
'<button type="button" id="multiwindow-btn" onclick="enable_multi_window()" class="btn btn-primary" disabled>Enabling...</button>'
|
||||
let multi_window_worker = new Worker(
|
||||
function install_aurora_store() {
|
||||
document.getElementById('aurora-store-btn').outerHTML =
|
||||
`<button type="button" id="aurora-store-btn" onclick="install_aurora_store()"
|
||||
class="btn btn-success" disabled>Installing...</button>`
|
||||
let aurora_store_worker = new Worker(
|
||||
`data:text/javascript,
|
||||
require('child_process').spawn('sh', ['-c', 'waydroid session start & disown'])
|
||||
setTimeout(() => { require('child_process').spawnSync('waydroid', ['prop', 'set', 'persist.waydroid.multi_windows', 'true']); require('child_process').spawn('sh', ['-c', 'waydroid session stop']); postMessage('success') }, 500)
|
||||
require('child_process').spawnSync('sh', ['-c', 'mkdir -p ~/.cache/blend-settings; rm -f ~/.cache/blend-settings/aurora.apk'])
|
||||
let s1 = require('child_process').spawnSync('sh', ['-c', 'wget -O ~/.cache/blend-settings/aurora.apk https://gitlab.com/AuroraOSS/AuroraStore/uploads/bbc1bd5a77ab2b40bbf288ccbef8d1f0/AuroraStore_4.1.1.apk']).status
|
||||
if (s1 != 0) {
|
||||
postMessage('failed')
|
||||
} else {
|
||||
require('child_process').spawn('waydroid', ['session', 'start'])
|
||||
setTimeout(() => {
|
||||
require('child_process').spawnSync('sh', ['-c', 'waydroid app install ~/.cache/blend-settings/aurora.apk'])
|
||||
setTimeout(() => postMessage('success'), 200)
|
||||
}, 2000)
|
||||
}
|
||||
`
|
||||
)
|
||||
multi_window_worker.onmessage = e => {
|
||||
aurora_store_worker.onmessage = e => {
|
||||
if (e.data == 'success') {
|
||||
document.getElementById('multiwindow-btn').outerHTML =
|
||||
'<button type="button" id="multiwindow-btn" onclick="disable_multi_window()" class="btn btn-primary">Disable</button>'
|
||||
document.getElementById('aurora-store-btn').outerHTML =
|
||||
`<button type="button btn-success" id="aurora-store-btn" onclick="install_aurora_store()"
|
||||
class="btn btn-success" disabled>Installed</button>`
|
||||
} else if (e.data == 'failed') {
|
||||
document.getElementById('aurora-store-btn').outerHTML =
|
||||
`<button type="button btn-success" id="aurora-store-btn" onclick="install_aurora_store()"
|
||||
class="btn btn-success" disabled>Failed</button>`
|
||||
setTimeout(() => {
|
||||
document.getElementById('aurora-store-btn').outerHTML =
|
||||
`<button type="button btn-success" id="aurora-store-btn" onclick="install_aurora_store()"
|
||||
class="btn btn-success">Install</button>`
|
||||
}, 2000)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function disable_multi_window() {
|
||||
document.getElementById('multiwindow-btn').outerHTML =
|
||||
'<button type="button" id="multiwindow-btn" onclick="enable_multi_window()" class="btn btn-primary" disabled>Disabling...</button>'
|
||||
let multi_window_worker = new Worker(
|
||||
function install_f_droid() {
|
||||
document.getElementById('f-droid-btn').outerHTML =
|
||||
`<button type="button" id="f-droid-btn" onclick="install_f_droid()"
|
||||
class="btn btn-primary" disabled>Installing...</button>`
|
||||
let f_droid_worker = new Worker(
|
||||
`data:text/javascript,
|
||||
require('child_process').spawn('sh', ['-c', 'waydroid session start & disown'])
|
||||
setTimeout(() => { require('child_process').spawnSync('waydroid', ['prop', 'set', 'persist.waydroid.multi_windows', 'false']); require('child_process').spawn('sh', ['-c', 'waydroid session stop']); postMessage('success') }, 500)
|
||||
require('child_process').spawnSync('sh', ['-c', 'mkdir -p ~/.cache/blend-settings; rm -f ~/.cache/blend-settings/f-droid.apk'])
|
||||
let s1 = require('child_process').spawnSync('sh', ['-c', 'wget -O ~/.cache/blend-settings/f-droid.apk https://f-droid.org/F-Droid.apk']).status
|
||||
if (s1 != 0) {
|
||||
postMessage('failed')
|
||||
} else {
|
||||
require('child_process').spawn('waydroid', ['session', 'start'])
|
||||
setTimeout(() => {
|
||||
require('child_process').spawnSync('sh', ['-c', 'waydroid app install ~/.cache/blend-settings/f-droid.apk'])
|
||||
setTimeout(() => postMessage('success'), 200)
|
||||
}, 2000)
|
||||
}
|
||||
`
|
||||
)
|
||||
multi_window_worker.onmessage = e => {
|
||||
f_droid_worker.onmessage = e => {
|
||||
if (e.data == 'success') {
|
||||
document.getElementById('multiwindow-btn').outerHTML =
|
||||
'<button type="button" id="multiwindow-btn" onclick="enable_multi_window()" class="btn btn-primary">Enable</button>'
|
||||
document.getElementById('f-droid-btn').outerHTML =
|
||||
`<button type="button btn-success" id="f-droid-btn" onclick="install_f_droid()"
|
||||
class="btn btn-primary" disabled>Installed</button>`
|
||||
} else if (e.data == 'failed') {
|
||||
document.getElementById('f-droid-btn').outerHTML =
|
||||
`<button type="button btn-success" id="f-droid-btn" onclick="install_f_droid()"
|
||||
class="btn btn-primary" disabled>Failed</button>`
|
||||
setTimeout(() => {
|
||||
document.getElementById('f-droid-btn').outerHTML =
|
||||
`<button type="button btn-success" id="f-droid-btn" onclick="install_f_droid()"
|
||||
class="btn btn-primary">Install</button>`
|
||||
}, 2000)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function check_multi_window_enabled() {
|
||||
let check_worker = new Worker(
|
||||
`data:text/javascript,
|
||||
require('child_process').spawn('sh', ['-c', 'waydroid session start & disown'])
|
||||
setTimeout(() => { let val = require('child_process').spawnSync('waydroid', ['prop', 'get', 'persist.waydroid.multi_windows']).stdout; postMessage(val) }, 500)
|
||||
`
|
||||
)
|
||||
check_worker.onmessage = e => {
|
||||
if (new TextDecoder("utf-8").decode(e.data).trim() == 'true') {
|
||||
document.getElementById('multiwindow-btn').outerHTML =
|
||||
'<button type="button" id="multiwindow-btn" onclick="disable_multi_window()" class="btn btn-primary">Disable</button>'
|
||||
} else {
|
||||
document.getElementById('multiwindow-btn').outerHTML =
|
||||
'<button type="button" id="multiwindow-btn" onclick="enable_multi_window()" class="btn btn-primary">Enable</button>'
|
||||
}
|
||||
}
|
||||
function waydroid_open_settings() {
|
||||
require('child_process').spawn('waydroid', ['app', 'launch', 'com.android.settings'])
|
||||
}
|
||||
|
||||
require('fs').stat('/var/lib/waydroid', (err, stat) => {
|
||||
if (err == null) {
|
||||
document.getElementById('waydroid-initialize-settings').classList.add('d-none')
|
||||
document.getElementById('waydroid-initialized-settings').classList.remove('d-none')
|
||||
if (require('child_process').spawnSync('sh', ['-c', 'LC_ALL=C glxinfo | grep "^OpenGL renderer string: "']).stdout.includes('NVIDIA')) {
|
||||
document.getElementById('nvidia-warning-installed').classList.remove('d-none')
|
||||
}
|
||||
require('child_process').spawn('waydroid', ['session', 'start'])
|
||||
setTimeout(() => {
|
||||
if (require('child_process').spawnSync('waydroid', ['app', 'list']).stdout.includes('com.aurora.store')) {
|
||||
document.getElementById('aurora-store-btn').outerHTML =
|
||||
`<button type="button btn-success" id="aurora-store-btn" onclick="install_aurora_store()"
|
||||
class="btn btn-success" disabled>Installed</button>`
|
||||
}
|
||||
if (require('child_process').spawnSync('waydroid', ['app', 'list']).stdout.includes('org.fdroid.fdroid')) {
|
||||
document.getElementById('f-droid-btn').outerHTML =
|
||||
`<button type="button btn-success" id="fdroid-btn" onclick="install_f_droid()"
|
||||
class="btn btn-primary" disabled>Installed</button>`
|
||||
}
|
||||
}, 1000)
|
||||
} else {
|
||||
if (require('child_process').spawnSync('sh', ['-c', 'LC_ALL=C glxinfo | grep "^OpenGL renderer string: "']).stdout.includes('NVIDIA')) {
|
||||
document.getElementById('nvidia-warning').classList.remove('d-none')
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
check_state_creation()
|
||||
check_rollback()
|
||||
|
||||
$('#automatic-state-toggle').on('change', () => {
|
||||
if (!document.getElementById('automatic-state-toggle').checked) {
|
||||
let enable_autostate_worker = new Worker(
|
||||
|
|
|
@ -47,6 +47,8 @@ function undo_rollback() {
|
|||
}
|
||||
|
||||
function save_state() {
|
||||
$("#settings-tabs").find("*").prop('disabled', true)
|
||||
|
||||
let save_state_worker = new Worker(
|
||||
`data:text/javascript,
|
||||
let s = require('child_process').spawnSync('pkexec', ['blend-system', 'save-state']).status
|
||||
|
@ -61,11 +63,13 @@ function save_state() {
|
|||
if (e.data == 'success') {
|
||||
document.getElementById('save-state-btn').outerHTML =
|
||||
'<button type="button" class="btn btn-success" id="save-state-btn" disabled>Saved state</button>'
|
||||
$("#settings-tabs").find("*").prop('disabled', false)
|
||||
setTimeout(() => document.getElementById('save-state-btn').outerHTML =
|
||||
'<button type="button" id="save-state-btn" onclick="save_state()" class="btn btn-success">Save state</button>', 2000)
|
||||
} else {
|
||||
document.getElementById('save-state-btn').outerHTML =
|
||||
'<button type="button" class="btn btn-success" id="save-state-btn" disabled>Failed</button>'
|
||||
$("#settings-tabs").find("*").prop('disabled', false)
|
||||
setTimeout(() => document.getElementById('save-state-btn').outerHTML =
|
||||
'<button type="button" id="save-state-btn" onclick="save_state()" class="btn btn-success">Save state</button>', 2000)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue