mirror of
https://github.com/sky-systems/sky_phone.git
synced 2026-08-29 01:01:31 +00:00
121 lines
3.1 KiB
Lua
121 lines
3.1 KiB
Lua
local server_callbacks = {
|
|
"skyride:bootstrap",
|
|
"skyride:quote",
|
|
"skyride:request",
|
|
"skyride:set-driver-status",
|
|
"skyride:accept",
|
|
"skyride:arrive",
|
|
"skyride:start",
|
|
"skyride:complete",
|
|
"skyride:cancel",
|
|
"skyride:rate",
|
|
"skyride:history",
|
|
}
|
|
|
|
local function normalize_person(person)
|
|
if type(person) ~= "table" then
|
|
return
|
|
end
|
|
if person.avatarUrl == false then
|
|
person.avatarUrl = json.null
|
|
end
|
|
end
|
|
|
|
local function normalize_ride(ride)
|
|
if type(ride) ~= "table" then
|
|
return
|
|
end
|
|
normalize_person(ride.passenger)
|
|
if ride.driver == false then
|
|
ride.driver = json.null
|
|
return
|
|
end
|
|
if type(ride.driver) ~= "table" then
|
|
return
|
|
end
|
|
normalize_person(ride.driver)
|
|
local vehicle = ride.driver.vehicle
|
|
local model_hash = type(vehicle) == "table" and tonumber(vehicle.model) or nil
|
|
if not model_hash then
|
|
return
|
|
end
|
|
local display_name = GetDisplayNameFromVehicleModel(model_hash)
|
|
local label = display_name and GetLabelText(display_name) or nil
|
|
if label and label ~= "NULL" and label ~= "CARNOTFOUND" then
|
|
vehicle.model = label
|
|
end
|
|
end
|
|
|
|
local function normalize_rides(rides)
|
|
if type(rides) ~= "table" then
|
|
return
|
|
end
|
|
for index = 1, #rides do
|
|
normalize_ride(rides[index])
|
|
end
|
|
end
|
|
|
|
local function normalize_state(data)
|
|
if type(data) ~= "table" then
|
|
return
|
|
end
|
|
if data.activeRide == false then
|
|
data.activeRide = json.null
|
|
else
|
|
normalize_ride(data.activeRide)
|
|
end
|
|
if data.pendingRating == false then
|
|
data.pendingRating = json.null
|
|
else
|
|
normalize_ride(data.pendingRating)
|
|
end
|
|
normalize_rides(data.availableRequests)
|
|
normalize_rides(data.history)
|
|
normalize_rides(data.items)
|
|
if type(data.profile) == "table" then
|
|
if data.profile.acceptanceRate == false then
|
|
data.profile.acceptanceRate = json.null
|
|
end
|
|
if data.profile.avatarUrl == false then
|
|
data.profile.avatarUrl = json.null
|
|
end
|
|
if data.profile.earningsToday == false then
|
|
data.profile.earningsToday = json.null
|
|
end
|
|
end
|
|
end
|
|
|
|
for index = 1, #server_callbacks do
|
|
local callback_name = server_callbacks[index]
|
|
RegisterNUICallback(callback_name, function(data, cb)
|
|
local result = Bridge.Callbacks.Trigger("sky_phone:" .. callback_name, data or {})
|
|
if not result then
|
|
cb({ success = false, error = "request_failed" })
|
|
return
|
|
end
|
|
if result.success and type(result.data) == "table" then
|
|
normalize_state(result.data)
|
|
end
|
|
cb(result)
|
|
end)
|
|
end
|
|
|
|
RegisterNUICallback("skyride:get-player-coords", function(_, cb)
|
|
local coords = GetEntityCoords(PlayerPedId())
|
|
cb({
|
|
success = true,
|
|
data = {
|
|
coords = {
|
|
x = coords.x,
|
|
y = coords.y,
|
|
z = coords.z,
|
|
},
|
|
},
|
|
})
|
|
end)
|
|
|
|
RegisterNetEvent("sky_phone:skyride:changed", function(data)
|
|
normalize_state(data)
|
|
SendNUIMessage({ type = "skyride:changed", data = data })
|
|
end)
|