From 4ae20d4dad8e6d9bef623202846e61d16213116b Mon Sep 17 00:00:00 2001 From: Linden <65407488+thelindat@users.noreply.github.com> Date: Mon, 28 Feb 2022 17:14:18 +1100 Subject: [PATCH] refactor(imports/callback): new syntax BREAKING! --- imports/callback/client.lua | 40 ++++++++++++++++++------------------- imports/callback/server.lua | 10 +++++----- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/imports/callback/client.lua b/imports/callback/client.lua index d676b6e..827676a 100644 --- a/imports/callback/client.lua +++ b/imports/callback/client.lua @@ -13,23 +13,28 @@ local function callbackTimer(event, delay) return true end -local function startCallback(resource, event, ...) +local function triggerCallback(event, ...) local id = math.random(0, 100000) - event = ('__cb_%s:%s'):format(resource, event) + event = ('__cb_%s'):format(event) TriggerServerEvent(event, id, ...) return event..id end -local ServerCallback = table.create(0, 2) +---Sends an event to the server and triggers a callback function once the response is returned. +---``` +---callback(event: string, delay: number, function(...) +--- print(...) +---end) +---``` +local callback = {} ----@param resource string ---@param event string ---@param delay number prevent the event from being called for the given time --- Sends an event to the server and halts the current thread until a response is returned. -ServerCallback.Await = function(resource, event, delay, ...) +function callback.await(event, delay, ...) if callbackTimer(event, delay) then local promise = promise.new() - event = RegisterNetEvent(startCallback(resource, event, ...), function(response) + event = RegisterNetEvent(triggerCallback(event, ...), function(response) promise:resolve(response) RemoveEventHandler(event) end) @@ -37,18 +42,13 @@ ServerCallback.Await = function(resource, event, delay, ...) end end ----@param resource string ----@param event string ----@param delay number ----@param cb function ---- Sends an event to the server and triggers a callback function once the response is returned. -ServerCallback.Async = function(resource, event, delay, cb, ...) - if callbackTimer(event, delay) then - event = RegisterNetEvent(startCallback(resource, event, ...), function(response) - cb(table.unpack(response)) - RemoveEventHandler(event) - end) +return setmetatable(callback, { + __call = function(event, delay, cb, ...) + if callbackTimer(event, delay) then + event = RegisterNetEvent(triggerCallback(event, ...), function(response) + cb(table.unpack(response)) + RemoveEventHandler(event) + end) + end end -end - -return ServerCallback +}) diff --git a/imports/callback/server.lua b/imports/callback/server.lua index 1c0065c..a7266fb 100644 --- a/imports/callback/server.lua +++ b/imports/callback/server.lua @@ -1,14 +1,14 @@ -local ServerCallback = {} +local callback = {} ---@param name string ---@param callback function --- Registers an event handler and callback function to respond to client requests. -ServerCallback.Register = function(name, callback) - name = ('__cb_%s:%s'):format(GetCurrentResourceName(), name) +function callback.register(name, cb) + name = ('__cb_%s'):format(name) RegisterServerEvent(name, function(id, ...) - TriggerClientEvent(name..id, source, {callback(source, ...)}) + TriggerClientEvent(name..id, source, {cb(source, ...)}) end) end -return ServerCallback \ No newline at end of file +return callback \ No newline at end of file