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, _ui_open = false,
} }
function IrcChatView:init() function IrcChatView:init(reinit)
-- Buttons: Send, Close -- Buttons: Send, Close
self.buttons_table = { self.buttons_table = {
{ {
@@ -66,22 +66,28 @@ function IrcChatView:init()
} }
} }
-- Buffers & title -- Buffers & title
self._buffers = {} if not reinit then
self._ordered_targets = {} self._buffers = {}
self._current_target = nil self._ordered_targets = {}
self._server_label = self._server and (self._server.name or (self._server.host .. ":" .. tostring(self._server.port or 6667))) or "IRC" self._current_target = nil
self._unread = {} self._unread = {}
-- Init history before selecting initial buffer end
self:initHistory() if not self._server_label then
-- default to server console target self._server_label = self._server and (self._server.name or (self._server.host .. ":" .. tostring(self._server.port or 6667))) or "IRC"
self:switchTarget("*") 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 -- Restore last active target if available
local last = self:loadLastTarget() local last = self:loadLastTarget()
if last and last ~= "" then if last and last ~= "" then
self:switchTarget(last) self:switchTarget(last)
end end
self:updateTitle() self:updateTitle()
TextViewer.init(self) TextViewer.init(self, reinit)
-- Start connection after UI init so we can show logs -- Start connection after UI init so we can show logs
UIManager:nextTick(function() self:startConnection() end) UIManager:nextTick(function() self:startConnection() end)
end end