You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

176 lines
6.0 KiB
JavaScript

/*
* This file loads after JQuery and sets up variables and whatnot.
*/
// Constants
/**
* API base URL
*/
APIURL = "";
username = "";
password = "";
/**
* Get the full URL to call for API things.
* @param {String} basename The name of the API file, without .php
* @returns {String} The fully-qualified URL for that API request
*/
function mkApiUrl(basename) {
return APIURL + basename + ".php" + URLAPPEND;
}
/*
* Runs when the app opens
*/
$(document).ready(function () {
openscreen('login');
});
function dologin() {
$('#errorbase').hide();
$('#loginBtn').html('<i class="fa fa-cog fa-spin"></i> Logging in...');
$('#loginBtn').attr('disabled', true);
if ($('#usernameBox').val() === "") {
$('#errormsg').text("Error: Missing username.");
$('#errorbase').css('display', 'block');
}
$.post(mkApiUrl("authuser"),
{username: $('#usernameBox').val(), password: $('#passwordBox').val(), merchant: MERCHANTID},
function (data) {
if (data.status === 'OK') {
username = $('#usernameBox').val();
password = $('#passwordBox').val();
localStorage.setItem("username", username);
openscreen("home");
} else {
$('#loginBtn').html('<i class="fa fa-sign-in"></i> Login');
$('#loginBtn').attr('disabled', false);
$('#errormsg').text("Error: " + data.message);
$('#errorbase').css('display', 'block');
}
}, "json").fail(function () {
$('#loginBtn').html('<i class="fa fa-sign-in"></i> Login');
$('#loginBtn').attr('disabled', false);
$('#errormsg').text("Error: Network failure.");
$('#errorbase').css('display', 'block');
});
}
/**
* Switches the app to the given screen.
* @param {String} screenname The name of the screen to show.
* @param {String} effect FADE, SLIDE, or nothing
* @returns {undefined}
*/
function openscreen(screenname, effect) {
if (effect === 'FADE') {
$('#content-zone').fadeOut('slow', function () {
$('#content-zone').load("screens/" + screenname + ".html", function () {
$('#content-zone').fadeIn('slow');
});
});
} else if (effect === 'SLIDE') {
$('#content-zone').slideToggle('400', function () {
$('#content-zone').load("screens/" + screenname + ".html", function () {
$('#content-zone').slideToggle('400');
});
});
} else {
$('#content-zone').load("screens/" + screenname + ".html");
}
}
function scanCode() {
try {
cordova.plugins.barcodeScanner.scan(
function (result) {
if (!result.cancelled) {
if (result.format.toString().toUpperCase() === "QR_CODE") {
startTransaction(result.text);
} else {
navigator.notification.alert("Please scan a valid QR code.", null, "Error", 'Dismiss');
}
}
},
function (error) {
navigator.notification.alert("Scanning failed: " + error, null, "Error", 'Dismiss');
}
);
/*cordova.plugins.barcodeScanner.scan(
function (result) {
alert("We got a barcode\n" +
"Result: " + result.text + "\n" +
"Format: " + result.format + "\n" +
"Cancelled: " + result.cancelled);
},
function (error) {
alert("Scanning failed: " + error);
}
);*/
} catch (ex) {
alert(ex.message);
}
}
function startTransaction(qrcodestring) {
if (/^http:\/\/noidpay\.net\/#[0-9\.]+\|[0-9]+$/.test(qrcodestring)) {
transdata = qrcodestring.replace("http://noidpay.net/#", "").split("|");
transactionamt = transdata[0];
transactionid = transdata[1];
openscreen("pay");
} else {
navigator.notification.alert("This isn't a valid payment code!", null, "Error", 'Dismiss');
}
}
function cancelTransaction() {
transactionamt = 0;
transactionid = 0;
openscreen("home");
}
function finishTransaction() {
$.post(mkApiUrl("transaction"),
{username: username, password: password, type: BALANCETYPE, transid: transactionid},
function (data) {
if (data.status === 'OK') {
transactionamt = 0;
transactionid = 0;
openscreen("paymentsent", "FADE");
} else {
navigator.notification.alert("Error: " + data.message, function () {
transactionamt = 0;
transactionid = 0;
openscreen("home");
}, "Failed", 'Dismiss');
}
}, "json").fail(function () {
navigator.notification.alert("Error: Network failure.", function () {
cancelTransaction();
}, "Error", 'Dismiss');
});
}
function sendMoneyToPeer() {
if (/^[0-9\.]+$/.test($('#payAmt').val())) {
$.post(mkApiUrl("peertransfer"),
{username: username, password: password, type: BALANCETYPE, merchant: MERCHANTID, amt: $('#payAmt').val(), sendto: $('#recuser').val()},
function (data) {
if (data.status === 'OK') {
openscreen("peersent", "FADE");
} else {
navigator.notification.alert("Error: " + data.message, function () {
openscreen("peerpay");
}, "Failed", 'Dismiss');
}
}, "json").fail(function () {
navigator.notification.alert("Error: Network failure.", null, "Error", 'Dismiss');
});
} else {
navigator.notification.alert("Error: Please enter a number.", function () {
$('#payAmt').val("");
}, "Error", 'Dismiss');
}
}