From d8b67d9510123320c78bf15c26c8a0177848b0b1 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Sun, 28 Jun 2026 04:42:09 +0800
Subject: [PATCH] Document ASC authentication handoff for 8.1.6
---
src/Apptag/AppLibraryController.swift | 41 ++++++++++++++++++++++++++++++++++++-----
1 files changed, 36 insertions(+), 5 deletions(-)
diff --git a/src/Apptag/AppLibraryController.swift b/src/Apptag/AppLibraryController.swift
index d8ebbd3..1f45bf6 100644
--- a/src/Apptag/AppLibraryController.swift
+++ b/src/Apptag/AppLibraryController.swift
@@ -5,6 +5,8 @@
let quickSearchDocuments: [QuickSearchDocument]
let tagColors: [String: Int]
let tagOrder: [String]
+ let tagDefinitions: [String: TagDatabase.TagDef]
+ let containerAppOrder: [String: [String]]
}
struct AppLibraryRefreshResult {
@@ -27,6 +29,15 @@
}
enum AppLibraryController {
+ private static let snapshotCacheLock = NSLock()
+ private static var cachedSnapshot: AppLibrarySnapshot?
+
+ static func lastSnapshot() -> AppLibrarySnapshot? {
+ snapshotCacheLock.lock()
+ defer { snapshotCacheLock.unlock() }
+ return cachedSnapshot
+ }
+
static func refresh(useCache: Bool = true) -> AppLibraryRefreshResult {
let scannedApps = AppIndexer.scan(useCache: useCache)
let reconciledStore = TagEditor.reconcileScannedApps(scannedApps)
@@ -34,8 +45,10 @@
apps: scannedApps,
store: reconciledStore
)
+ let snapshot = makeSnapshot(scannedApps: scannedApps, store: smartStartResult.store)
+ updateLastSnapshot(snapshot)
return AppLibraryRefreshResult(
- snapshot: makeSnapshot(scannedApps: scannedApps, store: smartStartResult.store),
+ snapshot: snapshot,
smartStartResult: smartStartResult
)
}
@@ -45,8 +58,10 @@
scannedApps: [AppInfo]
) -> AppLibrarySmartStartApplyResult {
let result = SmartStartService.applySuggestion(draft)
+ let snapshot = makeSnapshot(scannedApps: scannedApps, store: result.store)
+ updateLastSnapshot(snapshot)
return AppLibrarySmartStartApplyResult(
- snapshot: makeSnapshot(scannedApps: scannedApps, store: result.store),
+ snapshot: snapshot,
summary: result.summary
)
}
@@ -54,8 +69,10 @@
static func applySystemInitialScheme() -> AppLibrarySystemSchemeApplyResult {
let scannedApps = AppIndexer.scan(useCache: false)
let result = SmartStartService.applySystemInitialScheme(apps: scannedApps)
+ let snapshot = makeSnapshot(scannedApps: scannedApps, store: result.store)
+ updateLastSnapshot(snapshot)
return AppLibrarySystemSchemeApplyResult(
- snapshot: makeSnapshot(scannedApps: scannedApps, store: result.store),
+ snapshot: snapshot,
summary: result.summary
)
}
@@ -63,9 +80,17 @@
static func resetToUncategorized() -> AppLibraryUncategorizedResetResult {
let scannedApps = AppIndexer.scan(useCache: false)
let store = TagDatabase.resetAppTagAssignmentsToUncategorized()
+ let snapshot = makeSnapshot(scannedApps: scannedApps, store: store)
+ updateLastSnapshot(snapshot)
return AppLibraryUncategorizedResetResult(
- snapshot: makeSnapshot(scannedApps: scannedApps, store: store)
+ snapshot: snapshot
)
+ }
+
+ private static func updateLastSnapshot(_ snapshot: AppLibrarySnapshot) {
+ snapshotCacheLock.lock()
+ cachedSnapshot = snapshot
+ snapshotCacheLock.unlock()
}
private static func makeSnapshot(
@@ -77,7 +102,13 @@
apps: apps,
quickSearchDocuments: QuickSearchEngine.makeDocuments(apps: apps, store: store),
tagColors: store.tags.mapValues { $0.color },
- tagOrder: TagEditor.orderedTagNames()
+ tagOrder: TagEditor.orderedTagNames(in: store),
+ tagDefinitions: store.tags,
+ containerAppOrder: TagDatabase.normalizedContainerAppOrder(
+ store.containerAppOrder,
+ tags: store.tags,
+ appTags: store.appTags
+ )
)
}
}
--
Gitblit v1.9.3