From 39737c0150597e915f3677d844f0497316e11d09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Sat, 10 Jan 2026 00:27:41 +0800 Subject: [PATCH] Refresh core data size on foreground --- .../Views/Setting/CoreView.swift | 38 ++++++++++++++++++- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/ApplicationLibrary/Views/Setting/CoreView.swift b/ApplicationLibrary/Views/Setting/CoreView.swift index 1365e24..7c74386 100644 --- a/ApplicationLibrary/Views/Setting/CoreView.swift +++ b/ApplicationLibrary/Views/Setting/CoreView.swift @@ -10,6 +10,7 @@ import SwiftUI @MainActor public struct CoreView: View { + @Environment(\.scenePhase) private var scenePhase @EnvironmentObject private var environments: ExtensionEnvironments @State private var isLoading = true @State private var alert: AlertState? @@ -92,6 +93,22 @@ public struct CoreView: View { } .navigationTitle("Core") .alert($alert) + .onAppear { + guard !isLoading else { + return + } + Task { + await refreshWorkingDirectorySize() + } + } + .onChangeCompat(of: scenePhase) { newValue in + guard newValue == .active, !isLoading else { + return + } + Task { + await refreshWorkingDirectorySize() + } + } #if os(iOS) .navigationBarTitleDisplayMode(.inline) #endif @@ -120,10 +137,25 @@ public struct CoreView: View { private nonisolated func loadSettingsBackground() async { let disableDeprecatedWarnings = await SharedPreferences.disableDeprecatedWarnings.get() + await MainActor.run { + self.disableDeprecatedWarnings = disableDeprecatedWarnings + } + await refreshWorkingDirectorySize() + } + + private nonisolated func refreshWorkingDirectorySize() async { + guard !Variant.screenshotMode else { + return + } + #if os(macOS) + let helperUnavailable = Variant.useSystemExtension && HelperServiceManager.rootHelperStatus != .enabled + #endif let dataSize: String? #if os(macOS) if Variant.useSystemExtension { - if let size = try? RootHelperClient.shared.getWorkingDirectorySize() { + if helperUnavailable { + dataSize = nil + } else if let size = try? RootHelperClient.shared.getWorkingDirectorySize() { dataSize = LibboxFormatBytes(size) } else { dataSize = nil @@ -135,7 +167,9 @@ public struct CoreView: View { dataSize = (try? FilePath.workingDirectory.formattedSize()) ?? "Unknown" #endif await MainActor.run { - self.disableDeprecatedWarnings = disableDeprecatedWarnings + #if os(macOS) + self.helperUnavailable = helperUnavailable + #endif self.dataSize = dataSize } }