Ignore pota downloads if we became disabled while requesting data

merge-requests/203/head
Tag 2022-09-21 16:00:02 -07:00
rodzic aa25f41ec3
commit d1ba87803f
1 zmienionych plików z 90 dodań i 81 usunięć

Wyświetl plik

@ -119,31 +119,34 @@ function makeParkFeature(park)
function processPotaParks(buffer) function processPotaParks(buffer)
{ {
try if (g_potaEnabled == 1)
{ {
let newParks = JSON.parse(buffer); try
for (const park in newParks)
{ {
let locations = newParks[park].locationDesc.split(","); let newParks = JSON.parse(buffer);
for (const i in locations) for (const park in newParks)
{ {
if (locations[i] in g_StateData) let locations = newParks[park].locationDesc.split(",");
for (const i in locations)
{ {
locations[i] = g_StateData[locations[i]].name; if (locations[i] in g_StateData)
{
locations[i] = g_StateData[locations[i]].name;
}
} }
newParks[park].locationDesc = locations.join(", ");
} }
newParks[park].locationDesc = locations.join(", "); g_pota.parks = newParks;
}
g_pota.parks = newParks;
getPotaSchedule(); getPotaSchedule();
getPotaSpots(); getPotaSpots();
} }
catch (e) catch (e)
{ {
// can't write, somethings broke // can't write, somethings broke
console.log("Failed to load parks!"); console.log("Failed to load parks!");
console.log(e.message); console.log(e.message);
}
} }
} }
@ -184,42 +187,45 @@ function uniqueArrayFromArray(input)
function processPotaSpots(buffer) function processPotaSpots(buffer)
{ {
try if (g_potaEnabled == 1)
{ {
let spots = JSON.parse(buffer); try
g_pota.callSpots = {};
g_pota.parkSpots = {};
for (const spot in spots)
{ {
if (spots[spot].reference in g_pota.parks) let spots = JSON.parse(buffer);
g_pota.callSpots = {};
g_pota.parkSpots = {};
for (const spot in spots)
{ {
spots[spot].spotTime = Date.parse(spots[spot].spotTime + "Z"); if (spots[spot].reference in g_pota.parks)
spots[spot].expire = (spots[spot].expire * 1000) + spots[spot].spotTime; {
spots[spot].frequency = parseInt(spots[spot].frequency) / 1000; spots[spot].spotTime = Date.parse(spots[spot].spotTime + "Z");
(g_pota.callSpots[spots[spot].activator] = g_pota.callSpots[spots[spot].activator] || []).push(spots[spot].reference); spots[spot].expire = (spots[spot].expire * 1000) + spots[spot].spotTime;
(g_pota.parkSpots[spots[spot].reference] = g_pota.parkSpots[spots[spot].reference] || []).push(spots[spot]); spots[spot].frequency = parseInt(spots[spot].frequency) / 1000;
(g_pota.callSpots[spots[spot].activator] = g_pota.callSpots[spots[spot].activator] || []).push(spots[spot].reference);
(g_pota.parkSpots[spots[spot].reference] = g_pota.parkSpots[spots[spot].reference] || []).push(spots[spot]);
}
else
{
console.log("PotaSpots: unknown park id: " + spots[spot].reference);
}
} }
else
// Sanity dedupe checks
for (const spot in g_pota.callSpots)
{ {
console.log("PotaSpots: unknown park id: " + spots[spot].reference); g_pota.callSpots[spot] = uniqueArrayFromArray(g_pota.callSpots[spot]);
}
for (const spot in g_pota.parkSpots)
{
g_pota.parkSpots[spot] = uniqueArrayFromArray(g_pota.parkSpots[spot]);
} }
}
// Sanity dedupe checks rebuildParks();
for (const spot in g_pota.callSpots)
{
g_pota.callSpots[spot] = uniqueArrayFromArray(g_pota.callSpots[spot]);
} }
for (const spot in g_pota.parkSpots) catch (e)
{ {
g_pota.parkSpots[spot] = uniqueArrayFromArray(g_pota.parkSpots[spot]); // can't write, somethings broke
} }
rebuildParks();
}
catch (e)
{
// can't write, somethings broke
} }
} }
@ -247,52 +253,55 @@ function getPotaSpots()
function processPotaSchedule(buffer) function processPotaSchedule(buffer)
{ {
try if (g_potaEnabled == 1)
{ {
let schedules = JSON.parse(buffer); try
g_pota.callSchedule = {};
g_pota.parkSchedule = {};
for (const i in schedules)
{ {
let newObj = {}; let schedules = JSON.parse(buffer);
newObj.id = schedules[i].reference; g_pota.callSchedule = {};
newObj.start = Date.parse(schedules[i].startDate + "T" + schedules[i].startTime + "Z"); g_pota.parkSchedule = {};
newObj.end = Date.parse(schedules[i].endDate + "T" + schedules[i].endTime + "Z"); for (const i in schedules)
newObj.frequencies = schedules[i].frequencies;
newObj.comments = schedules[i].comments;
if (Date.now() < newObj.end)
{ {
if (newObj.id in g_pota.parks) let newObj = {};
newObj.id = schedules[i].reference;
newObj.start = Date.parse(schedules[i].startDate + "T" + schedules[i].startTime + "Z");
newObj.end = Date.parse(schedules[i].endDate + "T" + schedules[i].endTime + "Z");
newObj.frequencies = schedules[i].frequencies;
newObj.comments = schedules[i].comments;
if (Date.now() < newObj.end)
{ {
(g_pota.callSchedule[schedules[i].activator] = g_pota.callSchedule[schedules[i].activator] || []).push(newObj); if (newObj.id in g_pota.parks)
{
(g_pota.callSchedule[schedules[i].activator] = g_pota.callSchedule[schedules[i].activator] || []).push(newObj);
newObj = Object.assign({}, newObj); newObj = Object.assign({}, newObj);
newObj.id = schedules[i].activator; newObj.id = schedules[i].activator;
(g_pota.parkSchedule[schedules[i].reference] = g_pota.parkSchedule[schedules[i].reference] || []).push(newObj); (g_pota.parkSchedule[schedules[i].reference] = g_pota.parkSchedule[schedules[i].reference] || []).push(newObj);
} }
else else
{ {
console.log("PotaSchedule: unknown park id: " + newObj.id); console.log("PotaSchedule: unknown park id: " + newObj.id);
}
} }
// else it is expired and no longer relevant
} }
// else it is expired and no longer relevant
}
// Sanity dedupe checks // Sanity dedupe checks
for (const key in g_pota.callSchedule) for (const key in g_pota.callSchedule)
{ {
g_pota.callSchedule[key] = uniqueArrayFromArray(g_pota.callSchedule[key]); g_pota.callSchedule[key] = uniqueArrayFromArray(g_pota.callSchedule[key]);
} }
for (const key in g_pota.parkSchedule) for (const key in g_pota.parkSchedule)
{ {
g_pota.parkSchedule[key] = uniqueArrayFromArray(g_pota.parkSchedule[key]); g_pota.parkSchedule[key] = uniqueArrayFromArray(g_pota.parkSchedule[key]);
} }
rebuildParks(); rebuildParks();
} }
catch (e) catch (e)
{ {
// can't write, somethings broke // can't write, somethings broke
}
} }
} }