From 1257a0f83190527725c595c0d872c332ecfdf3a8 Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Sat, 21 Jun 2025 22:09:02 -0700 Subject: make max messages kept configurable --- src/renderer/src/App.tsx | 17 +++++++---- src/renderer/src/components/ConfigModal.tsx | 45 +++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 6 deletions(-) (limited to 'src/renderer') diff --git a/src/renderer/src/App.tsx b/src/renderer/src/App.tsx index bbd949d..2297060 100644 --- a/src/renderer/src/App.tsx +++ b/src/renderer/src/App.tsx @@ -8,19 +8,23 @@ function App(): React.JSX.Element { const [channelNicknames, setChannelNicknames] = useState>({}) const [isConfigOpen, setIsConfigOpen] = useState(false) const [isMouseInWindow, setIsMouseInWindow] = useState(true) + const [maxMessages, setMaxMessages] = useState(300) - // Load channel nicknames on mount + // Load channel nicknames and max messages on mount useEffect(() => { - const loadChannelNicknames = async (): Promise => { + const loadConfig = async (): Promise => { try { const nicknames = await window.electron.config.getChannelNicknames() setChannelNicknames(nicknames) + + const maxMsgs = await window.electron.config.getMaxMessages() + setMaxMessages(maxMsgs) } catch (error) { - console.error('Failed to load channel nicknames:', error) + console.error('Failed to load config:', error) } } - loadChannelNicknames() + loadConfig() }, []) useEffect(() => { @@ -33,7 +37,7 @@ function App(): React.JSX.Element { if (existingMessage) { return prev } - return [data, ...prev.slice(0, 300)] + return [data, ...prev.slice(0, maxMessages - 1)] }) } } @@ -125,8 +129,9 @@ function App(): React.JSX.Element { isOpen={isConfigOpen} onClose={() => { setIsConfigOpen(false) - // Reload channel nicknames after config changes + // Reload config after changes window.electron.config.getChannelNicknames().then(setChannelNicknames) + window.electron.config.getMaxMessages().then(setMaxMessages) }} /> diff --git a/src/renderer/src/components/ConfigModal.tsx b/src/renderer/src/components/ConfigModal.tsx index f927045..7f5e3e8 100644 --- a/src/renderer/src/components/ConfigModal.tsx +++ b/src/renderer/src/components/ConfigModal.tsx @@ -18,10 +18,13 @@ export default function ConfigModal({ const [newChannelId, setNewChannelId] = useState('') const [newNickname, setNewNickname] = useState('') const [isLoading, setIsLoading] = useState(false) + const [maxMessages, setMaxMessages] = useState(300) + const [tempMaxMessages, setTempMaxMessages] = useState(300) useEffect(() => { if (isOpen) { loadChannels() + loadMaxMessages() } }, [isOpen]) @@ -34,6 +37,25 @@ export default function ConfigModal({ } } + const loadMaxMessages = async (): Promise => { + try { + const maxMsgs = await window.electron.config.getMaxMessages() + setMaxMessages(maxMsgs) + setTempMaxMessages(maxMsgs) + } catch (error) { + console.error('Failed to load max messages:', error) + } + } + + const handleSaveMaxMessages = async (): Promise => { + try { + await window.electron.config.setMaxMessages(tempMaxMessages) + setMaxMessages(tempMaxMessages) + } catch (error) { + console.error('Failed to save max messages:', error) + } + } + const handleAddChannel = async (): Promise => { if (!newChannelId.trim() || !newNickname.trim()) { return @@ -82,6 +104,29 @@ export default function ConfigModal({
+
+

Message Limit

+
+ + setTempMaxMessages(parseInt(e.target.value) || 300)} + /> + +
+

+ Current: {maxMessages} messages. Higher values use more memory but keep more message history. +

+
+

Add Channel

-- cgit v1.2.3