From 57228734722e792289bc22b96d45d16912078b17 Mon Sep 17 00:00:00 2001 From: Kenshin13 <63159154+Kenshiin13@users.noreply.github.com> Date: Mon, 28 Apr 2025 18:01:28 +0200 Subject: [PATCH] feat(es_extended/server/functions): add promise support for ESX.GetVehicleType --- [core]/es_extended/server/functions.lua | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/[core]/es_extended/server/functions.lua b/[core]/es_extended/server/functions.lua index 5ba47867..9b20c92f 100644 --- a/[core]/es_extended/server/functions.lua +++ b/[core]/es_extended/server/functions.lua @@ -386,19 +386,38 @@ end ---@param model string|number ---@param player number ----@param cb function +---@param cb function? ---@diagnostic disable-next-line: duplicate-set-field +---@return string? function ESX.GetVehicleType(model, player, cb) + if cb and not ESX.IsFunctionReference(cb) then + error("Invalid callback function") + end + + local promise = not cb and promise.new() + + local function resolve(result) + if promise then + promise:resolve(result) + elseif cb then + cb(result) + end + end + model = type(model) == "string" and joaat(model) or model if Core.vehicleTypesByModel[model] then - return cb(Core.vehicleTypesByModel[model]) + return resolve(Core.vehicleTypesByModel[model]) end ESX.TriggerClientCallback(player, "esx:GetVehicleType", function(vehicleType) Core.vehicleTypesByModel[model] = vehicleType - cb(vehicleType) + resolve(vehicleType) end, model) + + if promise then + return Citizen.Await(promise) + end end ---@param name string