From 051d119b99d523181a97a66cccaa1c515d86d4b0 Mon Sep 17 00:00:00 2001 From: Mikayla Date: Thu, 7 Nov 2024 14:40:26 +0000 Subject: [PATCH] #562 delay opening guide page until loaded --- pocket/pocket.lua | 13 +++++++------ pocket/threads.lua | 7 +++++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/pocket/pocket.lua b/pocket/pocket.lua index de6e6b2..432225e 100644 --- a/pocket/pocket.lua +++ b/pocket/pocket.lua @@ -264,7 +264,8 @@ function pocket.init_nav(smem) -- open an app ---@param app_id POCKET_APP_ID - function nav.open_app(app_id) + ---@param on_loaded? function + function nav.open_app(app_id, on_loaded) -- reset help return on navigating out of an app if app_id == APP_ID.ROOT then self.help_return = nil end @@ -277,7 +278,7 @@ function pocket.init_nav(smem) app = self.apps[app_id] else self.loader_return = nil end - if not app.loaded then smem.q.mq_render.push_data(MQ__RENDER_DATA.LOAD_APP, app_id) end + if not app.loaded then smem.q.mq_render.push_data(MQ__RENDER_DATA.LOAD_APP, { app_id, on_loaded }) end self.cur_app = app_id self.pane.set_value(app_id) @@ -360,10 +361,10 @@ function pocket.init_nav(smem) function nav.open_help(key) self.help_return = self.cur_app - nav.open_app(APP_ID.GUIDE) - - local load = self.help_map[key] - if load then load() end + nav.open_app(APP_ID.GUIDE, function () + local show = self.help_map[key] + if show then show() end + end) end -- link the help map from the guide app diff --git a/pocket/threads.lua b/pocket/threads.lua index 32120b2..e5d0ea7 100644 --- a/pocket/threads.lua +++ b/pocket/threads.lua @@ -165,15 +165,18 @@ function threads.thread__render(smem) local cmd = msg.message ---@type queue_data if cmd.key == MQ__RENDER_DATA.LOAD_APP then - log.debug("RENDER: load app " .. cmd.val) + log.debug("RENDER: load app " .. cmd.val[1]) local draw_start = util.time_ms() - pkt_state.ui_ok, pkt_state.ui_error = pcall(function () nav.load_app(cmd.val) end) + pkt_state.ui_ok, pkt_state.ui_error = pcall(function () nav.load_app(cmd.val[1]) end) if not pkt_state.ui_ok then log.fatal(util.c("RENDER: app load failed with error ", pkt_state.ui_error)) else log.debug("RENDER: app loaded in " .. (util.time_ms() - draw_start) .. "ms") + + -- call the on loaded function if provided + if type(cmd.val[2]) == "function" then cmd.val[2]() end end end elseif msg.qtype == mqueue.TYPE.PACKET then