浏览代码

Limit AI history to the 30 most recent entries.

Keeps storage lean by trimming older generates, optimizations, and comments on save and at launch.

Co-authored-by: Cursor <cursoragent@cursor.com>
AhtashamShahzad1 1 月之前
父节点
当前提交
7ddeed274d
共有 1 个文件被更改,包括 12 次插入6 次删除
  1. 12 6
      Reddit App/Managers/AIHistoryManager.swift

+ 12 - 6
Reddit App/Managers/AIHistoryManager.swift

@@ -9,7 +9,7 @@ final class AIHistoryManager {
 
     private let defaults: UserDefaults
     private let storageKey = "reddora.ai.history.entries"
-    private let maxEntries = 100
+    private let maxEntries = 30
     private let persistQueue = DispatchQueue(label: "com.reddora.ai-history.persist", qos: .utility)
 
     init(defaults: UserDefaults = .standard) {
@@ -29,11 +29,7 @@ final class AIHistoryManager {
     func save(_ entry: AIHistoryEntry) {
         entries.removeAll { $0.id == entry.id }
         entries.insert(entry, at: 0)
-
-        if entries.count > maxEntries {
-            entries = Array(entries.prefix(maxEntries))
-        }
-
+        enforceLimit()
         persist()
     }
 
@@ -59,11 +55,21 @@ final class AIHistoryManager {
             let decoder = JSONDecoder()
             decoder.dateDecodingStrategy = .iso8601
             entries = try decoder.decode([AIHistoryEntry].self, from: data)
+            let hadExcessEntries = entries.count > maxEntries
+            enforceLimit()
+            if hadExcessEntries {
+                persist()
+            }
         } catch {
             entries = []
         }
     }
 
+    private func enforceLimit() {
+        guard entries.count > maxEntries else { return }
+        entries = Array(entries.prefix(maxEntries))
+    }
+
     private func persist() {
         let snapshot = entries
         let storageKey = storageKey