Compare commits

..
2 Commits
+9 -11
View File
@@ -1,7 +1,7 @@
local DEFAULT_SERVER_BASE = "https://ticket.fse-media.group" local DEFAULT_SERVER_BASE = "https://ticket.fse-media.group"
local DEFAULT_SERVER_PATH = "/api/tickets/check" local DEFAULT_SERVER_PATH = "/api/tickets/check"
local GATE_OPEN_SECONDS = 2 local GATE_OPEN_SECONDS = 2
local VERSION = "v1.5.24" local VERSION = "v1.5.26"
local VERSION_CHECK_INTERVAL = 5 local VERSION_CHECK_INTERVAL = 5
local serverURL = nil local serverURL = nil
@@ -972,19 +972,19 @@ local function updateDeviceField(dev, key, value)
pcall(dev.updateTicket, key, value) pcall(dev.updateTicket, key, value)
end end
local function callTicketStateMethod(dev, methodName) local function callTicketStateMethod(dev, methodName, ...)
if type(dev) ~= "table" then return false end if type(dev) ~= "table" then return false end
local fn = dev[methodName] local fn = dev[methodName]
if type(fn) ~= "function" then return false end if type(fn) ~= "function" then return false end
local okCall, okRes = pcall(fn) local okCall, okRes = pcall(fn, ...)
if not okCall then return false end if not okCall then return false end
return okRes ~= false return okRes ~= false
end end
local function applyTicketDeviceState(dev, action, rides) local function applyTicketDeviceState(dev, action, rides, stationCode)
if type(dev) ~= "table" then return end if type(dev) ~= "table" then return end
if action == "entry" then if action == "entry" then
if not callTicketStateMethod(dev, "markEntered") then if not callTicketStateMethod(dev, "markEntered", stationCode) then
updateDeviceField(dev, "entered", true) updateDeviceField(dev, "entered", true)
updateDeviceField(dev, "exited", false) updateDeviceField(dev, "exited", false)
end end
@@ -1003,7 +1003,8 @@ local function applyTicketDeviceState(dev, action, rides)
end end
local function updateICCardField(dev, key, value) local function updateICCardField(dev, key, value)
if type(dev) ~= "table" or type(dev.updateICCard) ~= "function" then return false end if type(dev) ~= "table" then return false end
if type(dev.updateICCard) ~= "function" then return true end
local okCall, okRes, detail = pcall(dev.updateICCard, key, value) local okCall, okRes, detail = pcall(dev.updateICCard, key, value)
if not okCall then return false, tostring(okRes) end if not okCall then return false, tostring(okRes) end
if okRes == false then return false, tostring(detail or "update_failed") end if okRes == false then return false, tostring(detail or "update_failed") end
@@ -1255,13 +1256,10 @@ local function handleICCardScan(scan, side, scanDev)
end end
for _, dev in ipairs(inspectionDevs) do for _, dev in ipairs(inspectionDevs) do
applyTicketDeviceState(dev, usedAction, nil, exitStation)
if usedAction == "entry" then if usedAction == "entry" then
updateDeviceField(dev, "entered", true)
updateDeviceField(dev, "exited", false)
if #entryStation > 0 then updateDeviceField(dev, "entry_station", entryStation) end if #entryStation > 0 then updateDeviceField(dev, "entry_station", entryStation) end
else else
updateDeviceField(dev, "exited", true)
updateDeviceField(dev, "entered", false)
if #exitStation > 0 then updateDeviceField(dev, "exit_station", exitStation) end if #exitStation > 0 then updateDeviceField(dev, "exit_station", exitStation) end
updateDeviceField(dev, "last_fare", fare) updateDeviceField(dev, "last_fare", fare)
end end
@@ -1371,7 +1369,7 @@ local function handleScan(scan, side, scanDev)
or tonumber(scan.trips_remaining or scan.rides_remaining) or tonumber(scan.trips_remaining or scan.rides_remaining)
or tonumber(scan.rides) or tonumber(scan.rides)
for _, dev in ipairs(inspectionDevs) do for _, dev in ipairs(inspectionDevs) do
applyTicketDeviceState(dev, usedAction, newRides) applyTicketDeviceState(dev, usedAction, newRides, stationCodeForSide(side))
end end
end) end)