mirror of
https://github.com/britzl/monarch.git
synced 2025-06-27 02:17:53 +02:00
Improved on_post() to also accept a url
This commit is contained in:
parent
b7053d2ce4
commit
169236acbd
@ -212,12 +212,14 @@ IMPORTANT! You must call `monarch.on_message(message_id, message, sender)` from
|
|||||||
* `fn` (function) - The function to call screen focus changes
|
* `fn` (function) - The function to call screen focus changes
|
||||||
|
|
||||||
|
|
||||||
## monarch.on_post(screen_id, fn)
|
## monarch.on_post(screen_id, fn_or_url)
|
||||||
Set a function to be called when `msg.post()` is called on a specific screen. IMPORTANT! You must call `monarch.on_message(message_id, message, sender)` from the same script as this function was called.
|
Set either a function to be called when `msg.post()` is called on a specific screen or a URL where the message is sent.
|
||||||
|
|
||||||
|
IMPORTANT! If you provide a function you must also make sure to call `monarch.on_message(message_id, message, sender)` from the same script as this function was called.
|
||||||
|
|
||||||
**PARAMETERS**
|
**PARAMETERS**
|
||||||
* `screen_id` (string|hash) - Id of the screen
|
* `screen_id` (string|hash) - Id of the screen
|
||||||
* `fn` (function) - The function to call when the screen receives a message using `msg.post`
|
* `fn_or_url` (function) - The function to call or URL to send message to
|
||||||
|
|
||||||
|
|
||||||
## monarch.debug()
|
## monarch.debug()
|
||||||
|
@ -1330,21 +1330,34 @@ function M.on_focus_changed(id, fn)
|
|||||||
screen.focus_fn = fn
|
screen.focus_fn = fn
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function set_on_post(id, fn, url)
|
||||||
|
end
|
||||||
|
|
||||||
---
|
---
|
||||||
-- Set a function to call when a screen is sent a message using monarch.post()
|
-- Set either a function to be called when msg.post() is called on a specific
|
||||||
-- The function will receive (message_id, message, sender)
|
-- screen or a URL where the message is sent.
|
||||||
-- IMPORTANT! You must call monarch.on_message() from the same script as
|
-- IMPORTANT! If you provide a function you must also make sure to call
|
||||||
-- this function was called
|
-- monarch.on_message(message_id, message, sender) from the same script as
|
||||||
|
-- this function was called.
|
||||||
-- @param id Screen id to associate the message listener function with
|
-- @param id Screen id to associate the message listener function with
|
||||||
-- @param fn Message listener function
|
-- @param fn_or_url The function to call or URL to send message to
|
||||||
function M.on_post(id, fn)
|
function M.on_post(id, fn_or_url)
|
||||||
assert(id, "You must provide a screen id")
|
assert(id, "You must provide a screen id")
|
||||||
assert(fn, "You must provide a post receiver function")
|
|
||||||
id = tohash(id)
|
id = tohash(id)
|
||||||
assert(screens[id], ("There is no screen registered with id %s"):format(tostring(id)))
|
assert(screens[id], ("There is no screen registered with id %s"):format(tostring(id)))
|
||||||
local screen = screens[id]
|
local screen = screens[id]
|
||||||
screen.receiver_url = msg.url()
|
|
||||||
screen.receiver_fn = fn
|
local t = type(fn_or_url)
|
||||||
|
if t == "function" then
|
||||||
|
screen.receiver_fn = fn_or_url
|
||||||
|
screen.receiver_url = msg.url()
|
||||||
|
elseif t == "userdata" then
|
||||||
|
screen.receiver_fn = nil
|
||||||
|
screen.receiver_url = fn_or_url
|
||||||
|
else
|
||||||
|
screen.receiver_fn = nil
|
||||||
|
screen.receiver_url = msg.url()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function url_to_key(url)
|
local function url_to_key(url)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user