Skip to content
Snippets Groups Projects
Select Git revision
  • 493aa8e849c2a460476b6dddec5b36b3a64b6b8f
  • release default protected
  • 11-22-implement-kv-interface-defined-in-collectiveversionedkvgo
  • hotfix/TestHostPool_UpdateNdf_AddFilter
  • XX-4719/announcementChannels
  • xx-4717/logLevel
  • jonah/noob-channel
  • master protected
  • XX-4707/tagDiskJson
  • xx-4698/notification-retry
  • hotfix/notifylockup
  • syncNodes
  • hotfix/localCB
  • XX-4677/NewChanManagerMobile
  • XX-4689/DmSync
  • duplicatePrefix
  • XX-4601/HavenInvites
  • finalizedUICallbacks
  • XX-4673/AdminKeySync
  • debugNotifID
  • anne/test
  • v4.7.5
  • v4.7.4
  • v4.7.3
  • v4.7.2
  • v4.7.1
  • v4.6.3
  • v4.6.1
  • v4.5.0
  • v4.4.4
  • v4.3.11
  • v4.3.8
  • v4.3.7
  • v4.3.6
  • v4.3.5
  • v4.2.0
  • v4.3.0
  • v4.3.4
  • v4.3.3
  • v4.3.2
  • v4.3.1
41 results

backup.go

Blame
  • main.js 2.97 KiB
    var os = require('os');
    var child;
    var fails = 0;
    var goBinary = "./xx-coin-game-ui"; //or template.exe
    
    function setPage(html) {
        const container = document.getElementById("app");
        app.innerHTML = html;
        //set focus for autofocus element
        var elem = document.querySelector("input[autofocus]");
        if (elem != null) {
            elem.focus();
        }
    }
    
    function body_message(msg) {
        setPage('<h1>' + msg + '</h1>');
    }
    
    function start_process() {
        body_message("Loading...");
    
        const spawn = require('child_process').spawn;
        child = spawn(goBinary, { maxBuffer: 1024 * 500 });
    
        const readline = require('readline');
        const rl = readline.createInterface({
            input: child.stdout
        })
    
        rl.on('line', (data) => {
            console.log(`Received: ${data}`);
    
            if (data.charAt(0) == "$") {
                data = data.substr(1);
                eval(data);
            } else {
                setPage(data);
            }
        });
    
        child.stderr.on('data', (data) => {
            console.log(`stderr: ${data}`);
        });
    
        child.on('close', (code) => {
            body_message(`process exited with code ${code}`);
            restart_process();
        });
    
        child.on('error', (err) => {
            body_message('Failed to start child process.');
            restart_process();
        });
    }
    
    function restart_process() {
        setTimeout(function () {
            fails++;
            if (fails > 5) {
                close();
            } else {
                start_process();
            }
        }, 5000);
    }
    
    function element_as_object(elem) {
        var obj = {
            properties: {}
        }
        for (var j = 0; j < elem.attributes.length; j++) {
            obj.properties[elem.attributes[j].name] = elem.attributes[j].value;
        }
        //overwrite attributes with properties
        if (elem.value != null) {
            obj.properties["value"] = elem.value.toString();
        }
        if (elem.checked != null && elem.checked) {
            obj.properties["checked"] = "true";
        } else {
            delete (obj.properties["checked"]);
        }
        return obj;
    }
    
    function element_by_tag_as_array(tag) {
        var items = [];
        var elems = document.getElementsByTagName(tag);
        for (var i = 0; i < elems.length; i++) {
            items.push(element_as_object(elems[i]));
        }
        return items;
    }
    
    function fire_event(name, sender) {
        var msg = {
            name: name,
            sender: element_as_object(sender),
            inputs: element_by_tag_as_array("input").concat(element_by_tag_as_array("select"))
        }
        child.stdin.write(JSON.stringify(msg));
        console.log(JSON.stringify(msg));
    }
    
    function fire_keypressed_event(e, keycode, name, sender) {
        if (e.keyCode === keycode) {
            e.preventDefault();
            fire_event(name, sender);
        }
    }
    
    function avoid_reload() {
        if (sessionStorage.getItem("loaded") == "true") {
            alert("go-webkit will fail when page reload. avoid using <form> or submit.");
            close();
        }
        sessionStorage.setItem("loaded", "true");
    }
    
    if (os.platform().isWindows) {
        goBinary += ".exe";
    }
    
    avoid_reload();
    start_process();