From 499adacb064b55b4b60d087f891cccda9170bd2d Mon Sep 17 00:00:00 2001 From: Slendi Date: Sat, 20 Sep 2025 02:16:01 +0300 Subject: [PATCH] irc: preserve channels/buffers on UI reinit; avoid resetting state when reopening background session Signed-off-by: Slendi --- main.lua | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/main.lua b/main.lua index d3bdbfd..3a1e0bf 100644 --- a/main.lua +++ b/main.lua @@ -47,7 +47,7 @@ local IrcChatView = TextViewer:extend{ _ui_open = false, } -function IrcChatView:init() +function IrcChatView:init(reinit) -- Buttons: Send, Close self.buttons_table = { { @@ -66,22 +66,28 @@ function IrcChatView:init() } } -- Buffers & title - self._buffers = {} - self._ordered_targets = {} - self._current_target = nil - self._server_label = self._server and (self._server.name or (self._server.host .. ":" .. tostring(self._server.port or 6667))) or "IRC" - self._unread = {} - -- Init history before selecting initial buffer - self:initHistory() - -- default to server console target - self:switchTarget("*") + if not reinit then + self._buffers = {} + self._ordered_targets = {} + self._current_target = nil + self._unread = {} + end + if not self._server_label then + self._server_label = self._server and (self._server.name or (self._server.host .. ":" .. tostring(self._server.port or 6667))) or "IRC" + end + if not reinit then + -- Init history before selecting initial buffer + self:initHistory() + -- default to server console target + self:switchTarget("*") + end -- Restore last active target if available local last = self:loadLastTarget() if last and last ~= "" then self:switchTarget(last) end self:updateTitle() - TextViewer.init(self) + TextViewer.init(self, reinit) -- Start connection after UI init so we can show logs UIManager:nextTick(function() self:startConnection() end) end