From a58be6ebb6291ff71135ecc5dbec59ed386edbd1 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Mon, 30 Jan 2023 12:07:06 +0000 Subject: [PATCH] ios: limit number of items in console (#1859) --- apps/ios/Shared/Model/ChatModel.swift | 7 +++++++ apps/ios/Shared/Model/SimpleXAPI.swift | 6 +++--- apps/ios/Shared/Views/TerminalView.swift | 4 ++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/apps/ios/Shared/Model/ChatModel.swift b/apps/ios/Shared/Model/ChatModel.swift index 05b5ce1bcc..8b4c3f4f3a 100644 --- a/apps/ios/Shared/Model/ChatModel.swift +++ b/apps/ios/Shared/Model/ChatModel.swift @@ -513,6 +513,13 @@ final class ChatModel: ObservableObject { func contactNetworkStatus(_ contact: Contact) -> NetworkStatus { networkStatuses[contact.activeConn.agentConnId] ?? .unknown } + + func addTerminalItem(_ item: TerminalItem) { + if terminalItems.count >= 500 { + terminalItems.remove(at: 0) + } + terminalItems.append(item) + } } struct UnreadChatItemCounts { diff --git a/apps/ios/Shared/Model/SimpleXAPI.swift b/apps/ios/Shared/Model/SimpleXAPI.swift index b171ddf25b..54f41fc719 100644 --- a/apps/ios/Shared/Model/SimpleXAPI.swift +++ b/apps/ios/Shared/Model/SimpleXAPI.swift @@ -94,8 +94,8 @@ func chatSendCmdSync(_ cmd: ChatCommand, bgTask: Bool = true, bgDelay: Double? = logger.debug("chatSendCmd \(cmd.cmdType) response: \(json)") } DispatchQueue.main.async { - ChatModel.shared.terminalItems.append(.cmd(.now, cmd.obfuscated)) - ChatModel.shared.terminalItems.append(.resp(.now, resp)) + ChatModel.shared.addTerminalItem(.cmd(.now, cmd.obfuscated)) + ChatModel.shared.addTerminalItem(.resp(.now, resp)) } return resp } @@ -1009,7 +1009,7 @@ class ChatReceiver { func processReceivedMsg(_ res: ChatResponse) async { let m = ChatModel.shared await MainActor.run { - m.terminalItems.append(.resp(.now, res)) + m.addTerminalItem(.resp(.now, res)) logger.debug("processReceivedMsg: \(res.responseType)") switch res { case let .newContactConnection(user, connection): diff --git a/apps/ios/Shared/Views/TerminalView.swift b/apps/ios/Shared/Views/TerminalView.swift index 0274e6fca8..ee97f14bfe 100644 --- a/apps/ios/Shared/Views/TerminalView.swift +++ b/apps/ios/Shared/Views/TerminalView.swift @@ -110,8 +110,8 @@ struct TerminalView: View { if composeState.message.starts(with: "/sql") && (!prefPerformLA || !developerTools) { let resp = ChatResponse.chatCmdError(user: nil, chatError: ChatError.error(errorType: ChatErrorType.commandError(message: "Failed reading: empty"))) DispatchQueue.main.async { - ChatModel.shared.terminalItems.append(.cmd(.now, cmd)) - ChatModel.shared.terminalItems.append(.resp(.now, resp)) + ChatModel.shared.addTerminalItem(.cmd(.now, cmd)) + ChatModel.shared.addTerminalItem(.resp(.now, resp)) } } else { DispatchQueue.global().async {