65 lines
1.8 KiB
JavaScript
65 lines
1.8 KiB
JavaScript
import { api } from "boot/axios";
|
|
import { sha256 } from "js-sha256";
|
|
import { Notify, Dialog } from "quasar";
|
|
|
|
const API_URL = "/api";
|
|
const SHA256_HMAC_KEY = "mykey";
|
|
|
|
function ShowSaveDialog(apltype) {
|
|
const opername = ['Data applying...', 'Data saving...', 'Data saving and reboot...'];
|
|
let step = (apltype == 2) ? 1 : 10;
|
|
let percentage = 0;
|
|
const dialog = Dialog.create({ message: opername[apltype], progress: true, persistent: true, ok: false })
|
|
const interval = setInterval(() => {
|
|
percentage = Math.min(100, percentage + step);
|
|
dialog.update({
|
|
message: `${opername[apltype]} ${percentage}%`
|
|
})
|
|
if (percentage === 100) {
|
|
clearInterval(interval);
|
|
setTimeout(() => { dialog.hide() }, 350)
|
|
}
|
|
}, 100)
|
|
}
|
|
|
|
|
|
|
|
function PostData(varlist, messtype, applytype, onfinished) {
|
|
var pld = {};
|
|
var data = {};
|
|
data.msgid = Math.floor(Date.now() / 1000);
|
|
data.time = new Date().toISOString();
|
|
data.msgtype = messtype;
|
|
data.payloadtype = 1;
|
|
data.payload = {};
|
|
data.payload.applytype = applytype;
|
|
data.payload.variables = varlist;
|
|
pld.data = data;
|
|
pld.signature = sha256.hmac(SHA256_HMAC_KEY, JSON.stringify(data));
|
|
|
|
api
|
|
.post(API_URL, JSON.stringify(pld), {
|
|
headers: { "Content-Type": "application/json" },
|
|
})
|
|
.then((response) => {
|
|
var resp = response.data.data.payload.variables;
|
|
for (var k in resp) varlist[k] = resp[k];
|
|
if (onfinished) onfinished();
|
|
})
|
|
.catch((err) => {
|
|
Notify.create({ color: "negative", position: "top", message: err.message, icon: "report_problem", });
|
|
});
|
|
|
|
}
|
|
|
|
function SendAndRequest(varlist, mstp, apltp, shakey, okreport) {
|
|
var onfinish = (okreport) ? () => { ShowSaveDialog(apltp) } : null;
|
|
PostData(varlist, mstp, apltp, onfinish);
|
|
}
|
|
|
|
export { SendAndRequest, PostData };
|
|
|
|
|
|
|
|
|