irc: preserve channels/buffers on UI reinit; avoid resetting state when reopening background session

Signed-off-by: Slendi <slendi@socopon.com>
This commit is contained in:
2025-09-20 02:16:01 +03:00
parent aa18d317de
commit 499adacb06

View File

@@ -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