Prevent syncing package list between different versions, fix bug

master
Skylar Ittner 2 years ago
parent 7a385b2ccd
commit 096ab5bebe

@ -177,37 +177,44 @@ function addPackage(address, latitude, longitude, type, callback, deadline) {
function importPackageList(newlist) {
skipped = 0;
let count = 0;
for (latlng in newlist) {
var latitude = newlist[latlng].coords[0];
var longitude = newlist[latlng].coords[1];
latitude = +(parseFloat("" + latitude).toFixed(4));
longitude = +(parseFloat("" + longitude).toFixed(4));
for (pkg in newlist[latlng].items) {
var added = false;
for (var i = 0; i < packages.length; i++) {
if (+(parseFloat("" + packages[i].coords[0]).toFixed(4)) == latitude && +(parseFloat("" + packages[i].coords[1]).toFixed(4)) == longitude) {
var newpackage = newlist[latlng].items[pkg];
for (var j in packages[i].items) {
if (packages[i].items[j].id == newpackage.id) {
// This package already exists in the local database.
if (packages.length > 0) {
for (latlng in newlist) {
var latitude = newlist[latlng].coords[0];
var longitude = newlist[latlng].coords[1];
latitude = +(parseFloat("" + latitude).toFixed(4));
longitude = +(parseFloat("" + longitude).toFixed(4));
for (pkg in newlist[latlng].items) {
var added = false;
for (var i = 0; i < packages.length; i++) {
if (+(parseFloat("" + packages[i].coords[0]).toFixed(4)) == latitude && +(parseFloat("" + packages[i].coords[1]).toFixed(4)) == longitude) {
var newpackage = newlist[latlng].items[pkg];
for (var j in packages[i].items) {
if (packages[i].items[j].id == newpackage.id) {
// This package already exists in the local database.
console.log("Skipping package ", newpackage);
added = true;
skipped++;
}
}
if (!added) {
packages[i].items.push(package);
count++;
added = true;
skipped++;
}
break;
}
if (!added) {
packages[i].items.push(package);
count++;
added = true;
}
break;
}
}
if (!added) {
packages.push(newlist[latlng]);
if (!added) {
packages.push(newlist[latlng]);
}
}
}
} else {
// internal list is empty, so just copy
packages = newlist;
skipped = -1;
}
setStorage("packages", JSON.stringify(packages));

@ -17,7 +17,8 @@ function uploadList() {
dataType: 'json',
method: 'post',
data: {
packages: JSON.stringify(packages)
packages: JSON.stringify(packages),
appversion: app_version
},
timeout: 15 * 1000,
success: function (resp) {
@ -69,12 +70,23 @@ function downloadItemList(code) {
downloadlistdialogopen = false;
}
if (resp.status == "OK") {
if (typeof resp.appversion == "string") {
if (resp.appversion != app_version) {
app.dialog.alert("The sender is using " + app.name + " verson " + resp.appversion + " but you have " + app_version + ". Both devices must have the same version installed.", "Version Mismatch");
return;
}
} else {
app.dialog.alert("The sender is using an old version of " + app.name + ". Both devices must have the same version installed.", "Version Mismatch");
return;
}
var skipped = importPackageList(resp.packages);
if (skipped > 0) {
app.dialog.alert("List imported and merged with the existing one. " + skipped + " items already existed locally and were skipped. Verify their delivery status manually.", "Import Complete");
} else if (skipped == -1) {
app.dialog.alert("List imported.", "Import Complete");
} else {
app.dialog.alert("List imported and merged with the existing one.", "Import Complete");
}
app.dialog.alert("List imported and merged with the existing one.", "Import Complete");
}
} else {
app.dialog.alert(resp.message, "Error");
}

Loading…
Cancel
Save