mirror of
https://github.com/sky-systems/sky_phone.git
synced 2026-08-29 07:01:39 +00:00
33 lines
1.4 KiB
Lua
33 lines
1.4 KiB
Lua
local registered_callbacks = {}
|
|
|
|
function Bridge.Callbacks.Register(name, callback)
|
|
assert(type(name) == "string", "Callback name must be a string")
|
|
assert(type(callback) == "function", "Callback handler must be a function")
|
|
assert(not registered_callbacks[name], ("Callback '%s' is already registered"):format(name))
|
|
registered_callbacks[name] = callback
|
|
end
|
|
|
|
RegisterNetEvent("sky_phone:bridge:callback:request", function(name, request_id, data)
|
|
local player_source = source
|
|
if type(name) ~= "string" or type(request_id) ~= "number" or type(data) ~= "table" then
|
|
Bridge.Debug("warn", "[sky_phone] Rejected malformed callback request from source %s.", tostring(player_source))
|
|
return
|
|
end
|
|
|
|
local callback = registered_callbacks[name]
|
|
if not callback then
|
|
Bridge.Debug("error", "[sky_phone] Server callback '%s' is not registered.", name)
|
|
TriggerClientEvent("sky_phone:bridge:callback:response", player_source, request_id, nil)
|
|
return
|
|
end
|
|
|
|
local success, result = pcall(callback, player_source, data)
|
|
if not success then
|
|
Bridge.Debug("error", "[sky_phone] Server callback '%s' failed: %s", name, tostring(result))
|
|
TriggerClientEvent("sky_phone:bridge:callback:response", player_source, request_id, nil)
|
|
return
|
|
end
|
|
|
|
TriggerClientEvent("sky_phone:bridge:callback:response", player_source, request_id, result)
|
|
end)
|