fixed sync issue

Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
Matt Bruce 2026-02-16 09:17:27 -06:00
parent ddc02c139f
commit 713a65f64b
4 changed files with 16 additions and 2 deletions

View File

@ -11,6 +11,7 @@
EAC04D322F298D9B007F87EA /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAC04D312F298D9B007F87EA /* WidgetKit.framework */; }; EAC04D322F298D9B007F87EA /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAC04D312F298D9B007F87EA /* WidgetKit.framework */; };
EAC04D342F298D9B007F87EA /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAC04D332F298D9B007F87EA /* SwiftUI.framework */; }; EAC04D342F298D9B007F87EA /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAC04D332F298D9B007F87EA /* SwiftUI.framework */; };
EAC04D412F298D9C007F87EA /* AndromidaWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = EAC04D2F2F298D9B007F87EA /* AndromidaWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; EAC04D412F298D9C007F87EA /* AndromidaWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = EAC04D2F2F298D9B007F87EA /* AndromidaWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
EAC04D522F26BD5B007F87EA /* CloudKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAC04D532F26BD5C007F87EA /* CloudKit.framework */; };
EAC04E2C2F2998B2007F87EA /* Bedrock in Frameworks */ = {isa = PBXBuildFile; productRef = EAC04E2B2F2998B2007F87EA /* Bedrock */; }; EAC04E2C2F2998B2007F87EA /* Bedrock in Frameworks */ = {isa = PBXBuildFile; productRef = EAC04E2B2F2998B2007F87EA /* Bedrock */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
@ -60,6 +61,7 @@
EAC04D312F298D9B007F87EA /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; }; EAC04D312F298D9B007F87EA /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; };
EAC04D332F298D9B007F87EA /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; }; EAC04D332F298D9B007F87EA /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; };
EAC04D4D2F298DD9007F87EA /* AndromidaWidgetExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = AndromidaWidgetExtension.entitlements; sourceTree = "<group>"; }; EAC04D4D2F298DD9007F87EA /* AndromidaWidgetExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = AndromidaWidgetExtension.entitlements; sourceTree = "<group>"; };
EAC04D532F26BD5C007F87EA /* CloudKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CloudKit.framework; path = System/Library/Frameworks/CloudKit.framework; sourceTree = SDKROOT; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
@ -128,6 +130,7 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
EAC04AEE2F26BD5B007F87EA /* Bedrock in Frameworks */, EAC04AEE2F26BD5B007F87EA /* Bedrock in Frameworks */,
EAC04D522F26BD5B007F87EA /* CloudKit.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -185,6 +188,7 @@
EAC04D302F298D9B007F87EA /* Frameworks */ = { EAC04D302F298D9B007F87EA /* Frameworks */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
EAC04D532F26BD5C007F87EA /* CloudKit.framework */,
EAC04D312F298D9B007F87EA /* WidgetKit.framework */, EAC04D312F298D9B007F87EA /* WidgetKit.framework */,
EAC04D332F298D9B007F87EA /* SwiftUI.framework */, EAC04D332F298D9B007F87EA /* SwiftUI.framework */,
); );
@ -569,7 +573,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.1; MARKETING_VERSION = 1.2;
PRODUCT_BUNDLE_IDENTIFIER = "$(APP_BUNDLE_IDENTIFIER)"; PRODUCT_BUNDLE_IDENTIFIER = "$(APP_BUNDLE_IDENTIFIER)";
PRODUCT_NAME = "$(PRODUCT_NAME)"; PRODUCT_NAME = "$(PRODUCT_NAME)";
STRING_CATALOG_GENERATE_SYMBOLS = YES; STRING_CATALOG_GENERATE_SYMBOLS = YES;
@ -606,7 +610,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.1; MARKETING_VERSION = 1.2;
PRODUCT_BUNDLE_IDENTIFIER = "$(APP_BUNDLE_IDENTIFIER)"; PRODUCT_BUNDLE_IDENTIFIER = "$(APP_BUNDLE_IDENTIFIER)";
PRODUCT_NAME = "$(PRODUCT_NAME)"; PRODUCT_NAME = "$(PRODUCT_NAME)";
STRING_CATALOG_GENERATE_SYMBOLS = YES; STRING_CATALOG_GENERATE_SYMBOLS = YES;

View File

@ -62,6 +62,7 @@ struct RitualsView: View {
startPoint: .topLeading, startPoint: .topLeading,
endPoint: .bottomTrailing endPoint: .bottomTrailing
)) ))
.refreshable { store.refresh() }
.navigationTitle(String(localized: "Rituals")) .navigationTitle(String(localized: "Rituals"))
.navigationBarTitleDisplayMode(horizontalSizeClass == .regular ? .inline : .large) .navigationBarTitleDisplayMode(horizontalSizeClass == .regular ? .inline : .large)
.toolbar { .toolbar {

View File

@ -131,6 +131,14 @@ struct RootView: View {
showOverlay: useDebugOverlay, showOverlay: useDebugOverlay,
minimumSeconds: useDebugOverlay ? debugForegroundRefreshMinimumSeconds : foregroundRefreshMinimumSeconds minimumSeconds: useDebugOverlay ? debugForegroundRefreshMinimumSeconds : foregroundRefreshMinimumSeconds
) )
// Delayed refreshes to catch CloudKit sync that completes after app activation.
// CloudKit fetch can take 510+ seconds; NSPersistentStoreRemoteChange is unreliable.
for delay in [5.0, 10.0] {
Task { @MainActor in
try? await Task.sleep(for: .seconds(delay))
store.refresh()
}
}
} else if newPhase == .background { } else if newPhase == .background {
// Prepare for next resume // Prepare for next resume
isResumingFromBackground = true isResumingFromBackground = true

View File

@ -78,6 +78,7 @@ struct TodayView: View {
startPoint: .topLeading, startPoint: .topLeading,
endPoint: .bottomTrailing endPoint: .bottomTrailing
)) ))
.refreshable { store.refresh() }
.navigationTitle(String(localized: "Today")) .navigationTitle(String(localized: "Today"))
.navigationBarTitleDisplayMode(horizontalSizeClass == .regular ? .inline : .large) .navigationBarTitleDisplayMode(horizontalSizeClass == .regular ? .inline : .large)
.sheet(isPresented: .init( .sheet(isPresented: .init(